我認(rèn)為應(yīng)該學(xué)習(xí)一下51和STM32,但是僅限于學(xué)習(xí)它的原理并了解它的應(yīng)用,不用用來(lái)做太復(fù)雜的東西。利用51和STM32鞏固自己的C基礎(chǔ)、數(shù)據(jù)結(jié)構(gòu)、計(jì)算機(jī)組成原理等基礎(chǔ)。
階段一
《The C Programming Language》【美】Brian W. Kernighan David M. Rithie;
《UNIX 環(huán)境高級(jí)編程》(沒必要一口氣看完當(dāng)字典使也是不錯(cuò)的);
《UNIX 網(wǎng)絡(luò)編程》(同上);
以上兩本書重點(diǎn):進(jìn)程,線程,IPC以及基于socket的網(wǎng)絡(luò)編程章節(jié)是重點(diǎn),要掌握基于select/poll/epoll的高并發(fā)服務(wù)器模型;
看完這兩本之后寫一些小軟件玩玩,天氣預(yù)報(bào),計(jì)算器(逆波蘭),網(wǎng)絡(luò)聊天室之類的,此外看一些開源庫(kù),推薦libevent(對(duì)于初學(xué)者來(lái)說難度很大,不過這不是不看的理由),以此強(qiáng)化C語(yǔ)言,加深對(duì)網(wǎng)絡(luò)編程和線程相關(guān)概念的理解及應(yīng)用。
階段二
此時(shí),題主可以買個(gè)STM32的開發(fā)板玩玩(基于庫(kù)開發(fā)和寄存器開發(fā)都要會(huì)),一定要熟讀datasheet以及STM32參考手冊(cè),這期間一定要將常見的接口與總線搞明白了,如:串口,IIC,SPI,CAN,以太網(wǎng)接口,SD和SDIO等,然后題主可以用其做一些小玩意,如:體溫計(jì),平衡車,小四軸等等;
一定要多動(dòng)手,多練,多動(dòng)手,多練,多讀芯片datasheet,別做伸手黨……
然后嵌一個(gè)uCOS或者FreeRTOS玩玩,了解一下這些輕量級(jí)操作系統(tǒng)的原理,網(wǎng)上有一些電子書籍,題主可以自行查找,推薦邵貝貝的書。
階段三
這一階段題主需要買一個(gè)ARM開發(fā)板了,可以選擇ARM FPGA或者ARM DSP,題主可以自行上網(wǎng)了解一下具體買哪一個(gè)
這時(shí)需要的書籍如下:
《鳥哥的linux私房菜》(linux平臺(tái)下的各種命令一定要熟爛于心啊);
《Linux與Unix Shell編程指南》(此書已絕版可以買二手,影印或者下電子版);
《ARM體系結(jié)構(gòu)與編程》(杜春雷著,一定要配合UBOOT看);
《Linux設(shè)備驅(qū)動(dòng)開發(fā)》(LDD);
《Linux設(shè)備驅(qū)動(dòng)開發(fā)詳解》(宋寶華);
《深入理解Linux內(nèi)核》;
《Linux內(nèi)核源代碼情景分析》(毛德操著);
還有一些只要是編程就需要掌握的理論基礎(chǔ):
《算法導(dǎo)論》;
《數(shù)據(jù)結(jié)構(gòu)與算法分析》;
《深入理解計(jì)算機(jī)系統(tǒng)》;
《操作系統(tǒng):精髓與設(shè)計(jì)原理》;
《編譯原理》;
為了扎實(shí)C語(yǔ)言還有如下不錯(cuò)的書:
《C和指針》;
《高質(zhì)量C /C編程