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