按目前這個IT市場行情來給大家講解的話,隨著IT技術(shù)的高速發(fā)展和不斷的更新使得互聯(lián)網(wǎng)開始逐漸步入物聯(lián)網(wǎng)的科技時代。物聯(lián)網(wǎng)(物聯(lián)網(wǎng)的目的則是讓所有的物品都具有計算機(jī)的智能但并不以通用計算機(jī)的形式出現(xiàn),并把這些物品與網(wǎng)絡(luò)連接在一起),可以說嵌入式開發(fā)技術(shù)應(yīng)用為,廣泛的領(lǐng)域之一。
很多人以為搞嵌入式就是隨便找本書看看,借鑒書本上的內(nèi)容在電腦上編寫幾個程序就完事兒了,但事實并非如此,其實嵌入式的門檻還是比較高的,但只要我們找到合適的應(yīng)對方法,同樣可以很好地掌握所學(xué)知識和相關(guān)內(nèi)容。其實嵌入式只是一個籠統(tǒng)的概念,它是一門交叉性比較強(qiáng)的技術(shù),包含了電子、計算機(jī)、接口技術(shù)、軟件工程、系統(tǒng)工程等技術(shù)。現(xiàn)在的嵌入式技術(shù)主要分這么幾塊:arm是目前的嵌入式技術(shù), 另外還有單片機(jī)、DSP、CPLD和FPGA也屬于嵌入式領(lǐng)域的技術(shù)。
ARM嵌入式方面的工作可以分為:嵌入式硬件、嵌入式系統(tǒng)、嵌入式驅(qū)動、嵌入式軟件這四個工作類型。其中嵌入式硬件是和底層電路相關(guān)的,需要完成設(shè)計整個系統(tǒng)電路原理圖和pcb的layout工作,這個不僅僅是需要模電和數(shù)電基礎(chǔ),還需要有豐富的電路設(shè)計經(jīng)驗及pcb layout經(jīng)驗才行的,硬件又可以細(xì)分成兩個工作:硬件工程師和layout工程師,硬件工程師負(fù)責(zé)硬件芯片選型和硬件工程設(shè)計。layout工程師負(fù)責(zé)PCB板的繪制,一般都是四層以上的板子,而且好要考慮到高速串?dāng)_等問題。所以說嵌入式硬件沒有5-6年的經(jīng)驗是很難勝任的。
如果想做系統(tǒng)和驅(qū)動方面的工作,模、數(shù)電知識也都必須掌握一些,你得了解底層芯片的工作原理才能把驅(qū)動和系統(tǒng)跑起來,arm的匯編指令集是必須掌握的,因為初始化代碼都是用匯編寫的。另外還需要知道一些總線的知識,例如:I2C、SPI、SATA、串口、USB等,然后還要對Linux系統(tǒng)架構(gòu)比較熟悉,比如它內(nèi)核配置選項、內(nèi)核驅(qū)動結(jié)構(gòu)、啟動過程、還有它的文件系統(tǒng)配置等等,還有就是C語言功底扎實,因為Linux以及bootloader都是用C++寫的,你必須先能看懂才能去移植它。其實bootloader就是把a(bǔ)rm當(dāng)單片機(jī)去使用了,如果你有單片機(jī)開發(fā)的經(jīng)驗就更有利于你去理解和移植了。
如果是嵌入式軟件就比較簡單了,就完全和底層絕緣了,只需要會用Linux的api進(jìn)行編程就可以了,再掌握一些編程方法,如:多進(jìn)程、多線程,socket編程,及管道、信號量、共享內(nèi)存等同步機(jī)制,然后再掌握一下QT及數(shù)據(jù)庫的編程就基本上夠用了。你想往哪方面發(fā)展就學(xué)習(xí)對應(yīng)的技能就可以了,反正技多不壓身,多學(xué)點對自己以后的發(fā)展也有好處。