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