嵌入式系統(tǒng)開(kāi)發(fā)者需要掌握什么技術(shù)?
- 加入技術(shù)交流群
掃碼加入
和技術(shù)大咖面對(duì)面交流
海量資料庫(kù)查詢(xún)
說(shuō)實(shí)話(huà),問(wèn)題中嵌入式開(kāi)發(fā)這個(gè)話(huà)題有點(diǎn)龐大,畢竟它涵蓋的領(lǐng)域和范圍很寬泛。作為一個(gè)在嵌入式軟件開(kāi)發(fā)方面工作了十多年的老程序猿,這么多年過(guò)來(lái)也在通過(guò)不停的自學(xué)和各類(lèi)項(xiàng)目的歷練中,不斷積累自己的嵌入式軟件開(kāi)發(fā)的技能棧。
這里也借題主的問(wèn)題寶地,梳理一下嵌入式軟件開(kāi)發(fā)方向的技能棧,以期對(duì)題主和廣大嵌入式軟件愛(ài)好者有所幫助。畢竟是站在個(gè)人的經(jīng)歷角度分享,如有缺失敬請(qǐng)諒解。
作為嵌入式軟件開(kāi)發(fā),其實(shí)可以細(xì)分為:
嵌入式MCU軟件開(kāi)發(fā)工程師;
嵌入式Linux底層(BSP)軟件開(kāi)發(fā)工程師;
嵌入式Linux應(yīng)用開(kāi)發(fā)工程師;
嵌入式FPGA算法開(kāi)發(fā)工程師
我這么多年,從MCU開(kāi)發(fā)及Linux應(yīng)用開(kāi)發(fā)起步,在合伙創(chuàng)業(yè)過(guò)程中自學(xué)并通過(guò)項(xiàng)目實(shí)踐構(gòu)建了Linux底層驅(qū)動(dòng)技能棧,F(xiàn)PGA算法工程師僅僅因?yàn)榕c公司的相應(yīng)同事有過(guò)交際集,這里就不過(guò)多闡述FPGA算法工程師的技能棧,防止給大家?guī)芷恕?/p>
1. 嵌入式MCU軟件開(kāi)發(fā)工程師
【基本武器】
C語(yǔ)言編碼能力(數(shù)據(jù)結(jié)構(gòu),常用算法,指針和數(shù)組,結(jié)構(gòu)體和位域等)
MCU的理論知識(shí)(時(shí)鐘樹(shù),內(nèi)存,中斷,GPIO,功能外設(shè)(uart,iic,dma等)等)
MCU的編碼方式(寄存器/庫(kù)函數(shù)),編譯下載過(guò)程(根據(jù)題主選擇的MCU來(lái)學(xué)習(xí))
基本的電路連線(xiàn)圖能看懂(MCU的管腳如何連接到外界器件等)
實(shí)時(shí)操作系統(tǒng)編碼能力(ucos,freertos,liteos等等)
業(yè)務(wù)場(chǎng)景知識(shí)(根據(jù)題主嵌入式產(chǎn)品場(chǎng)景而定)
【升級(jí)武器】
軟件架構(gòu)設(shè)計(jì)能力
示波器,邏輯分析儀使用(調(diào)試通信器件使用)
讀取反匯編能力(定位Bug時(shí)候可能用到)
掌握通信協(xié)議(串口232通信,485通信,iic協(xié)議,spi協(xié)議,tcp/ip,can協(xié)議等等)
2. 嵌入式Linux應(yīng)用開(kāi)發(fā)工程師
【基本武器】
Linux C語(yǔ)言編碼能力(數(shù)據(jù)結(jié)構(gòu),常用算法,指針和數(shù)組,結(jié)構(gòu)體和位域等)
Linux常用功能API(多線(xiàn)程,多進(jìn)程,鎖類(lèi),進(jìn)程/線(xiàn)程通信機(jī)制相關(guān)等)
Linux Shell使用(基本的Linux操作能力)
Makefile/GDB調(diào)試
掌握通信協(xié)議(串口232通信,485通信,iic協(xié)議,spi協(xié)議,tcp/ip,can協(xié)議等等)
業(yè)務(wù)場(chǎng)景知識(shí)(根據(jù)題主嵌入式產(chǎn)品場(chǎng)景而定)(比如視頻,那么rtsp,h264編碼,視頻基礎(chǔ))
【升級(jí)武器】
軟件架構(gòu)設(shè)計(jì)能力
讀取反匯編能力(定位Bug時(shí)候可能用到)
Linxu操作系統(tǒng)理解(用戶(hù)態(tài),內(nèi)核態(tài),中斷機(jī)制,內(nèi)存機(jī)制等)
3. 嵌入式Linux底層(BSP)開(kāi)發(fā)工程師
【基本武器】
Linux C語(yǔ)言編碼能力(數(shù)據(jù)結(jié)構(gòu),常用算法,指針和數(shù)組,結(jié)構(gòu)體和位域等)
Linux裁剪,移植,編譯
Linxu操作系統(tǒng)理解(用戶(hù)態(tài),內(nèi)核態(tài),中斷機(jī)制,內(nèi)存機(jī)制等)
Linux Shell使用(Linux操作能力)
bootloader(uboot等)修改
基本調(diào)試用通信方法(uart,tcp/ip)
【升級(jí)武器】
Linux驅(qū)動(dòng)開(kāi)發(fā)能力
Linux內(nèi)核機(jī)制
等等
以上根據(jù)個(gè)人的工作經(jīng)歷中使用的技能??偨Y(jié),難免存在遺漏。畢竟每個(gè)嵌入式工程師從事的行業(yè)不同,技能棧也會(huì)有所不同。
以上建議,也僅供題主和廣大嵌入式軟件愛(ài)好者參考。
作者:snowdream
鏈接:https://www.zhihu.com/question/449050796/answer/1782550929
來(lái)源:知乎
著作權(quán)歸作者所有。商業(yè)轉(zhuǎn)載請(qǐng)聯(lián)系作者獲得授權(quán),非商業(yè)轉(zhuǎn)載請(qǐng)注明出處。
*博客內(nèi)容為網(wǎng)友個(gè)人發(fā)布,僅代表博主個(gè)人觀點(diǎn),如有侵權(quán)請(qǐng)聯(lián)系工作人員刪除。