嵌入式開(kāi)發(fā)是軟硬結合的產(chǎn)品,需要對軟硬件都有所了解,所以學(xué)習起來(lái)比較費勁,學(xué)習成本也高,回報率是個(gè)很漫長(cháng)的過(guò)程。嵌入式要學(xué)的東西有很多,主要有5個(gè)方面。
語(yǔ)言:C
C是必須要學(xué)的,是*基本的,如果搞驅動(dòng)還要學(xué)匯編,需要對照datasheet知道如何實(shí)現硬件和軟件交互,如果涉及framework就要用到C++,因為硬件抽象層全是C++寫(xiě)的。
操作系統
嵌入式開(kāi)發(fā)的操作系統有很多:Linux、vxworks、mips、wince、QNX.....但目前來(lái)看Linux是主流,所以這個(gè)一定要掌握。Android系統及其移動(dòng)設備端的流行是Linux興起來(lái)的主要原因,Linux能做為Android系統的內核,一是因為它是開(kāi)源的,社區參與開(kāi)發(fā)人員多,二是Linux的性能確實(shí)不錯。
編譯系統
不同的公司對嵌入式開(kāi)發(fā)的編譯系統會(huì )有不同的需求,如果是odm做Android手機的廠(chǎng)商,都是用google自家的編譯系統,就是我們常說(shuō)的Android編譯三部曲(source,lunch和make),如果是其它公司的話(huà)可能會(huì )有基于shell或者python的自定義的編譯系統,其實(shí)底層也是調用Makefile。
技術(shù)棧
如果是linux內核開(kāi)發(fā),那么要掌握這些技術(shù)的:硬件架構,片上系統,boot,軟硬件裁剪和定制,內核編譯燒寫(xiě),驅動(dòng)開(kāi)發(fā),功耗分析,協(xié)議i2c、spi、uart還有usb等。如果是涉及上層,那么需要掌握的技術(shù):進(jìn)程間通信,多線(xiàn)程開(kāi)發(fā),信號量和鎖,圖形界面,網(wǎng)絡(luò )以及網(wǎng)絡(luò )協(xié)議等。