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