編譯一般用GCC的變種。嵌入式一般要學C語言(去看看我的C語言探索之旅, 以及C語言深度解剖,C程序設(shè)計語言這兩本書。也可以繼續(xù)深入看C語言專家編程等等)。
C++不一定會用到, 但也可以學一下。Linux是要學習的。因為交叉編譯經(jīng)常要用到Linux系統(tǒng),即使在Windows下也要用到Cygwin這類的。花點時間學一下匯編,對理解計算機的原理,特別是內(nèi)存,指針,二進制,十六進制都有很好幫助,不需要學很深。
嵌入式目前主流的處理器架構(gòu)是ARM(以前是ARM7,ARM9,ARM11,現(xiàn)在都Cortex系列了)。手機,平板,大部分開發(fā)板都是ARM的天下。所以需要學一下ARM架構(gòu),有個了解。一開始對ARM不需要太深入,視以后情況而定。ARM的集成開發(fā)環(huán)境有ADS(ARM Developer Suite), 是ARM處理器下主要的開發(fā)工具。
可以去買一塊便宜的開發(fā)板來開始學習(我覺得自學嵌入式比較花錢之處。也就幾百元就很好了),現(xiàn)在什么樹莓派有點貴,Arduino什么也可以。也可以買國內(nèi)一些廠商自己的開發(fā)板,不要買太差的就行。如果你買了開發(fā)板的話,可以去開發(fā)板對應(yīng)的論壇。
把英語學好,對編程很有裨益。所以千萬不要荒廢英語。還有, 數(shù)學也需要還過得去吧, 畢竟底層有很多位移, 與或非運算, 十六進制, 二進制, 十進制轉(zhuǎn)換, 等等。可以看的書很多,主要要選好書,看得有效率。
買紙質(zhì)版的, 當然我當年自學時, 因為是在法國, 買國內(nèi)的書不方便, 因此都是看的PDF。
深入理解計算機系統(tǒng)非常好,算是入門的。其他也有很多嵌入式書籍。慢慢來,先把基礎(chǔ)打好了。嵌入式這個領(lǐng)域太廣了,可以學的東西太多,現(xiàn)在技術(shù)又日新月異,把基礎(chǔ)打好學什么新知識都快。
假如你以后學更有難度的嵌入式實時(Real Time)系統(tǒng)(VxWorks,ecos,ucos,等等。驅(qū)動開發(fā)之類的,那就要C(和匯編)的功底比較強,要看更深入的書。不過暫時先入門嵌入式,這些更艱深的領(lǐng)域看興趣,不學也可以。