嵌入式開發(fā)是軟硬結合的產品,需要對軟硬件都有所了解,所以學習起來比較費勁,學習成本也高,回報率是個很漫長的過程。嵌入式要學的東西有很多,主要有5個方面。
語言:C
C是必須要學的,是*基本的,如果搞驅動還要學匯編,需要對照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)的內核,一是因為它是開源的,社區(qū)參與開發(fā)人員多,二是Linux的性能確實不錯。
編譯系統(tǒng)
不同的公司對嵌入式開發(fā)的編譯系統(tǒng)會有不同的需求,如果是odm做Android手機的廠商,都是用google自家的編譯系統(tǒng),就是我們常說的Android編譯三部曲(source,lunch和make),如果是其它公司的話可能會有基于shell或者python的自定義的編譯系統(tǒng),其實底層也是調用Makefile。
技術棧
如果是linux內核開發(fā),那么要掌握這些技術的:硬件架構,片上系統(tǒng),boot,軟硬件裁剪和定制,內核編譯燒寫,驅動開發(fā),功耗分析,協(xié)議i2c、spi、uart還有usb等。如果是涉及上層,那么需要掌握的技術:進程間通信,多線程開發(fā),信號量和鎖,圖形界面,網絡以及網絡協(xié)議等。