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