第一篇:學(xué)習(xí)嵌入式書籍推薦
十年研發(fā)經(jīng)驗(yàn)工程師的嵌入式學(xué)習(xí)書籍大推薦
從事嵌入式研發(fā)行業(yè)十年,認(rèn)為學(xué)習(xí)就是要不斷的吸納知識(shí),在研發(fā)過(guò)程中,經(jīng)常會(huì)遇到一些問(wèn)題,這種發(fā)現(xiàn)問(wèn)題并解決問(wèn)題的過(guò)程就是進(jìn)步。為什么選擇學(xué)習(xí)嵌入式?
嵌入式系統(tǒng)無(wú)疑是當(dāng)前最熱門最有發(fā)展前途的IT應(yīng)用領(lǐng)域之一,同時(shí)也是當(dāng)今IT領(lǐng)域僅存的幾個(gè)金領(lǐng)職位之一。當(dāng)前的中國(guó)IT人才面臨嚴(yán)重的“后繼乏人”,而且這種缺口由于培訓(xùn)缺乏、教育模式等原因造成的,而缺口最大的,就是高級(jí)IT人才。如果你從事的IT培訓(xùn)不專業(yè),面對(duì)競(jìng)爭(zhēng)越來(lái)越激烈的職場(chǎng),基本找不到 工作。據(jù)專家預(yù)測(cè),嵌入式每年人才缺口在30萬(wàn)左右。
嵌入式行業(yè)平均薪資分布
工欲善其事,必先利其器,除了推薦的書籍外,也推薦一下我用的開(kāi)發(fā)板,我學(xué)習(xí)用的是飛凌的OK6410,感覺(jué)算是入門不錯(cuò)的板子,剛剛看到他們官方微博貌似A8的210和ARM9的2416準(zhǔn)備促銷呢,有50元的京東購(gòu)物卡送,想入手的可以關(guān)注下。
ARM+Linux嵌入式底層內(nèi)核驅(qū)動(dòng)方向?qū)W習(xí)總體路線圖
附上ARM學(xué)習(xí)路徑圖,希望對(duì)學(xué)習(xí)者能有所啟發(fā)。
基礎(chǔ)學(xué)習(xí)Ⅰ---Linux入門
目前嵌入式主要開(kāi)發(fā)環(huán)境有 Linux、Wince等;Linux因其開(kāi)源、開(kāi)發(fā)操作便利而被廣泛采用。而Linux操作系統(tǒng)也只是一個(gè)簡(jiǎn)單的操作系統(tǒng),簡(jiǎn)單的使用對(duì)于嵌入式開(kāi)發(fā)人 員來(lái)說(shuō)價(jià)值并不很高,真正有價(jià)值的是掌握Linux的基本服務(wù)和Linux的設(shè)計(jì)理念、思想,這對(duì)于嵌入式開(kāi)發(fā)人員的長(zhǎng)期發(fā)展是很極其重要的。Linux 系統(tǒng)有很多發(fā)行版,RedHat、Ubuntu、Fedora等。作為嵌入式開(kāi)發(fā)人員,我們沒(méi)有必要把精力放到使用哪個(gè)Linux發(fā)行版上,而是盡快把 Linux系統(tǒng)盡快安裝好。如果打算堅(jiān)持長(zhǎng)期學(xué)習(xí),那么建議您把自己的電腦做成雙系統(tǒng),而不要在虛擬機(jī)上安裝。Ubuntu系統(tǒng)下載地址:http://004km.cn/ A)經(jīng)典書籍推薦:
B)經(jīng)典學(xué)習(xí)視頻推薦:Linux操作系統(tǒng)入門 基礎(chǔ)學(xué)習(xí)Ⅱ---C語(yǔ)言
C語(yǔ)言是嵌入式開(kāi)發(fā)必備的基礎(chǔ)知識(shí)。在Linux下從事C語(yǔ)言的開(kāi)發(fā),你會(huì)覺(jué)得更為順暢、更為自然,因?yàn)镃語(yǔ)言是因unix的出現(xiàn)而誕生的,Linux內(nèi) 核幾乎完全是由C語(yǔ)言編寫完成的。學(xué)習(xí)C語(yǔ)言,如果不會(huì)用指針,那么就稱不上會(huì)C語(yǔ)言。做嵌入式開(kāi)發(fā)指針更顯得尤為重要,所以做嵌入式開(kāi)發(fā)除了掌握位操 作、限定詞等,對(duì)指針的掌握是不可或缺的。而且要掌握多級(jí)指針、函數(shù)指針等等。涉及到指針,那么就會(huì)講到內(nèi)存分配。在大學(xué)中,學(xué)習(xí)C語(yǔ)言一般的學(xué)習(xí)很少講 到內(nèi)存分配,但是如果期望從事嵌入式開(kāi)發(fā),那么就必須懂得C語(yǔ)言是怎么做內(nèi)存分配管理的。指針之外,還要學(xué)習(xí)模塊化編譯處理、指針與數(shù)組、gcc、Makefile、GDB、遞歸、結(jié)構(gòu)體、宏定義使用等。C語(yǔ)言是整棟嵌入式大廈的基礎(chǔ),所以在學(xué)習(xí)嵌入式時(shí),必須把C語(yǔ)言重視起來(lái),多敲代碼,多練。一名優(yōu)秀的程序員必定是通過(guò)“體力勞動(dòng)”再轉(zhuǎn)向“腦力勞動(dòng)的”,這也是為什么我們要有“寫不出代碼=0”思想的原因所在。
如 果說(shuō)C語(yǔ)言相當(dāng)于文字,那么數(shù)據(jù)結(jié)構(gòu)就相當(dāng)于在造句、寫文章。代碼質(zhì)量有一部分取決于對(duì)數(shù)據(jù)結(jié)構(gòu)的掌握程度。在數(shù)據(jù)結(jié)構(gòu)部分我們要把鏈表、樹(shù)、排序作 為學(xué)習(xí)重點(diǎn)。而且我們也可以查看一些比較常見(jiàn)的函數(shù)(如strcopy、strcat、printf等)在內(nèi)核中是如何實(shí)現(xiàn)的,以及編寫代碼模擬堆棧,這 不僅有利于編寫代碼質(zhì)量的提高,而且還可以初步了解Linux內(nèi)核精髓,為今后工作打下堅(jiān)實(shí)的基礎(chǔ)。
C++、QT在嵌入式開(kāi)發(fā)領(lǐng)域,是用來(lái)開(kāi)發(fā)圖形界面的,希望從事上層應(yīng)用開(kāi)發(fā)及圖形界面,那么在C++、QT方面需要比較深入的學(xué)習(xí)。A)經(jīng)典書籍推薦:
B)經(jīng)典學(xué)習(xí)視頻推薦:C語(yǔ)言入門 C)經(jīng)典學(xué)習(xí)案例:
1、學(xué)員成績(jī)管理系統(tǒng)
2、計(jì)算器
3、電子詞典
4、文件壓縮器 基礎(chǔ)進(jìn)階---Linux應(yīng)用程序設(shè)計(jì)
Linux的思想源于Unix。Linux繼承了Unix的優(yōu)點(diǎn),但 是沒(méi)有用UNIX的代碼,所有程序都是重新編寫的,而且Linux與Unix的源碼級(jí)兼容。Linux是類Unix操作系統(tǒng)。Linux 不僅符合 POSIX 標(biāo)準(zhǔn),而且還包括其它 UNIX 標(biāo)準(zhǔn)的多種特性,例如,UNIX 的 System V 接口文檔(System V Interface Document,SVID)和伯克利軟件發(fā)布(Berkeley Software Distribution,BSD)版本。Linux 采用了折衷的策略,包含了 UNIX 幾個(gè)典型特性當(dāng)中最實(shí)用的一些功能: Linux 采用了 SVR4 的進(jìn)程間通信(IPC)機(jī)制:共享內(nèi)存、消息隊(duì)列、信號(hào)。Linux 支持 BSD Socket 網(wǎng)絡(luò)編程接口。
許多 Linux 發(fā)行版采用 SysV init 機(jī)制,支持運(yùn)行級(jí)別。
此階段的學(xué)習(xí)是從事嵌入式上層應(yīng)用開(kāi)發(fā)以及底層開(kāi)發(fā)人員的必修課程。進(jìn)程、線程、信號(hào)、文件鎖、socket是這部分內(nèi)容的重點(diǎn)。要把這些內(nèi)容學(xué)的透徹非 要下些苦功夫不可。而且函數(shù)是系統(tǒng)提供給我們的,難免要對(duì)計(jì)算機(jī)系統(tǒng)深入理解一番。TCP/IP協(xié)議也是要涉及到的。有問(wèn)題建議用Google搜索及登陸 chinaunix論壇。通過(guò)這個(gè)階段的學(xué)習(xí),我們就可以初步實(shí)現(xiàn)一些應(yīng)用程序的開(kāi)發(fā)了,如做自己的shell命令解析器、簡(jiǎn)單的聊天軟件、視頻多播等。
A)經(jīng)典書籍推薦:
B)經(jīng)典學(xué)習(xí)視頻推薦:Linux環(huán)境高級(jí)編程 C)經(jīng)典學(xué)習(xí)案例:
1、串口監(jiān)聽(tīng)程序
2、圖片瀏覽器
3、MP3播放器
4、聊天程序
5、ftp程序
6、音頻廣播程序
7、ping的實(shí)現(xiàn)
8、DDos攻擊程序
9、ARP攻擊程序 嵌入式入門---ARM體系結(jié)構(gòu)
從這部分開(kāi)始,我們將真正進(jìn)入嵌入式開(kāi)發(fā)學(xué)習(xí)階段。首先我們要知道采用哪種處理器。目前通用嵌入式處理器有ARM、MIPS、PowerPC、X86等。從市場(chǎng)產(chǎn)品占有率上看,ARM處理器遠(yuǎn)遠(yuǎn)領(lǐng)先于同類其它處理器,并逐步掠奪傳統(tǒng)51單片機(jī)和英特爾市場(chǎng)份額。據(jù)招聘網(wǎng)站統(tǒng)計(jì),目前用人單位在技術(shù)水平上要 求開(kāi)發(fā)人員掌握ARM9及以上平臺(tái)的開(kāi)發(fā)技術(shù)。ARM公司在發(fā)布ARM11產(chǎn)品后,更改以往的數(shù)字標(biāo)記更新方式,轉(zhuǎn)為發(fā)布ARM Cortex。但是Cortex并不是更高端,而是全新系列的處理器,比如Cortex M3,它主要應(yīng)用于機(jī)械加工、工控領(lǐng)域,目的是取代以前的ARM7處理器。
在開(kāi)始學(xué)習(xí)前,建議有一塊自己的開(kāi)發(fā)板,目前ARM9 2440的開(kāi)發(fā)板價(jià)格在400-600元之間,ARM11 6410的開(kāi)發(fā)板價(jià)格要高一些,最便宜的也要1200元以上。在此,提醒大家盡量不要買mini開(kāi)發(fā)板,雖然mini開(kāi)發(fā)板的價(jià)格要便宜些,但是與正常開(kāi) 發(fā)板相比,mini板功能是不完善的。嵌入式匯編有別于X86匯編,所以如果以前沒(méi)有接觸過(guò)匯編語(yǔ)言,那么沒(méi)有必要先去學(xué)X86匯編再學(xué)嵌入式匯編,可以 直接學(xué)習(xí)嵌入式匯編。除了匯編我們還要學(xué)習(xí)ARM指令集。有了開(kāi)發(fā)板,我們要下載相對(duì)應(yīng)處理器的DataSheet及開(kāi)發(fā)板電路原理圖。ARM體系結(jié)構(gòu)的 學(xué)習(xí)我們是不能完全照抄別人代碼的,因?yàn)槲覀冏约菏种械拈_(kāi)發(fā)板及處理器與別人是不同的,除非所用的代碼是根據(jù)你手中的開(kāi)發(fā)板來(lái)編寫的。所以,我們要先去看 書、看視頻資料理解原理及工作方式等,然后根據(jù)自己開(kāi)發(fā)板的電路原理圖和DataSheet來(lái)編寫代碼,達(dá)到理解外圍設(shè)備工作原理和操作硬件的目的。
B)經(jīng)典學(xué)習(xí)視頻推薦:
1)嵌入式掃盲篇——十問(wèn)嵌入式 2)ARM體系結(jié)構(gòu)與Bootloader開(kāi)發(fā) 3)嵌入式ARM Linux開(kāi)發(fā)——ARM匯編 C)經(jīng)典學(xué)習(xí)案例:
1.ARM模擬器開(kāi)發(fā) 2.Watchdog控制程序 3.RTC時(shí)鐘控制程序
4.Uart控制程序 5.LCD控制程序 6.觸摸屏控制程序 7.DMA控制程序 8.音頻控制程序 9.網(wǎng)卡控制程序 10.文件系統(tǒng)制作 11.ARM-Linux移植 嵌入式提升---Linux內(nèi)核、驅(qū)動(dòng)
眾所周知嵌入式開(kāi)發(fā)包含至少兩個(gè)級(jí)別,一個(gè)是嵌入式內(nèi)核驅(qū)動(dòng)級(jí)別,另外一個(gè)是嵌入式應(yīng)用層開(kāi)發(fā),而薪酬高的、最具價(jià)值的無(wú)疑是嵌入式內(nèi)核驅(qū)動(dòng)級(jí)別的開(kāi)發(fā) 者。真正的嵌入式高手或者企業(yè)中的核心開(kāi)發(fā)人員,一定是嵌入式底層的內(nèi)核驅(qū)動(dòng)開(kāi)發(fā)工程師,這些工程師成長(zhǎng)比較緩慢,造成對(duì)內(nèi)核驅(qū)動(dòng)人才的大量需求,所以這 些人才是真正企業(yè)需要的香餑餑。掌握驅(qū)動(dòng)開(kāi)發(fā)會(huì)讓自己的核心能力有極大的飛躍,真正實(shí)現(xiàn)嵌入式最有價(jià)值的就業(yè)。
由于Linux內(nèi)核更新速度很快,書籍和視頻不可能及時(shí)更新,所以我們?cè)倏磿鸵曨l后,要自己動(dòng)手下載內(nèi)核源碼包,去看內(nèi)核中的代碼,在這里可以充分檢驗(yàn) C語(yǔ)言、數(shù)據(jù)結(jié)構(gòu)等基礎(chǔ)知識(shí)的掌握程度。而驅(qū)動(dòng)的編寫還是要借助外設(shè)硬件電路原理圖和芯片手冊(cè)。內(nèi)核和驅(qū)動(dòng)的知識(shí)是讓我們根據(jù)不同的硬件,編寫對(duì)應(yīng)的驅(qū) 動(dòng)、合理剪裁內(nèi)核、制作文件系統(tǒng),并移植到硬件開(kāi)發(fā)板上。如果手里有ARM11 6410及以上的開(kāi)發(fā)板,可以試試在裸板上編寫驅(qū)動(dòng)并移植Android系統(tǒng)到開(kāi)發(fā)板上吧。
B)經(jīng)典學(xué)習(xí)案例:
1.GPIO驅(qū)動(dòng) 2.RTC時(shí)鐘驅(qū)動(dòng) 3.WatchDog驅(qū)動(dòng) 4.Udev移植 5.觸摸屏輸入設(shè)備驅(qū)動(dòng) 6.LCD顯示設(shè)備驅(qū)動(dòng) 7.DMA驅(qū)動(dòng) 8.音頻設(shè)備驅(qū)動(dòng) 9.Nand Flash塊設(shè)備驅(qū)動(dòng) 10.網(wǎng)絡(luò)設(shè)備驅(qū)動(dòng) 硬件工程師的書籍(等等)
第二篇:1嵌入式linux學(xué)習(xí)書籍推薦
嵌入式Linux學(xué)習(xí)書籍推薦
C語(yǔ)言基礎(chǔ)
(最好具有單片機(jī)c語(yǔ)言基礎(chǔ),能夠用c語(yǔ)言做一些單片機(jī)工程項(xiàng)目你能區(qū)分開(kāi)指針數(shù)組和數(shù)組指針嗎?你知道函數(shù)指針嗎?你能區(qū)分開(kāi)定義一個(gè)變量時(shí)系統(tǒng)給它分配的空間與用malloc()函數(shù)給一個(gè)變量分配的空間有什么不一樣嗎?)
1《C語(yǔ)言》第二版 譚浩強(qiáng)
2《實(shí)用C++程序設(shè)計(jì)》
3《C Primer Plus,5th Edition》Stephen Prata著
4《The C Programming Language》Brian W.Kernighan David M.Rithie(K & R)著
《數(shù)據(jù)結(jié)構(gòu)》理論基礎(chǔ)(你能合上書本,用C語(yǔ)言實(shí)現(xiàn)書中的單鏈表、雙鏈表數(shù)據(jù)結(jié)構(gòu)嗎?)
1《數(shù)據(jù)結(jié)構(gòu)(C語(yǔ)言版)》 朱站立
2《算法導(dǎo)論》
3《計(jì)算機(jī)組織與體系結(jié)構(gòu)/性能分析》
4《深入理解計(jì)算機(jī)系統(tǒng)》Randal E.Bryant David O'Hallaron著
5《操作系統(tǒng):精髓與設(shè)計(jì)原理》
6《編譯原理》
7《數(shù)據(jù)通信與計(jì)算機(jī)網(wǎng)絡(luò)》
8《數(shù)據(jù)壓縮原理與應(yīng)用》
Linux基礎(chǔ)
1《Linux命令詳解詞典》施威銘研究室
2《鳥哥的linux私房菜》
3《嵌入式Linux應(yīng)用程序開(kāi)發(fā)詳解》
4《國(guó)嵌視頻課件PPT 01-05全》
4《Linux與Unix Shell 編程指南》
5《GNU Make 使用手冊(cè)》
系統(tǒng)教程
1《嵌入式Linux應(yīng)用開(kāi)發(fā)完全手冊(cè)》韋山東
2《嵌入式系統(tǒng)―體系結(jié)構(gòu)、編程與設(shè)計(jì)》
3《嵌入式系統(tǒng)―采用公開(kāi)源代碼和StrongARM / Xscale處理器》毛德操 胡希明著
4《嵌入式ARM系統(tǒng)原理與實(shí)例開(kāi)發(fā)》 楊宗德著
5《Building Embedded Linux Systems》
硬件基礎(chǔ)(最好先學(xué)好單片機(jī),懂匯編和c語(yǔ)言推薦 銳志c51單片機(jī),有單片機(jī)基礎(chǔ)后對(duì)嵌入式裸機(jī)開(kāi)發(fā)更 清楚。)《十天教你學(xué)會(huì)單片機(jī)》 郭天翔
2《ARM體系結(jié)構(gòu)與編程》杜春雷著
3《ARM微控制器基礎(chǔ)與實(shí)戰(zhàn)》周立功
4S3C2410 Datasheet
5S3C6410 Datasheet
UCOS!操作系統(tǒng)。(你能把uCOS!移植到自己的平臺(tái)上嗎?)
1《嵌入式實(shí)時(shí)操作系統(tǒng)uC/OS-!》第二版 召貝貝譯
Linux內(nèi)核《Linux Kernel Development》 Robert Love中文版《Linux內(nèi)核設(shè)計(jì)與實(shí)現(xiàn)》《深入理解Linux內(nèi)核》(第三版)
3《Linux內(nèi)核源代碼情景分析》毛德操 胡希明著
4《Linux內(nèi)核完全注釋》
5《Understanding the Linux Kernel 》
6《Linux內(nèi)核編程》
7《Advanced Programming in the UNIX Environment》《UNIX環(huán)境高級(jí)編程》
8《UNIX Network Programming》
9《TCP/IP詳解》
驅(qū)動(dòng)方向
1《Linux device driver》中文版《Linux設(shè)備驅(qū)動(dòng)開(kāi)發(fā)》
2《Linux設(shè)備驅(qū)動(dòng)開(kāi)發(fā)詳解_宋寶華》
QT圖形界面編程
1《QT編程寶典》
你得有堅(jiān)韌不拔之志和一顆平常之心!嵌入式門檻雖然較高,但也跟其他事物一樣,并不是牢不可破。只要我們用心去對(duì)待,東雪終將化去,春風(fēng)定會(huì)吹來(lái)。你已學(xué)完嵌入式的整流程!但謹(jǐn)記:一個(gè)有思想的人才真是一個(gè)力量無(wú)邊的人;有容乃大,能予方強(qiáng)!
第三篇:學(xué)習(xí)嵌入式Linux開(kāi)發(fā)有哪些好的書籍?
很多的嵌入式Linux新手,對(duì)自己的學(xué)習(xí)過(guò)程十分迷茫,不知道從何學(xué)習(xí)?學(xué)習(xí)過(guò)程中需要看哪些相關(guān)書籍?接下來(lái)就為嵌入式Linux新手們推薦一些關(guān)于嵌入式Linux學(xué)習(xí)的核心書籍:
Linux基礎(chǔ)
1、《Linux與Unix Shell 編程指南》
C語(yǔ)言基礎(chǔ)
1、《C Primer Plus,5th Edition》【美】Stephen Prata著
2、《The C Programming Language, 2nd Edition》【美】Brian W.Kernighan David M.Rithie(K & R)著
3、《Advanced Programming in the UNIX Environment,2nd Edition》(APUE)
4、《嵌入式Linux應(yīng)用程序開(kāi)發(fā)詳解》
Linux內(nèi)核
1、《深入理解Linux內(nèi)核》(第三版)
2、《Linux內(nèi)核源代碼情景分析》毛德操 胡希明著
研發(fā)方向
1、《UNIX Network Programming》(UNP)
2、《TCP/IP詳解》
3、《Linux內(nèi)核編程》
4、《Linux設(shè)備驅(qū)動(dòng)開(kāi)發(fā)》(LDD)
硬件基礎(chǔ)
1、《ARM體系結(jié)構(gòu)與編程》杜春雷著
2、S3C2410 Datasheet
英語(yǔ)基礎(chǔ)
1、《計(jì)算機(jī)與通信專業(yè)英語(yǔ)》
系統(tǒng)教程
1、《嵌入式系統(tǒng)――體系結(jié)構(gòu)、編程與設(shè)計(jì)》
2、《嵌入式系統(tǒng)――采用公開(kāi)源代碼和StrongARM/Xscale處理器》毛德操 胡希明著
3、《Building Embedded Linux Systems》
理論基礎(chǔ)
1、《算法導(dǎo)論》
2、《數(shù)據(jù)結(jié)構(gòu)(C語(yǔ)言版)》
3、《計(jì)算機(jī)組織與體系結(jié)構(gòu)?性能分析》
4、《深入理解計(jì)算機(jī)系統(tǒng)》【美】Randal E.Bryant David O"Hallaron著
5、《操作系統(tǒng):精髓與設(shè)計(jì)原理》
6、《編譯原理》
7、《數(shù)據(jù)通信與計(jì)算機(jī)網(wǎng)絡(luò)》
8、《數(shù)據(jù)壓縮原理與應(yīng)用》
由于嵌入式行業(yè)入門門檻比較高的,大家=在學(xué)習(xí)之前要有充分的心里準(zhǔn)備,進(jìn)培訓(xùn)機(jī)構(gòu)學(xué)習(xí)也是十分有必要的。
第四篇:學(xué)習(xí)嵌入式心得
嵌入式心得體會(huì)
本人大學(xué)學(xué)的是電子信息科學(xué)與技術(shù)專業(yè),其實(shí)這個(gè)專業(yè)和嵌入式?jīng)]有多大的關(guān)系,要說(shuō)有關(guān)系就是簡(jiǎn)單的講了下C語(yǔ)言語(yǔ)法,學(xué)完之后還不知道什么是C語(yǔ)言,只記住了,char,int,string等占幾個(gè)字節(jié),if, for, while循環(huán)什么的,感覺(jué)也就能算一些小學(xué)就會(huì)的題目,全國(guó)計(jì)算機(jī)等級(jí)二級(jí)也就糊涂的過(guò)了。我這個(gè)專業(yè)沒(méi)學(xué)過(guò)C++,一開(kāi)始不知道什么是向?qū)ο螅裁唇忻嫦蜻^(guò)程,這可能讓大家笑話了。不過(guò)這說(shuō)的是實(shí)話,大學(xué)的時(shí)候比較喜歡動(dòng)手,喜歡硬件方面的東西,也喜歡看書。在大一的時(shí)候就聽(tīng)學(xué)長(zhǎng)說(shuō),單片機(jī)很難學(xué),在沒(méi)事的時(shí)候就從圖書管借了本關(guān)于51的書,一開(kāi)始還真是不怎么懂,然后硬著頭皮去看,當(dāng)我把51的結(jié)構(gòu)看完了,就不像一開(kāi)始那樣一頭霧水了,自己在紙上把51的結(jié)構(gòu)圖默畫一遍,然后再把各個(gè)寄存器功能寫一下,各個(gè)功能口的結(jié)構(gòu)也畫一遍,然后就不覺(jué)得51有什么難了。其實(shí)有些時(shí)候不是這個(gè)東西你不會(huì),而是在不會(huì)的時(shí)候自己先告訴自己這個(gè)太難了,自己先放棄了。我們學(xué)習(xí)51芯片,是為了以后的打基礎(chǔ),知道是怎么通過(guò)配置寄存器來(lái)實(shí)現(xiàn)功能。
大二下學(xué)期的時(shí)候,我們開(kāi)了51的課,這個(gè)課幾乎就沒(méi)怎么去,因?yàn)槲艺J(rèn)為沒(méi)有必要去聽(tīng)自己會(huì)的東西了。后來(lái)聽(tīng)別人說(shuō)avr的資源會(huì)比51的豐富的很多,所以就想試試,看看有什么難的,就從網(wǎng)上買了本馬潮老師《AVR單片機(jī)嵌入式系統(tǒng)原理與應(yīng)用實(shí)踐》,一邊看書,一邊想自己畫一個(gè)板了,一開(kāi)始想實(shí)現(xiàn)一個(gè)點(diǎn)陣屏,實(shí)現(xiàn)滾動(dòng)效果,后來(lái)想想做個(gè)板也花不少錢呢,為什么不多加一些功能呢,還能多學(xué)到些知識(shí),所以就加了溫感,紅外,鐵電存儲(chǔ)器等并把所有的擴(kuò)展口都擴(kuò)展了出來(lái),備以后用,那時(shí)還挺自豪的呢,同學(xué)們都很羨慕,不過(guò)現(xiàn)在想想其實(shí)也沒(méi)什么了。
大學(xué)也聽(tīng)說(shuō)過(guò)嵌入式這個(gè)詞,不過(guò)不太明白是什么意思,09年的時(shí)候從網(wǎng)上找到中嵌視頻,有四張DVD(大約13G),下載下來(lái)后,從頭到尾的看了一遍,沒(méi)什么印象,只記得講一些不知所云的函數(shù),然后莫名其妙的講怎么使用那個(gè)44b0的開(kāi)發(fā)板,不過(guò)聽(tīng)完了,還是有很大收獲的,就有一種想裝一個(gè)linux的沖動(dòng),我是大二下學(xué)期才有的自己電腦,不過(guò)電腦的配置比較低,1g內(nèi)存,跑虛擬機(jī)就像個(gè)蝸牛,所以就想著怎么才能裝個(gè)linux,自己用XP習(xí)慣了,如果全換了又舍不得,那時(shí)從書上知道linux的文件系統(tǒng)和windows不一樣,只有一個(gè)根分區(qū),所以也害怕一裝linux全盤就被格式化了,不過(guò)最后還是欲望戰(zhàn)勝了擔(dān)心,買了張redhat 9的光盤,小心的裝這個(gè)系統(tǒng),里邊的英文也不是太難,還是知道大概意思的,所以一步步的裝,最后裝到我的硬盤的最后空間,重新啟動(dòng),竟可以選擇進(jìn)入哪一個(gè)系統(tǒng)了,從這之后,自己就不害怕怎么裝系統(tǒng)了,應(yīng)了那句言,紙上得來(lái)終覺(jué)淺,絕知此事要躬行。所以我認(rèn)為,買一個(gè)開(kāi)發(fā)板是完全有必要的,拿到實(shí)物操作一下就不會(huì)感覺(jué)太抽象了。
后來(lái)也想學(xué)學(xué)arm,但不知道arm是什么東西,所以就買了本《從51到arm》,講的是關(guān)于arm的大體結(jié)構(gòu),看完后感覺(jué),原來(lái)arm就是一個(gè)速度更快,接口更豐富的單片機(jī)啊。如果想做linux設(shè)備驅(qū)動(dòng)的同學(xué)應(yīng)該對(duì)arm硬件有一些了解。如果對(duì)驅(qū)動(dòng)不感興趣,完全沒(méi)有必要去看。交叉編譯器會(huì)幫我們做好這些事情,他比我們更了解arm結(jié)構(gòu)。
大三下學(xué)期開(kāi)始準(zhǔn)備考研了,所以自己這些興趣就先放下了,報(bào)的北郵的信通學(xué)院通信專業(yè),當(dāng)時(shí)就是想一定要上個(gè)好學(xué)校好專業(yè),也沒(méi)想太多,結(jié)果考了的成績(jī)差了點(diǎn),沒(méi)有被錄取,也不想調(diào)劑一個(gè)二流的學(xué)校,然后就參加工作了,工作中每天都用的到開(kāi)發(fā)板,當(dāng)我看到一個(gè)小板上還可以跑系統(tǒng)的時(shí)候感覺(jué)很不可思議,以為要很大工程。后來(lái)邊工作邊學(xué)習(xí),每天都要看電腦看到眼發(fā)疼,晚上也都差不多十二點(diǎn)時(shí)才睡覺(jué)。感覺(jué)到累,不過(guò)也感覺(jué)到自己在進(jìn)步。
閑話有點(diǎn)多了,說(shuō)了很多都是自己大學(xué)那點(diǎn)破事。
聽(tīng)很多的初學(xué)者說(shuō)不知道從哪里開(kāi)始,學(xué)習(xí)嵌入都要學(xué)哪些東西,從網(wǎng)上搜了一下,一大堆的東西要學(xué),一下就推薦十幾本書,說(shuō)看完這本書怎么怎么樣,看完那本書怎么怎么樣,一下子就給初學(xué)者給嚇住了,其實(shí)完全沒(méi)必要把網(wǎng)上的那些東西全部看一遍,那樣又費(fèi)時(shí),又感覺(jué)工程太大,讓初學(xué)者沒(méi)有信心去把每一種都看完。網(wǎng)上說(shuō)的些方面都要知道,不一定全部都掌握,我們可以退成求其次,每一個(gè)都知道一些,當(dāng)然會(huì)的越多越好。今天學(xué)點(diǎn)這個(gè)明天學(xué)點(diǎn)那,換著樣來(lái)也不會(huì)覺(jué)得煩。而且還能感覺(jué)到每天都有收獲。
下面給嵌入式初學(xué)者一些自己的我個(gè)人建議。1嵌入式涉及到很多的基礎(chǔ)知識(shí):
c語(yǔ)言,關(guān)于C語(yǔ)言要知道基本的語(yǔ)法,什么是結(jié)構(gòu)體,什么是共用體,有什么區(qū)別,不用強(qiáng)記一些二級(jí)考的東西,因在實(shí)際中用的很少。
c++要知道什么是類,怎么定義,繼承,接口,要深刻理解,當(dāng)然基本語(yǔ)法也是必不可少的。
操作系統(tǒng)原理也應(yīng)該知道基本的原理的,我記得我大學(xué)沒(méi)這個(gè)課還是去電信學(xué)院蹭別的專業(yè)的課呢,后來(lái)學(xué)習(xí)發(fā)現(xiàn)很多的東西都是在這個(gè)課上學(xué)到的。什么時(shí)間片啊,任務(wù)調(diào)度啊,都是在那里知道的。
Linux基本命令的使用(vi編輯器必須會(huì)用,因?yàn)樵诮K端改文件的時(shí)候只能用這個(gè)),我們現(xiàn)在很多的人都習(xí)慣用鼠標(biāo)了,很少用到命令,我們學(xué)習(xí)嵌入linux可要改改這個(gè)習(xí)慣了,linux用命令操作一是效率高,二是功能非常強(qiáng)大,遠(yuǎn)非圖形界面能比的了的,其實(shí)我們用圖形界面的操作都要轉(zhuǎn)化為命令傳給硬件的。
Linux文件系統(tǒng)的管理要清楚,哪個(gè)目錄存放是什么東西,有什么用,文件權(quán)限管理等 Shell編程也要了解一些,在這給大家推薦一個(gè)教程,周朝劍的 shell編程,也就七八講吧,講的很全面。初學(xué)者看前4講就可以了。
Linux設(shè)備驅(qū)動(dòng)的架構(gòu)要了解,初學(xué)者可以以飛凌的OK6410開(kāi)發(fā)板上的led驅(qū)動(dòng)分析一下,結(jié)合原理圖和linux設(shè)備驅(qū)動(dòng)相關(guān)書籍把每一行代碼都分析明白。關(guān)于驅(qū)動(dòng)給大家推薦一本書《LINUX社備驅(qū)動(dòng)程序》中國(guó)電力出版社出版的,很經(jīng)典的,初學(xué)者看可能看不太明白,不過(guò)要堅(jiān)持看,最次也得把前6章看完了??磿灰M淮尉蜁?huì),一次就明白是什么意思,也不要死記硬背,看不明白也沒(méi)關(guān)系,以后遇到了知道去哪里去找就可以了,以后遇到的多了,也就記住了,遇到的少的,忘記也就忘記了。還有,不要直接閱讀linux內(nèi)核源代碼,看一些自己把頭撞破也想不明白的事,會(huì)打擊初學(xué)者的積極性,要循序漸進(jìn),今天學(xué)個(gè)做個(gè)led,明天做個(gè)串口,后天說(shuō)不定就做硬件編解碼了。
3、你可以不接受培訓(xùn),但是不能不買開(kāi)發(fā)板。如果你想學(xué)習(xí)嵌入式一定要買塊學(xué)習(xí)板,現(xiàn)在的開(kāi)發(fā)板很便宜了,給我們初學(xué)者減輕了很多經(jīng)濟(jì)負(fù)擔(dān)??丛俣嗟囊曨l,看再多的書,也不如自己動(dòng)手試一下,看著很簡(jiǎn)單的東西,做起來(lái)就可能遇到很多的問(wèn)題,遇到問(wèn)題找到原因,解決問(wèn)題,只有這樣才能學(xué)到東西,記得我第一次寫led的驅(qū)動(dòng),想自己試一下,網(wǎng)上也有人寫過(guò)相關(guān)的代碼,可是自己一試,就出了好多的問(wèn)題,那個(gè)led弄了我一天才把led燈點(diǎn)亮。所以不要眼高手低。
還有關(guān)于培訓(xùn),現(xiàn)在的培訓(xùn)機(jī)構(gòu)很多,講的也不錯(cuò),老師也很好,但是有一個(gè)問(wèn)題,太集中了,而且學(xué)生動(dòng)手的機(jī)會(huì)也不太多,記得我們公司還招了一個(gè)在北京某個(gè)培訓(xùn)機(jī)構(gòu)培訓(xùn)半年的員工呢,花了一萬(wàn)多,來(lái)了之后也沒(méi)感覺(jué)有多高,問(wèn)他都學(xué)了什么,也就是我前邊說(shuō)的那些基礎(chǔ)知識(shí),很多的東西還是不知道的,照著書弄個(gè)helloworld模塊驅(qū)動(dòng)兩天沒(méi)搞定。不是培訓(xùn)不好,但我個(gè)人見(jiàn)解效果并不是很好。記?。褐挥凶约簞?dòng)手做過(guò)的東西才是自己的。
現(xiàn)在買一塊開(kāi)發(fā)板很便宜,飛凌的OK6410的開(kāi)發(fā)板就不錯(cuò),源碼完全開(kāi)放,而且資料也很豐富,完全能滿足初學(xué)者學(xué)習(xí)用,有人說(shuō)友善的板子也不錯(cuò),我個(gè)人覺(jué)得友善的板子不
錯(cuò),但是不適合初學(xué)者,因?yàn)樗暮芏嗟臇|西是不給代碼的,用過(guò)友善的板子的同學(xué)經(jīng)常有這樣的痛苦,想學(xué)一個(gè)東西,去找他的代碼的時(shí)候,卻找不到,很多友善提供的代碼中很多的都是封裝好的,只提供給客戶一個(gè)庫(kù),初學(xué)者想要找代碼的時(shí)候就不知道怎么辦了。不要好高騖遠(yuǎn),要腳踏實(shí)地
對(duì)于初學(xué)者,還有一點(diǎn)小建議,我們拿到一個(gè)開(kāi)發(fā)板,很興奮也很激動(dòng),想法自然也很多,想用開(kāi)發(fā)板實(shí)現(xiàn)自己的這個(gè)想法,實(shí)現(xiàn)那個(gè)想法,然后又不知道從何下手,然后就去論壇中發(fā)一個(gè)貼,“那個(gè)什么什么怎么實(shí)現(xiàn)啊,哪位大俠能詳細(xì)說(shuō)一下啊,跪求!”然后等著別人去回復(fù)。見(jiàn)沒(méi)人回復(fù)就抱怨。有想法是好的,我們要實(shí)現(xiàn)自己的想法也是有前提的,首先,我們對(duì)這部分知識(shí)了解嗎?如果不了解就去google一下(最好別用百度,不太好用),了解了一些,也就大概知道要怎么做了。如果再遇到問(wèn)題,再去發(fā)貼問(wèn),這樣也顯得咱們有水平。比如自己連串口是什么都不太清楚呢,就問(wèn)串口通信怎么做啊,就是人家把代碼給咱,咱也不明白是怎么回事啊。多看代碼,多寫代碼
見(jiàn)多識(shí)廣,熟能生巧。多看代碼,要從代碼中讀出代碼的意思來(lái)。自己平時(shí)也要多寫代碼,多練習(xí)(這一點(diǎn)我做的不好,寫的少)。
寫完已經(jīng)晚上兩點(diǎn)了,思路有些亂,有些也是個(gè)人的見(jiàn)解,在有些人看來(lái)可能是錯(cuò)誤的,每個(gè)人有每個(gè)人的學(xué)習(xí)方法,但是我們的目的只有一個(gè)——希望我們學(xué)到更多的知識(shí)。
第五篇:嵌入式學(xué)習(xí)總結(jié)
嵌入式學(xué)習(xí)總結(jié)
一.基本信息...................................................................................................................1 二.嵌入式系統(tǒng)的組成..................................................................................................1 三.嵌入式的操作系統(tǒng)特點(diǎn)..............................................................................................1 四.嵌入式系統(tǒng)的文件系統(tǒng)..........................................................................................2 五.嵌入式文件系統(tǒng)的特點(diǎn)...........................................................................................2
一.基本信息
嵌入式系統(tǒng)是一種專用的計(jì)算機(jī)系統(tǒng),作為裝置或設(shè)備的一部分。通常,嵌入式系統(tǒng)是一個(gè)控制程序存儲(chǔ)在ROM中的嵌入式處理器控制板。事實(shí)上,所有帶有數(shù)字接口的設(shè)備,如手表、微波爐、錄像機(jī)、汽車等,都使用嵌入式系統(tǒng),有些嵌入式系統(tǒng)還包含操作系統(tǒng),但大多數(shù)嵌入式系統(tǒng)都是是由單個(gè)程序?qū)崿F(xiàn)整個(gè)控制邏輯。
二.嵌入式系統(tǒng)的組成
一個(gè)嵌入式系統(tǒng)裝置一般都由嵌入式計(jì)算機(jī)系統(tǒng)和執(zhí)行裝置組成,嵌入式計(jì)算機(jī)系統(tǒng)是整個(gè)嵌入式系統(tǒng)的核心,由硬件層、中間層、系統(tǒng)軟件層和應(yīng)用軟件層組成。執(zhí)行裝置也稱為被控對(duì)象,它可以接受嵌入式計(jì)算機(jī)系統(tǒng)發(fā)出的控制命令,執(zhí)行所規(guī)定的操作或任務(wù)。執(zhí)行裝置可以很簡(jiǎn)單,如手機(jī)上的一個(gè)微小型的電機(jī),當(dāng)手機(jī)處于震動(dòng)接收狀態(tài)時(shí)打開(kāi);也可以很復(fù)雜,如SONY 智能機(jī)器狗,上面集成了多個(gè)微小型控制電機(jī)和多種傳感器,從而可以執(zhí)行各種復(fù)雜的動(dòng)作和感受各種狀態(tài)信息。
三.嵌入式的操作系統(tǒng)特點(diǎn)
(1)可裁剪性。支持開(kāi)放性和可伸縮性的體系結(jié)構(gòu)。
(2)強(qiáng)實(shí)時(shí)性。EOS實(shí)時(shí)性一般較強(qiáng),可用于各種設(shè)備控制中。(3)統(tǒng)一的接口。提供設(shè)備統(tǒng)一的驅(qū)動(dòng)接口。
(4)操作方便、簡(jiǎn)單、提供友好的圖形GUI和圖形界面,追求易學(xué)易用。
(5)強(qiáng)穩(wěn)定性,弱交互性。嵌入式系統(tǒng)一旦開(kāi)始運(yùn)行就不需要用戶過(guò)多的干預(yù)、這就要負(fù)責(zé)系統(tǒng)管理的EOS具有較強(qiáng)的穩(wěn)定性。嵌入式操作系統(tǒng)的用戶接口一般不提供操作命令,它通過(guò)系統(tǒng)的調(diào)用命令向用戶程序提供服務(wù)。
(6)固化代碼。在嵌入式系統(tǒng)中,嵌入式操作系統(tǒng)和應(yīng)用軟件被固化在嵌入式系統(tǒng)計(jì)算機(jī)的ROM中。(7)更好的硬件適應(yīng)性,也就是良好的移植性
四.嵌入式系統(tǒng)的文件系統(tǒng)
通用操作系統(tǒng)的文件系統(tǒng)通常具有以下功能:
提供用戶對(duì)文件操作的命令。
提供用戶共享文件的機(jī)制。
管理文件的存儲(chǔ)介質(zhì)。
提供文件的存取控制機(jī)制,保障文件及文件系統(tǒng)的安全性。
提供文件及文件系統(tǒng)的備份和恢復(fù)功能。
提供對(duì)文件的加密和解密功能。
五.嵌入式文件系統(tǒng)的特點(diǎn)
1兼容性。嵌入式文件系統(tǒng)通常支持幾種標(biāo)準(zhǔn)的文件系統(tǒng),如FAT32、○JFFS2、YAFFS等。
2實(shí)時(shí)文件系統(tǒng)。除支持標(biāo)準(zhǔn)的文件系統(tǒng)外,為提高實(shí)時(shí)性,有些嵌入 ○式文件系統(tǒng)還支持自定義的實(shí)時(shí)文件系統(tǒng),這些文件系統(tǒng)一般采用連續(xù)的方式存儲(chǔ)文件。
3可裁剪、可配置。根據(jù)嵌入式系統(tǒng)的要求選擇所需的文件系統(tǒng),選擇 ○所需的存儲(chǔ)介質(zhì),配置可同時(shí)打開(kāi)的最大文件數(shù)等。
4支持多種存儲(chǔ)設(shè)備。嵌入式系統(tǒng)的外存形式多樣了,嵌入式文件系統(tǒng) ○需方便的掛接不同存儲(chǔ)設(shè)備的驅(qū)動(dòng)程序,具有靈活的設(shè)備管理能力。同時(shí)根據(jù)不同外部存儲(chǔ)器的特點(diǎn),嵌入式文件系統(tǒng)還需要考慮其性能、壽命等因素,發(fā)揮不同外存的優(yōu)勢(shì),提高存儲(chǔ)設(shè)備的可靠性和使用壽命。
總結(jié):嵌入式是一門以應(yīng)用為中心,以計(jì)算機(jī)為基礎(chǔ),軟件可裁剪,適應(yīng)應(yīng)用系統(tǒng)對(duì)功能、可靠性、成本、體積、功耗等嚴(yán)格要求的專用計(jì)算機(jī)系統(tǒng)。