這周我們帶著大家來了解一下,如何從一個菜鳥成為個合格的嵌入式軟件工程師。達(dá)內(nèi)廣州嵌入式培訓(xùn)老師給大家總結(jié)了以下6條經(jīng)驗。
1、打好嵌入式軟件編程的基礎(chǔ)
這一階段重點(diǎn)打好嵌入式軟件編程的基礎(chǔ),包括常用的數(shù)據(jù)結(jié)構(gòu),特別是C語言中對指針的理解和應(yīng)用。這一階段的主要目的是學(xué)習(xí)編程語言、開發(fā)環(huán)境、和培養(yǎng)自己的編程思維,為進(jìn)一步學(xué)習(xí)嵌入式開發(fā)打下良好的基礎(chǔ)。
2、學(xué)習(xí)ARM體系結(jié)構(gòu)編程
這一階段才是真正的嵌入式編程,首先我們要選擇一款嵌入式CPU和一款嵌入式開發(fā)平臺,目前ARM 嵌入式CPU應(yīng)用廣泛,這一階段重點(diǎn)是學(xué)習(xí)嵌入式CPU的裸機(jī)編程:
* 熟悉中斷
* 定時器
* 串口
* NAND FLASH
* 網(wǎng)絡(luò)控制器
* LCD屏、觸摸屏
* I2C 設(shè)備
* SPI 設(shè)備
等常用嵌入式外圍設(shè)備的硬件工作原理,以及如何使用C語言來編程、控制這些硬件。這一階段除了要學(xué)習(xí)對硬件編程之外,還需要學(xué)習(xí)嵌入式硬件的知識,但是對于嵌入式軟件工程師來講,重點(diǎn)是學(xué)習(xí)硬件的工作原理,在掌握硬件工作原理的基礎(chǔ)上,對硬件進(jìn)行編程控制。這和硬件工程師學(xué)習(xí)的側(cè)重點(diǎn)有所不同。
這一階段對應(yīng)的學(xué)校的課程主要包括模擬電路、數(shù)字電路、微機(jī)原理和單片機(jī)。這一階段重點(diǎn)是要看CPU的芯片手冊,大部分的參考書也是對芯片手冊的翻譯。
3、學(xué)習(xí)嵌入式系統(tǒng)的構(gòu)建
這一階段主要學(xué)習(xí)帶有操作系統(tǒng)的嵌入式系統(tǒng)的構(gòu)建,包括系統(tǒng)的啟動流程:
* Bootloader的工作流程
* UBOOT的編譯
* 裁剪與移植,嵌入式Linux內(nèi)核的裁剪、移植與編譯
* 嵌入式根文件系統(tǒng)的定制
* BootLoader、內(nèi)核和根文件系統(tǒng)的燒寫
這一階段的主要目的是掌握帶有操作系統(tǒng)的嵌入式系統(tǒng)的構(gòu)建和燒寫過程,以及對嵌入式系統(tǒng)軟件的總體構(gòu)成有個整體認(rèn)識,為我們接下來學(xué)習(xí)嵌入式應(yīng)用和驅(qū)動開發(fā)打下堅實(shí)的基礎(chǔ)。
4、學(xué)習(xí)嵌入式Linux應(yīng)用程序開發(fā)
這一階段主要學(xué)習(xí)上層的嵌入式Linux應(yīng)用程序開發(fā),包括:
* 基于Linux多進(jìn)程
* 多線程網(wǎng)絡(luò)
* 文件與目錄
掌握嵌入式Linux環(huán)境下應(yīng)用程序開發(fā)技術(shù)。
5、學(xué)習(xí)嵌入式Linux驅(qū)動程序開發(fā)
這一階段主要學(xué)習(xí)底層嵌入式Linux設(shè)備驅(qū)動程序開發(fā)設(shè)計,包括:
* 常用的字符設(shè)備驅(qū)動
* 塊設(shè)備驅(qū)動
* LCD設(shè)備驅(qū)動
* 觸摸屏設(shè)備驅(qū)動以及驅(qū)動程序開發(fā)中的核心技術(shù)。
6、完成一個綜合項目
嵌入式技術(shù)關(guān)鍵在于理論和實(shí)踐的結(jié)合,嵌入式軟件工程師要能夠?qū)W以致用,完成了以上的所有階段的知識點(diǎn)學(xué)習(xí)后,到底有沒有學(xué)會,會不會用,能不能應(yīng)用所學(xué)知識來解決實(shí)際開發(fā)中的問題,我們需要來完成一個綜合的嵌入式實(shí)訓(xùn)項目,例如: 基于嵌入式Linux平臺實(shí)現(xiàn)的飛行器、 基于嵌入式Linux平臺實(shí)現(xiàn)的智能機(jī)器人等,這些項目都綜合應(yīng)用了嵌入式開發(fā)當(dāng)中的應(yīng)用,驅(qū)動和QT開發(fā)技術(shù)。
想要成為一個的嵌入式軟件工程師并非一早一夕的事,也是通過長期的學(xué)習(xí)積累得。其實(shí),目前這種的嵌入式開發(fā)工程師非常少,這也是很多企業(yè)重金尋求的人才。達(dá)內(nèi)廣州嵌入式培訓(xùn)老師告誡大家,面對相對復(fù)雜的嵌入式系統(tǒng)的研發(fā)過程,在學(xué)習(xí)的過程中需要更多關(guān)注完整的知識體系結(jié)構(gòu)的建立。特別是對于原理性知識的掌握程度則相對普通的軟件開發(fā)人員提出了更高的要求。因此在學(xué)習(xí)的過程中,要知其然,更要知其所以然。