10年老兵!从大学毕业生到嵌入式系统工程师的修炼之道……
點擊上方“大魚機器人”,選擇“置頂/星標公眾號”
福利干貨,第一時間送達!
一名從事10多年嵌入式行業的老兵,用多年來從事這個行業的經驗及獨特視角,為想從事嵌入式系統方向的大學畢業生、以及剛從事這個行業、處在迷茫期的小伙伴們指點迷津。
大神可跳過。
什么是嵌入式產品系統?
嵌入式系統是一種用來控制特定的設備、實現特定功能,以MCU或微處理器、片上系統(SOC)作為核心,軟硬件可裁剪,適應應用系統對功能、可靠性、成本、體積、功耗等嚴格要求的專用計算機系統。
通常,嵌入式系統是一個控制程序存儲在ROM中的嵌入式處理器控制板。
嵌入式系統的核心是由一個或幾個預先編程好以用來執行少數幾項任務的微處理器或者MCU組成。與通用計算機能夠讓用戶自由安裝軟件不同,嵌入式系統上的軟件通過編程器燒寫到ROM或Flash中,通常是暫時不變的;所以經常把嵌入式系統中的軟件稱為“固件”。
我們身邊常見的手表、洗衣機、照相機、微波爐、汽車等都使用了嵌入式系統,有的比較簡單由單個前后臺程序實現整個控制邏輯,功能比較復雜的還包含嵌入式操作系統。
嵌入式系統開發做些什么
1、硬件開發。分析產品需求,選擇適合系統需求的MCU或片上系統(SOC)以及外圍的基本元器件(電阻、電容、電感),利用CAD(計算機輔助設計)軟件設計電路原理圖,PCB圖,當然硬件設計還包括芯片設計,FPGA,CPLD的應用。
2、嵌入式軟件開發。在硬件電路板完成設計后,根據嵌入式系統要實現的功能,利用集成開發環境,用匯編、C/C++等高級語言,編寫程序去實現硬件功能,最終實現整個嵌入式系統的特定功能。
3、軟硬件連調、測試,BUG排除,直到產品穩定的進行批量生產。
4、做好軟件的版本管理,根據功能需求不斷升級和更新軟件;
嵌入式系統的應用領域
工業控制、交通管理、信息家電、智能家居、POS網絡、環境工程、國防航空、物聯網。可以說,嵌入式系統在我們的時代無處不在。
嵌入式系統開發必備的知識體系
數字電路
計算機技術,計算機的硬件架構
MCU微處理器架構
大規模集成電路(芯片)應用
熟練掌握一門高級編程語言,C或C++在嵌入式系統中應 用比較廣泛,個人認為,C語言是萬言之父,嵌入式系統開發的第一編程語言;
數據結構和算法、操作系統、軟件工程、網絡、數據庫方面的知識
常用數字電路通訊接口,I2C、SPI、UART、USB。
通信協議及編程技術:TCP/IP協議、802.11,Bluetooth, GPRS、GSM、CDMA等。
建議在開發中使用linux系統,可以加深對操作系統的理解,熟悉并理解一種嵌入多實時操作系統,如Vxworks,RTX,uCos、嵌入式linux。
離散數學
熟練掌握一種電路設計軟件,如Altium designer,Power PCB等。
良好的英文閱讀能力
嵌入式系統開發流程
嵌入式系統軟件開發常用平臺及工具:
KEIL C51
KEIL MDK
IAR
51版,STM8版,STM32版,AVR版
嵌入式linux
Arduino IDE
目前我們在使用的主流開發平臺是Arduino,Arduino開發平臺有以下優勢:
?無數全球開源的庫,使用C或C++均可以進行開發,全世界有無數工程師在為它貢獻開源代碼。
?入門非常簡單容易,既適合業余的電子愛好者、創客、軟件工程師,也適合專業的電子嵌入式產品設計。
?支持AVR的多款單片機,STM32 、STM8的多款主流微處理器。
?強大的資源庫讓你迅速實現你的產品原型。
嵌入式系統設計的職業規劃
職業規劃一:硬件工程師/電子工程師
?初級階段(相關專業3個月到半年)
熟悉電路原理圖,熟悉電子元器件種類,技術參數,封裝等。
能根據電路原理圖進行PCB布局、排板;
具備一定的電路板焊接技能;
?中級階段(相關專業1年左右)
能根據硬件設計原理框圖,元器件選型清單,在項目負責人的指導下繪制電路原理圖,繪制庫里沒有的元器件封裝,并能根據產品結構安裝要求設計PCB各種外形,完成元器件布局,布線,知道完成整塊PCB板的設計,并能對接PCB生產商,完成PCB板的制作生產。
元器件選型采購
PCB樣板焊接,具備一定的焊接技能,焊接的過程中可以發現PCB設計中的問題和不太完美的地方,下次排板的時候進行改進。
電路板調試焊接可靠,板上的所有電源測試點正常,對接交付嵌入式軟件工程師。
?高級階段
能根據項目或產品需求編寫整體設計方案,設計硬件系統框圖,完成實現電路功能所需的元器件選型,電路性能設計計算,可靠性分析與預計,產品成本核算,配合結構工程師進行產品的外殼設計,產品測試與檢驗標準制定,指導完成產品生產工藝制定。
職業規劃二:嵌入式軟件工程師
?初級階段(相關專業3個月到半年)
熟悉C語言的語法,數據結構、指針、隊列、鏈表的這些C語言的基礎概念要有一個比較清晰的認識;
能熟練使用一種基礎的嵌入式開發平臺,如KEIL、IAR、Arduino等,對怎么建立一個項目工程、編繹、鏈接、生成目標代碼、如何把代碼燒寫到嵌入式硬件的MCU中,對這個流程要能熟練操作。
需要熟悉一種處理器、MCU的硬件組成,架構、IO及外設的應用、系統時鐘、運行頻率、存儲代碼空間、堆、棧這些和編程相關的概念和知識一定要搞清楚。
具備讀和理解他人代碼的能力,能根據軟件流程圖和功能需求理清代碼的邏輯,要此基礎上要據功能變更對代碼進行一些局部修改,并完成調試。
?中級階段(1到2年)
具備獨立編碼的能力,能根據軟件設計說明書、軟件開發需求獨立進行一個產品或項目的程序框架構思、代碼編寫、程序調試、軟硬件連調連測、Bug排除、功能交付。
能看懂嵌入式產品或項目的電路原理圖、清楚軟硬件在一個嵌入式產品的角色,用軟件去控制硬件、實現產品的整體功能;
能協助硬件工程師、產品經理分析、排除和解決產品設計中存在的問題,實現軟硬件設計協同;
要能熟練掌握嵌入式硬件系統種常用的各種通信總線的編程和應用,如I2C、SPI、USB、RS485、Modbus、CAN、以太網等。
至少熟悉一種嵌入式操作系統的架構、能基于操作系統進行一些較為復雜的項目編程,能較為清晰的理解嵌入式操作系統基于任務、進程通訊的設計框架;并能在嵌入式操作系統下移植一些底層硬件的驅動程序。
建立軟件版本管理意識,能熟練利用一些工具進行代碼版本管理;
具備一定的文檔編寫能力,如軟件流程圖、軟件測試說明書、軟件使用說明書等。
?高級階段(5年左右)
到這個階段,你已經是一名合格的嵌入式軟件工程師了,接下來的工作除了不斷提升軟件代碼編寫的能力、效率,更重要是要提升你用軟件去解決實際問題的能力了。
能根據產品、項目的需求進行較為復雜項目的軟件架構設計、分析需求、整理和編寫軟件開發需求說明、編寫軟件設計功能說明書、能清晰的劃分軟件的各件功能模塊,組織團隊進行各個功能模塊的協同設計;
具備多人遵循共同的規則和接口協同編碼,并具備多人代碼的整合能力、代碼集成、BUG排除、系統連調能力;
能根據產品需求制定與其它硬件或軟件系統的通信協議、開發文檔,并組識進行通信協議的編程實現、通信連調、具備與其它部門或公司的技術合作、協調、溝通能力。
具備專業、行業行業的英文技術文檔、論文、技術手冊的熟練、快速閱讀能力。
具備一定的互聯網、物聯網知識、對各種網絡通訊技術有豐富的知識積累,并能熟練運用 ;如TCP/IP、WIFI、GSM、4G、LORA等等,具備連網類產品和項目的開發能力;
熟悉一種服務器或上位計算機的軟件設計架構,能理解和掌握面向對象編程,理解嵌入式軟件編程和通用計算機軟件編程的區別和共同點,具備一定能通用計算機軟件設計能力,并能獨立實現計算機/服務器軟件和嵌入式系統軟件的通信、協同設計。
能熟練使用linux開源操作系統,熟悉這種開源操作系統的架構、常用命令操作、程序運行機制,并能基于linux操作系統進行軟件開發。
職業規劃三:系統架構師
達到這個階段,就如它的名字一樣,架構,主要的工作就不是來進行具體的軟件編碼了,當然要達到這個水平,也是從編碼開始、了解細節、才能進行架構設計,因為編碼出現錯誤、影響的不過是一段代碼的執行BUG。
但如果架構也出現設計上錯誤或不合理,可能直接關系到一個產品或項目整體功能、性能、甚至是一個產品或項目研發的成敗。所以,一個好的系統架構師,一定是一名優秀的程序員。
到這個階段,如果你還在一個組織里,你已經不太可能是孤軍奮戰了;在大企業里,你可能是一個技術主管,在小企業里,你應該是技術總監那一類的了,所以這個階段你除了擁用很好的技術功底,還要具備管理團隊的能力了;
具備軟硬件協同進行總體設計的能力、具備充分利用技術來解決問題的能力;
你需要站在公司的層面,對接業務、對接市場和客戶,根據市場和需求來設計產品或項目的實現技術路線、總體技術方案;
你需要站要整體的角度考慮產品項目的成本、按成本要求進行技術路線優化,充分利用好人資源、提高人效、降低研發成本,為公司創造效益;
你需要全方位擴展你的知識面,對產品中所應用到的技術都要有充分的風險評估能力,要能解決團隊在研發過程中出現的各種技術難題。
-END-
|?整理文章為傳播相關技術,版權歸原作者所有?|
|?如有侵權,請聯系刪除?|
往期好文合集
為什么自己設計的嵌入式系統不如工業級產品穩定?
干貨:嵌入式系統設計開發大全!(萬字總結)
嵌入式行業真的沒有前途嗎?
??最 后??
?若覺得文章不錯,轉發分享,也是我們繼續更新的動力。
5T資源大放送!包括但不限于:C/C++,Linux,Python,Java,PHP,人工智能,PCB、FPGA、DSP、labview、單片機、等等!
在公眾號內回復「更多資源」,即可免費獲取,期待你的關注~
總結
以上是生活随笔為你收集整理的10年老兵!从大学毕业生到嵌入式系统工程师的修炼之道……的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 小米灯遥控器设置方法(小米官方售后服务)
- 下一篇: 卡车模拟器2018怎么进