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