我們所處于一個(gè)瞬息萬(wàn)變的時(shí)代,嵌入式技術(shù)毫無(wú)疑問(wèn)也得緊跟技術(shù)發(fā)展,初涉嵌入式開(kāi)發(fā),相信很多人會(huì)被企業(yè)門檻攔在門外。那么我們?cè)搶W(xué)習(xí)嵌入式開(kāi)發(fā)的哪些內(nèi)容呢?進(jìn)行嵌入式培訓(xùn)是否有用?
新人要學(xué)習(xí)嵌入式開(kāi)發(fā),步C語(yǔ)言,有很多人自認(rèn)為自己C語(yǔ)言很厲害,但是實(shí)際上一個(gè)從事嵌入式開(kāi)發(fā)的老人,至少需要3-5年你才敢對(duì)C語(yǔ)言說(shuō)精通,特別涉及到的常用的指針、數(shù)組、數(shù)據(jù)類型、運(yùn)算符與表達(dá)式、控制語(yǔ)句時(shí),需要具備很大的知識(shí)儲(chǔ)備。這些是學(xué)習(xí)嵌入式基礎(chǔ)的知識(shí)。
第二步,有了這些代碼的基礎(chǔ)你才能能根據(jù)需求寫程序,也就是常說(shuō)的應(yīng)用層,應(yīng)用層是相對(duì)簡(jiǎn)單的。要有理解和編碼調(diào)試的能力,如系統(tǒng)編程、標(biāo)準(zhǔn)的I/O,文件I/O,庫(kù)的制作等等。一般而言這種應(yīng)用層開(kāi)發(fā)有1-2個(gè)月的嵌入式培訓(xùn)時(shí)間都能學(xué)會(huì)。剩下的就是大量的編碼來(lái)提升自己的經(jīng)驗(yàn)。
第三步,更的內(nèi)容也是難的內(nèi)容,前兩步更多是讓你會(huì)根據(jù)需求編碼,但是如何能讓你的程序能在硬件平臺(tái)上運(yùn)行,這才是真正的難題。所以每當(dāng)再進(jìn)一步的話,我們會(huì)發(fā)現(xiàn)我們什么有很多的東西都運(yùn)行的是Linux系統(tǒng),可是他們和我的PC運(yùn)行的Linux有什么區(qū)別呢,為什么我電腦要用風(fēng)扇而手機(jī)不用風(fēng)扇呢,我們打開(kāi)網(wǎng)頁(yè)查找手機(jī)的詳細(xì)參數(shù)的時(shí)候,會(huì)看到Cortex-A15 、四核 、ARM等等字眼,什么是ARM,什么是Cortex-A15,這需要進(jìn)一步的了解。
了解完ARM之后,就需要利用開(kāi)發(fā)板了。這時(shí)操作系統(tǒng)的移植又成了一個(gè)比較重要的內(nèi)容了,什么是bootloader,什么是kernel,什么是rootfs等等……
花了很長(zhǎng)時(shí)間系統(tǒng)做好了,發(fā)現(xiàn)板子上很多的什么不能用,怎么辦呢?這時(shí)我們需要寫一些驅(qū)動(dòng)來(lái)驅(qū)動(dòng)這些設(shè)備,這時(shí)我們需要知道,什么是字符設(shè)備驅(qū)動(dòng)、塊設(shè)備驅(qū)動(dòng)、網(wǎng)絡(luò)設(shè)備驅(qū)動(dòng),為了更好的寫驅(qū)動(dòng)我們需要了解更多的硬件相關(guān)的東西,我們需要看懂芯片手冊(cè),我們需要看懂原理圖,只有我們懂我們的設(shè)備,才能更好的驅(qū)動(dòng)它。
對(duì)于學(xué)習(xí)嵌入式我比較不贊成自學(xué),他不同于一般的應(yīng)用層開(kāi)發(fā)。到嵌入式培訓(xùn)機(jī)構(gòu)學(xué)習(xí)雖然花了一部分錢,從時(shí)間成本和效率上來(lái)講,無(wú)疑還是比較值得的。