第一篇:嵌入式培訓(xùn) 嵌入式Linux學(xué)習(xí)路線
嵌入式培訓(xùn) 嵌入式Linux學(xué)習(xí)路線_粵嵌教育
有需求就有市場(chǎng),伴隨著嵌入式的應(yīng)用領(lǐng)域越來越寬廣,嵌入式工程師的缺口與日俱增,嵌入式Linux培訓(xùn)也迎來了良好的發(fā)展環(huán)境和機(jī)遇。嵌入式Linux憑借其系統(tǒng)發(fā)展的成熟度、市場(chǎng)應(yīng)用的高份額也受到更多工程師朋友的青睞,越來越多的企業(yè)和研發(fā)機(jī)構(gòu)都轉(zhuǎn)向嵌入式Linux的開發(fā)和研究,眾所周知,嵌入式開發(fā)在IT開發(fā)行業(yè)中一直是比較火熱的職業(yè),特別是智能硬件的發(fā)展。智能硬件從軟件到硬件,每一階段都需要開發(fā)人員擁有超強(qiáng)的開發(fā)能力和豐富的經(jīng)驗(yàn)。而對(duì)于智能硬件產(chǎn)品來說,他們的開發(fā)都是建立在龐大的嵌入式系統(tǒng)生態(tài)之上的。想學(xué)習(xí)嵌入式要要怎么做呢?來看看粵嵌教育分享的嵌入式Linux學(xué)習(xí)路線:
1、基礎(chǔ)知識(shí): C/C++編程、數(shù)據(jù)結(jié)構(gòu)和算法、操作系統(tǒng)、軟件工程、網(wǎng)絡(luò)、數(shù)據(jù)庫(kù)等。雖科目眾多,但都是較簡(jiǎn)單的基礎(chǔ),且大部分已掌握。
2、深入掌握Linux系統(tǒng):使用Linux、Linux系統(tǒng)編程開發(fā)、驅(qū)動(dòng)開發(fā)、分析Linux內(nèi)核。可以按這樣的學(xué)習(xí)順序,由淺及深,不斷的理解掌握核心內(nèi)容。
3、學(xué)習(xí)嵌入式Linux: 主要是嵌入式Linux開發(fā)流程,嵌入式Linux應(yīng)用開發(fā)、ARM體系架構(gòu)等。建議最好就是自己買一塊開發(fā)板研究,條件允許的話還是報(bào)粵嵌培訓(xùn)班吧,有專業(yè)人士帶進(jìn)步會(huì)比較快,還能認(rèn)識(shí)很多行業(yè)的朋友。
4、深入學(xué)習(xí):深入學(xué)習(xí)ARM、Linux內(nèi)核驅(qū)動(dòng)、Android移植驅(qū)動(dòng)等重點(diǎn)難點(diǎn)內(nèi)容,學(xué)習(xí)傳感器開發(fā)、ZigBee開發(fā)、藍(lán)牙開發(fā)、RFID等目前比較流行的嵌入式開發(fā)技術(shù)。
目前嵌入式就業(yè)比較熱門的領(lǐng)域有物聯(lián)網(wǎng)、智能家居、智能醫(yī)療、智能汽車電子、智能硬件產(chǎn)品開發(fā)等等,可以說嵌入式Linux無處不在。想系統(tǒng)學(xué)習(xí)嵌入式開發(fā),到粵嵌進(jìn)行嵌入式Linux培訓(xùn),教學(xué)課程涵蓋了嵌入式基礎(chǔ)、項(xiàng)目分析與立項(xiàng)、Linux核心操作與算法、嵌入式Linux系統(tǒng)編程開發(fā)、嵌入式GUI系統(tǒng)編程開發(fā)、ARM開發(fā)、嵌入式底層驅(qū)動(dòng)開發(fā)、項(xiàng)目?jī)?yōu)化與驗(yàn)收再到就業(yè)與創(chuàng)業(yè)指導(dǎo)。
第二篇:嵌入式學(xué)習(xí)路線
語言基礎(chǔ) 1.C 與 C++ A.《c reference》 B.《c++ 編程思想》 C.《effective c++》 D.《more effective c++》 E.《effective c++ stl》 2.軟件設(shè)計(jì) A.《UML 2.0 Reference》 B.《設(shè)計(jì)模式-可復(fù)用的面向?qū)ο筌浖幕A(chǔ)》 C.《重構(gòu)》 D.《修改代碼的藝術(shù)》 E.《面向模式的軟件體系結(jié)構(gòu)》卷 1,卷 2,卷 3,卷 4,卷 5 3.Linux 開發(fā)基礎(chǔ) A.《鳥哥的 linux 私房菜》 B.《GNU make reference》 C.《Shell 編程》 D.《unix 高級(jí)環(huán)境編程》 E.《linux kernel development》 F.《深入理解 Linux 內(nèi)核》 G.《Linux 驅(qū)動(dòng)程序開發(fā)》 H.《Unix 網(wǎng)絡(luò)編程》 I.《Linux 進(jìn)程間通信》 4.嵌入式開發(fā)基礎(chǔ) A.《ARM 體系結(jié)構(gòu)》 B.《ARM 程序分析與設(shè)計(jì)》 C.《ARM 嵌入式系統(tǒng)基礎(chǔ)教材》周立功 D.《嵌入式操作系統(tǒng)μC/OS》 E.《嵌入式 Linux 基礎(chǔ)教材》 F.《嵌入式系統(tǒng)設(shè)計(jì)》 G.《嵌入式硬件設(shè)計(jì)》 H.《Qt4 圖形設(shè)計(jì)與嵌入式系統(tǒng)開發(fā)》 I.《嵌入式系統(tǒng)中的實(shí)時(shí)概念》 J.《實(shí)時(shí)設(shè)計(jì)模式》 5.專業(yè)選看 A.FPGA 設(shè)計(jì) B.《高性能嵌入式計(jì)算》 C.數(shù)字圖像處理,視頻編解碼基礎(chǔ) MPEG4,H.264,AVS D.Android,iphone,symbian 開發(fā)。
第三篇:嵌入式linu學(xué)習(xí)心得
嵌入式Linux學(xué)習(xí)心得
1、Linux命令
ls:查看目錄-l以列表方式查看;ls –l 與ll的功能一樣 pwd: 查看當(dāng)前的目錄
cd:改變當(dāng)前操作目錄cd /直接跳到根目錄 cd..回到上一級(jí)目錄 cat: 打印顯示當(dāng)前文件的內(nèi)容信息
mkdir:創(chuàng)建目錄
fdisk: 查看硬盤分區(qū)信息,-l以列表方式查看
->代表是鏈接文件,類似window下的快捷方式。
cp: 復(fù)制命令,例子cp 文件名 /home/dir/
mv: 移動(dòng)或改名,如mv sonf.confsonf.txt(改名)移動(dòng):mv sonf.conf / rm:刪除命令,如rm –f test.c;如刪除目錄rm –fr d
man:查看某個(gè)命令的幫助,man 命令
2、各系統(tǒng)目錄的功能
drw—r—w--:d代表是目錄,drw代表當(dāng)前用戶的權(quán)限,r代表組用戶的權(quán)限,w代表其它用戶的權(quán)限。x代表有執(zhí)行權(quán)限。
/boot/gruff.conf: 啟動(dòng)引導(dǎo)程序
/dev:brw—rw--:b代表是塊設(shè)備。Linux設(shè)備有三種,塊設(shè)備(b開頭)、字符設(shè)備(c開頭)、網(wǎng)絡(luò)設(shè)備。had代表第一個(gè)硬盤,hdb代表第二個(gè)硬盤。Hdb2代表第二塊硬盤的第二個(gè)分區(qū)。3,67代表主設(shè)備為3,從設(shè)備為67./etc:存放的是系統(tǒng)的配置文件。Inittab文件存放不同啟動(dòng)方式下必須啟動(dòng)的進(jìn)程。Inittab文件中有6個(gè)啟動(dòng)level,wait中對(duì)應(yīng)著6個(gè)level的目錄,respawn代表當(dāng)一個(gè)進(jìn)程被意外終止了,但會(huì)自動(dòng)啟動(dòng)的進(jìn)程,如守護(hù)進(jìn)程。rc.d目錄中存放了一個(gè)rc.sysinit文件,里面存放系統(tǒng)初始化配置信息。/etc還有一個(gè)vsftpd里面存放tcp、ftp的配置。
/home : 用戶目錄,存放用戶的文件,/lib:存放庫(kù)文件,后綴為so的文件代表動(dòng)態(tài)鏈接庫(kù)。
/lost+found:系統(tǒng)意外終止,存放一些可以找回的文件。
/mnt:掛載外部設(shè)備,如掛載光驅(qū):mount –t /dev/cdrom/mnt/cdrom,如
果在雙系統(tǒng)中,要查看windows中D盤的文件,首先應(yīng)該將D盤的文件映射過來,mount –t /dev/hda2/mnt/windows/d
/opt:用戶安裝的應(yīng)用程序
/proc:是系統(tǒng)運(yùn)行的映射,比較重要。里面的文件數(shù)字代表進(jìn)程號(hào)。每個(gè)進(jìn)程號(hào)目錄下包含進(jìn)程的基本信息。還有其他信息,如cpuinfo等,內(nèi)核支持的文件系統(tǒng)filesystem等。系統(tǒng)支持的中斷interrupts,iomen代表內(nèi)存分配情況。ioport存放IO端口號(hào)。還有分區(qū)信息,modole信息,狀態(tài)信息,版本信息
對(duì)于Linux的設(shè)備驅(qū)動(dòng)程序,有兩種加載模式,一種是直接加載進(jìn)linux內(nèi)核,一種是以模塊的方式加載到內(nèi)核。
/sbin: 系統(tǒng)管理的一些工具。如poweroff關(guān)機(jī)工具。
/usr: 安裝系統(tǒng)時(shí)很多文件放在此目錄下面,包含一些更新等,include包含的頭文件,lib 是Linux的庫(kù)文件,src包含Linux2.4的內(nèi)核源碼
/var:存放是臨時(shí)變量
3、
第四篇:嵌入式學(xué)習(xí)路線建議
嵌入式學(xué)習(xí)是一個(gè)循序漸進(jìn)的過程,如果是希望向嵌入式軟件方向發(fā)展的話,目前最常見的是嵌入式Linux方向,關(guān)注這個(gè)方向,我認(rèn)為大概分3個(gè)階段:
1、嵌入式linux上層應(yīng)用,包括QT的GUI開發(fā)
2、嵌入式linux系統(tǒng)開發(fā)
3、嵌入式linux驅(qū)動(dòng)開發(fā)
嵌入式目前主要面向的幾個(gè)操作系統(tǒng)是,LINUX,WINCE、VxWorks等等 Linux是開源免費(fèi)的,而且其源代碼是開放的,更加適合我們學(xué)習(xí)嵌入式。
你可以嘗試以下路線:
(1)C語言是所有編程語言中的強(qiáng)者,單片機(jī)、DSP、類似ARM的種種芯片的編程都可以用C語言搞定),因此必須非常熟練的掌握。推薦書籍:《The C Programming Language》 這本經(jīng)典的教材是老外寫的,也有中譯版本。(2)操作系統(tǒng)原理,是必需的,如果你是計(jì)算機(jī)專業(yè)畢業(yè)那也就無所謂了,如果是非計(jì)算機(jī)專業(yè)的就必須找一本比較淺顯的計(jì)算機(jī)原理書籍看一看,把啥叫“進(jìn)程”“線程”“系統(tǒng)調(diào)度”等等基本問題搞清楚。
(3)Linux操作系統(tǒng)就是用C語言編寫的,所以你也應(yīng)該先學(xué)習(xí)下Linux方面的編程,只有你會(huì)應(yīng)用了,才能近一步去了解其內(nèi)核的精髓。推薦書籍:《UNIX環(huán)境高級(jí)編程》(第2版)
(4)了解ARM的架構(gòu),原理,以及其匯編指令,我們?cè)谇度胧介_發(fā)中,一般很少去寫匯編,但是最起碼的要求是能夠看懂a(chǎn)rm匯編。
(5)系統(tǒng)移植的時(shí)候,就需要你從最下層的bootloader開始,然后內(nèi)核移植,文件系統(tǒng)移植等。而移植這部分對(duì)硬件的依賴是非常大的,其配置步驟也相對(duì)復(fù)雜,也沒有太多詳細(xì)資料。
(6)驅(qū)動(dòng)開發(fā)
linux驅(qū)動(dòng)程序設(shè)計(jì)既是個(gè)極富有挑戰(zhàn)性的領(lǐng)域,又是一個(gè)博大精深的內(nèi)容。
linux驅(qū)動(dòng)程序設(shè)計(jì)本質(zhì)是屬于linux內(nèi)核編程范疇的,因而是對(duì)linux內(nèi)核和內(nèi)核編程是有要求的。在學(xué)習(xí)前你要想了解linux內(nèi)核的組成,因?yàn)槊恳徊糠忠敿?xì)研究的話足夠可以擴(kuò)展成一本厚書。
以上只不過是大概的框架,在實(shí)際的開發(fā)中還會(huì)涉及很多東西,比如:交叉編譯、makefile、shell腳本等等,所以說學(xué)習(xí)嵌入式的周期較長(zhǎng),門檻較高,自學(xué)的話更是需要較強(qiáng)的學(xué)習(xí)能力和專業(yè)功底。只要能堅(jiān)持下來一定會(huì)取得成功!
其實(shí)LZ可以到一些嵌入式培訓(xùn)機(jī)構(gòu)的網(wǎng)站上看一下他們的課程設(shè)置,就會(huì)在腦子里有個(gè)清晰的思路,比如華清遠(yuǎn)見的官方網(wǎng)站,上面的嵌入式內(nèi)容很豐富,嵌入式方面的信息更新也很迅速,沒事可以去轉(zhuǎn)轉(zhuǎn)。
嵌入式是一個(gè)比較大的概念,他有四個(gè)分支,至少我只知道這四個(gè)。
1、微控制器(單片機(jī)為例);
2、微處理器(arm為例);
3、dsp(數(shù)字信號(hào)處理);
4、soc(片上系統(tǒng)); 對(duì)于我們初學(xué)者而言,首先要學(xué)習(xí)單片機(jī),以51為代表,等你學(xué)好51之后,可以深入學(xué)習(xí)更艱難的東西;
當(dāng)然,并不是說你只需要學(xué)習(xí)單片機(jī);要想學(xué)好單片機(jī),你還得學(xué)c語言,得學(xué)匯編,得學(xué)一大堆應(yīng)用軟件;等到單片機(jī)能夠掌握的不錯(cuò)的時(shí)候又需要自己進(jìn)行原理圖、PCB板的設(shè)計(jì);還得掌握系統(tǒng)設(shè)計(jì)的工程管理什么的;比較多。。
單片機(jī)還是比較簡(jiǎn)單的,等到學(xué)好之后,開始學(xué)習(xí)arm的時(shí)候,你就接觸的多了,什么操作系統(tǒng)啊、驅(qū)動(dòng)編寫啊、內(nèi)核移植啊、應(yīng)用程序的添加啊、上位機(jī)的編寫啊,那個(gè)就多了,不過到時(shí)候你就全知道了。。
ARM+LINUX路線,主攻嵌入式Linux操作系統(tǒng)及其上應(yīng)用軟件開發(fā)目標(biāo):
(1)掌握主流嵌入式微處理器的結(jié)構(gòu)與原理(初步定為arm9)
(2)必須掌握一個(gè)嵌入式操作系統(tǒng)(初步定為uclinux或linux,版本待定)
(3)必須熟悉嵌入式軟件開發(fā)流程并至少做一個(gè)嵌入式軟件項(xiàng)目。
從事嵌入式軟件開發(fā)的好處是:
(1)目前國(guó)內(nèi)外這方面的人都很稀缺。這一領(lǐng)域入門門檻較高,所以非專業(yè)IT人員很難切
入這一領(lǐng)域;另一方面,是因?yàn)檫@一領(lǐng)域較新,目前發(fā)展太快,大多數(shù)人無條件接觸。
(2)與企業(yè)計(jì)算等應(yīng)用軟件不同,嵌入式領(lǐng)域人才的工作強(qiáng)度通常低一些(但收入不低)。
(3)哪天若想創(chuàng)業(yè),搞自已的產(chǎn)品,嵌入式不像應(yīng)用軟件那樣容易被盜版。硬件設(shè)計(jì)一般
都是請(qǐng)其它公司給訂做(這叫“貼牌”:OEM),都是通用的硬件,我們只管設(shè)計(jì)軟件就變成
自己的產(chǎn)品了。
(4)興趣所在,這是最主要的。
從事嵌入式軟件開發(fā)的缺點(diǎn)是:
(1)入門起點(diǎn)較高,所用到的技術(shù)往往都有一定難度,若軟硬件基礎(chǔ)不好,特別是操作系
統(tǒng)級(jí)軟件功底不深,則可能不適于此行。
(2)這方面的企業(yè)數(shù)量要遠(yuǎn)少于企業(yè)計(jì)算類企業(yè)。
(3)有少數(shù)公司經(jīng)常要碩士以上的人搞嵌入式,主要是基于嵌入式的難度。但大多數(shù)公司
也并無此要求,只要有經(jīng)驗(yàn)即可。
(4)平臺(tái)依托強(qiáng),換平臺(tái)比較辛苦。
興趣的由來:
1、成功觀念不同,不虛度此生,就是我的成功。
2、喜歡思考,挑戰(zhàn)邏輯思維。
3、喜歡C
C是一種能發(fā)揮思維極限的語言。關(guān)于C的精神的一些方面可以被概述成短句如下:
相信程序員。
不要阻止程序員做那些需要去做的。
保持語言短小精干。
一種方法做一個(gè)操作。
使得它運(yùn)行的夠快,盡管它并不能保證將是可移植的。
4、喜歡底層開發(fā),討厭vb類開發(fā)工具(并不是說vb不好)。
5、發(fā)展前景好,適合創(chuàng)業(yè),不想自己要死了的時(shí)候還是一個(gè)工程師。
方法步驟:
1、基礎(chǔ)知識(shí):
目的:能看懂硬件工作原理,但重點(diǎn)在嵌入式軟件,特別是操作系統(tǒng)級(jí)軟件,那將是我的優(yōu)
勢(shì)。
科目:數(shù)字電路、計(jì)算機(jī)組成原理、嵌入式微處理器結(jié)構(gòu)。
匯編語言、C/C++、編譯原理、離散數(shù)學(xué)。
數(shù)據(jù)結(jié)構(gòu)和算法、操作系統(tǒng)、軟件工程、網(wǎng)絡(luò)、數(shù)據(jù)庫(kù)。
方法:雖科目眾多,但都是較簡(jiǎn)單的基礎(chǔ),且大部分已掌握。不一定全學(xué),可根據(jù)需要選修。
thec++programminglanguage(一直沒時(shí)間讀)、數(shù)據(jù)結(jié)構(gòu)-C2。
2、學(xué)習(xí)linux:
目的:深入掌握linux系統(tǒng)。方法:使用linux—〉linxu系統(tǒng)編程開發(fā)—〉驅(qū)動(dòng)開發(fā)和分析linux內(nèi)核。先看深,那主講原理。看幾遍后,看情景分析,對(duì)照深看,兩本交叉,深是綱,情是目。剖析則是0.11版,適合學(xué)習(xí)。最后深入代碼。
主攻書籍:linux內(nèi)核完全剖析、unix環(huán)境高級(jí)編程、深入理解linux內(nèi)核、情景分析和源代。
3、學(xué)習(xí)嵌入式linux:
目的:掌握嵌入式處理器其及系統(tǒng).方法:(1)嵌入式微處理器結(jié)構(gòu)與應(yīng)用:直接arm原理及匯編即可,不要重復(fù)x86。
(2)嵌入式操作系統(tǒng)類:ucOS/II簡(jiǎn)單,開源,可供入門。而后深入研究uClinux。
(3)必須有塊開發(fā)板(arm9以上),有條件可參加培訓(xùn)(進(jìn)步快,能認(rèn)識(shí)些朋友)
主攻書籍:毛德操的《嵌入式系統(tǒng)》及其他arm9手冊(cè)與arm匯編指令等。
4、深入學(xué)習(xí):
A、數(shù)字圖像壓縮技術(shù):主要是應(yīng)掌握MPEG、mp3等編解碼算法和技術(shù)。
B、通信協(xié)議及編程技術(shù):TCP/IP協(xié)議、802.11,Bluetooth,GPRS、GSM、CDM
A等。
C、網(wǎng)絡(luò)與信息安全技術(shù):如加密技術(shù),數(shù)字證書CA等。
D、DSP技術(shù):DigitalSignalProcess,DSP處理器通過硬件實(shí)現(xiàn)數(shù)字信號(hào)處理算
法。
說明:太多細(xì)節(jié)未說明,可根據(jù)實(shí)際情況調(diào)整。重點(diǎn)在于1、3,不必完全按照順序
作。對(duì)于學(xué)習(xí)c++,理由是c++不只是一種語言,一種工具,她還是一種藝術(shù),一種文化,一種哲學(xué)理念、但不是拿來炫耀得東西。對(duì)于linux內(nèi)核,學(xué)習(xí)編程,讀一些優(yōu)秀代碼也是
有必要的。
注意: 要學(xué)會(huì)舉一反多,有強(qiáng)大的基礎(chǔ),很多東西簡(jiǎn)單看看就能會(huì)。想成為合格的
程序員,前提是必須熟練至少一種編程語言,并具有良好的邏輯思維。一定要理論結(jié)合實(shí)踐。
不要一味鉆研技術(shù),雖然擠出時(shí)間是很難做到的,但還是要留點(diǎn)余地去完善其他的愛
好,比如宇宙,素描、機(jī)械、管理,心理學(xué)、游戲、科幻電影。還有一些不愿意做但必須要
做的!
技術(shù)是通過編程編程在編程編出來的。永遠(yuǎn)不要夢(mèng)想一步登天,不要做浮躁的人,不
要覺得路途漫上。而是要編程編程在編程,完了在編程,在編程!等機(jī)會(huì)來了在創(chuàng)業(yè)(不要
相信有奇跡發(fā)生,盲目創(chuàng)業(yè)很難成功,即便成功了發(fā)展空間也不一定很大)。
嵌入式書籍推薦
Linux基礎(chǔ)
1、《Linux與UnixShell編程指南》
C語言基礎(chǔ)
1、《CPrimerPlus,5thEdition》【美】StephenPrata著
2、《TheCProgrammingLanguage,2ndEdition》【美】BrianW.KernighanDav
idM.Rithie(K&R)著
3、《AdvancedProgrammingintheUNIXEnvironment,2ndEdition》(APUE)
4、《嵌入式Linux應(yīng)用程序開發(fā)詳解》
Linux內(nèi)核
1、《深入理解Linux內(nèi)核》(第三版)
2、《Linux內(nèi)核源代碼情景分析》毛德操胡希明著
研發(fā)方向
1、《UNIXNetworkProgramming》(UNP)
2、《TCP/IP詳解》
3、《Linux內(nèi)核編程》
4、《Linux設(shè)備驅(qū)動(dòng)開發(fā)》(LDD)
5、《Linux高級(jí)程序設(shè)計(jì)》楊宗德著
硬件基礎(chǔ)
1、《ARM體系結(jié)構(gòu)與編程》杜春雷著
2、S3C2410Datasheet
英語基礎(chǔ)
1、《計(jì)算機(jī)與通信專業(yè)英語》
系統(tǒng)教程
1、《嵌入式系統(tǒng)――體系結(jié)構(gòu)、編程與設(shè)計(jì)》
2、《嵌入式系統(tǒng)――采用公開源代碼和StrongARM/Xscale處理器》毛德操胡希明
著
3、《BuildingEmbeddedLinuxSystems》
4、《嵌入式ARM系統(tǒng)原理與實(shí)例開發(fā)》楊宗德著
理論基礎(chǔ)
1、《算法導(dǎo)論》
2、《數(shù)據(jù)結(jié)構(gòu)(C語言版)》
3、《計(jì)算機(jī)組織與體系結(jié)構(gòu)?性能分析》
4、《深入理解計(jì)算機(jī)系統(tǒng)》【美】RandalE.Bryant DavidO''Hallaron著
5、《操作系統(tǒng):精髓與設(shè)計(jì)原理》
6、《編譯原理》
7、《數(shù)據(jù)通信與計(jì)算機(jī)網(wǎng)絡(luò)》
8、《數(shù)據(jù)壓縮原理與應(yīng)用》
C語言書籍推薦
1.TheCprogramminglanguage《C程序設(shè)計(jì)語言》
2.PointersonC《C和指針》
3.Ctrapsandpitfalls《C陷阱與缺陷》
4.ExpertCLanuage《專家C編程》
5.WritingCleanCode-----MicrosoftTechiniquesforDevelopingBug-freeCProgr ams
《編程精粹--Microsoft編寫優(yōu)質(zhì)無錯(cuò)C程序秘訣》
6.ProgrammingEmbeddedSystemsinCandC++《嵌入式系統(tǒng)編程》
7.《C語言嵌入式系統(tǒng)編程**》
8.《高質(zhì)量C++/C編程指南》林銳
盡可能多的編碼,要學(xué)好C,不能只注重C本身。算法,架構(gòu)方式等都很重要。
這里很多書其實(shí)是推薦而已,不必太在意,關(guān)鍵還是基礎(chǔ),才是重中之重!!
第五篇:嵌入式學(xué)習(xí)的正確步驟,嵌入式 嵌入式學(xué)習(xí)路線
004km.cn 達(dá)內(nèi)教育—中國(guó)IT培訓(xùn)領(lǐng)導(dǎo)品牌
嵌入式學(xué)習(xí)的正確步驟,嵌入式 嵌入式學(xué)習(xí)路線
嵌入式門檻雖然較高,但也跟其他事物一樣,并不是牢不可破。只要我們用心去對(duì)待,冬雪終將化去,春風(fēng)定會(huì)吹來。
具體步驟如下:
1、《C語言》第二版 譚浩強(qiáng);《C程序設(shè)計(jì)語言》第二版 徐寶文譯 機(jī)械工業(yè)出版社
你能區(qū)分開指針數(shù)組和數(shù)組指針嗎?你知道函數(shù)指針嗎?
你能區(qū)分開定義一個(gè)變量時(shí)系統(tǒng)給它分配的空間與用malloc()函數(shù)給一個(gè)變量分配的空間有什么不一樣嗎?
2、《數(shù)據(jù)結(jié)構(gòu)》C語言版 黃國(guó)愉、葉乃青編 清華大學(xué)出版社
你能合上書本,用C語言實(shí)現(xiàn)書中的單鏈表、雙鏈表數(shù)據(jù)結(jié)構(gòu)嗎?
3、《實(shí)用C++程序設(shè)計(jì)》第二板 中國(guó)電力出版社 Steve_Oualline著
此階段主要是學(xué)習(xí)其面向?qū)ο蟮木幊趟枷?,加深?duì)C語言和數(shù)據(jù)結(jié)構(gòu)的理解。
4、學(xué)習(xí)單片機(jī),最好能找個(gè)前輩帶一帶。
你能用51單片機(jī)做出一樣實(shí)際的東西嗎?即使它再簡(jiǎn)單!
要注意加深對(duì)中斷的理解。
5、學(xué)習(xí)ARM單片機(jī)。
(1)、細(xì)讀《ARM微控制器基礎(chǔ)與實(shí)戰(zhàn)》周立工編寫(注:即使你不用書中的開發(fā)板)
(2)、細(xì)讀相關(guān)芯片的原版英文文檔。如:arm920TE.pdf S3C2410_1.2.pdf
6、學(xué)習(xí)uCOS!操作系統(tǒng)。
(1)、細(xì)讀《嵌入式實(shí)時(shí)操作系統(tǒng)uC/OS-!》第二版 召貝貝譯
你能把uCOS!移植到自己的平臺(tái)上嗎?
(2)、能編寫在uCOS!操作系統(tǒng)環(huán)境下運(yùn)行的針對(duì)具體硬件的驅(qū)動(dòng)程序
004km.cn 達(dá)內(nèi)教育—中國(guó)IT培訓(xùn)領(lǐng)導(dǎo)品牌
7、熟悉Linux環(huán)境,學(xué)習(xí)Linux環(huán)境編程,學(xué)習(xí)交叉編程
(1)、細(xì)讀《linux命令大全.pdf》
(2)、細(xì)讀《GNU Make 使用手冊(cè)(中譯版).pdf》
(3)、學(xué)習(xí)創(chuàng)建交叉編程環(huán)境.8、學(xué)習(xí)Linux操作系統(tǒng)。
(1)、《UNIX環(huán)境高級(jí)編程》
(2)、可以到一些好的網(wǎng)站下載一些比較好的書籍
(3)、細(xì)讀《linux內(nèi)核完全注釋》
(4)、細(xì)讀《understanding the linux kernel 2》
(5)、利用源代碼閱讀利器工具“Source Insight”進(jìn)行真正的linux內(nèi)核原碼刨析
(6)、最后進(jìn)行內(nèi)核移植,并能編寫在linux操作系統(tǒng)環(huán)境下運(yùn)行的針對(duì)具體硬件的驅(qū)動(dòng)程序
9、學(xué)習(xí)Linux設(shè)備驅(qū)動(dòng)編寫??蓞⒖肌禠inux設(shè)備驅(qū)動(dòng)程序》
10、復(fù)習(xí)C++,學(xué)習(xí)用QT進(jìn)行圖形界面編程
(1)、細(xì)讀《QT編程寶典》
(2)、學(xué)會(huì)通過查看QT電子文檔進(jìn)行QT GUI實(shí)地編程
(3)、學(xué)習(xí)交叉編程.(其實(shí)就是把命令qmake變?yōu)閠make)
11、當(dāng)然,你也可學(xué)習(xí)一下PCB的制作和設(shè)計(jì)一個(gè)自己的CPU(即軟殼)
在嵌入式軟件方面最重要的課程包括:
(1)嵌入式微處理器結(jié)構(gòu)與應(yīng)用:
這是一門嵌入式硬件基礎(chǔ)課程,我們說過,嵌入式是軟硬件結(jié)合的技術(shù),搞嵌入式軟件的人應(yīng)對(duì)ARM處理器工作原理和接口技術(shù)有充分了解,包括ARM的匯編指令系統(tǒng)。若不了解處理器原理,怎么能控制硬件工作,怎么能寫出節(jié)省內(nèi)存又運(yùn)行高速的最優(yōu)代碼(嵌入式軟件設(shè)計(jì)特別講究時(shí)空效率),怎么能寫出驅(qū)動(dòng)程序(驅(qū)動(dòng)程序都是與硬件打交道的)?很多公司招聘嵌入式軟件人員時(shí)都要求熟悉 004km.cn 達(dá)內(nèi)教育—中國(guó)IT培訓(xùn)領(lǐng)導(dǎo)品牌
ARM處理器,將來若同學(xué)到公司中從事嵌入式軟件開發(fā),公司都會(huì)給你一本該設(shè)備的硬件規(guī)格說明書(xxx Specification),你必須能看懂其中的內(nèi)存分布和端口使用等最基本的說明(就像x86匯編一樣),否則怎么設(shè)計(jì)軟件。有些同學(xué)覺得嵌入式處理 器課程較枯燥,這主要是硬件課程都較抽象的原因。還有同學(xué)對(duì)ARM匯編不感興趣,以為嵌入式開發(fā)用C語言就足夠了。其實(shí)不應(yīng)僅是將匯編語言當(dāng)成一個(gè)程序設(shè)計(jì)語言,學(xué)匯編主要是為了掌握處理器工作原理的。一個(gè)不熟悉匯編語言的人,怎么能在該處理器寫出最優(yōu)的C語言代碼。在嵌入式開發(fā)的一些關(guān)鍵部分,有時(shí)還必須寫匯編,如Bootloader等(可能還包括BSP)。特別是在對(duì)速度有極高要求的場(chǎng)合(如DSP處理器的高速圖像采集和圖像解壓縮),目前還會(huì)用到匯編寫程序的,盡管用到的機(jī)會(huì)相對(duì)C要小得多。當(dāng)你在一個(gè)嵌入式公司工作時(shí),在查看描述原理的手冊(cè)時(shí),可能很多都是用匯編描述的,這是因?yàn)楹芏嘤布O(shè)計(jì)人員只會(huì)寫或者喜歡用匯編描述,此時(shí)你就必須看懂匯編程序,否則軟硬件人員可能就無法交流。很多嵌入式職位招聘時(shí)都要求熟悉匯編。
[小知識(shí)] 目前嵌入式處理器常見的有ARM、PowerPC、MIPS、Motorola 68K、ColdFire(冷火)等,但ARM占據(jù)了絕對(duì)主流(有資料說手機(jī)中幾乎90%都是ARM處理器)。ARM是一個(gè)只賣知識(shí)產(chǎn)權(quán)的公司,目前獲得購(gòu)買了ARM CPU核授權(quán)許可的大公司很多,包括Intel、Samsung、Amstel、Motorola、Philip等,他們都在ARM CPU核的基礎(chǔ)上進(jìn)行了一些外圍擴(kuò)展,形成自己的處理器(如Samsung S3C2410,Motorola i.MXL9328等處理器都是采用ARM 9內(nèi)核,指令一級(jí)是相同的)。而眾多中小公司又購(gòu)買了這些處理器,設(shè)計(jì)了各種各樣的開發(fā)板,如華恒等國(guó)內(nèi)很多著名嵌入式公司都生產(chǎn)基于SamsungS3C2410的開發(fā)板,供最終用戶使用或供教學(xué)實(shí)驗(yàn)。在ARM這個(gè)食物鏈上,ARM公司是大魚,Intel、Samsung等公司是小魚,而華恒等則是蝦米,最終用戶(我們這些要采購(gòu)嵌入式開發(fā)板的)則是喂蝦米的。Intel早期生產(chǎn)的是低端ARM(Strong ARM,相當(dāng)于ARM 7),現(xiàn)在轉(zhuǎn)向主要生產(chǎn)高端ARM(即Intel Xscale處理器,屬于ARMv5家族,主要用在高端PDA上,如HP和DELL生產(chǎn)的PDA都采用Intel Xscale,價(jià)格較高)。目前應(yīng)用最多的是ARM 7和ARM 9兩類處理器。ARM 7較便宜,可跑uclinux(是一個(gè)不支持高級(jí)內(nèi)存管理功能的嵌入式Linux系統(tǒng)統(tǒng))、Vxworks、uc/os II等實(shí)時(shí)操作系統(tǒng),但因處理器不帶內(nèi)存管理單元MMU(無內(nèi)存分頁(yè)和地址映射機(jī)制,所以不能使用虛擬內(nèi)存),所以不能跑Windows CE,另外通用Linux中的某些內(nèi)存管理功能也不能用在ARM 7上。ARM 9大都是一個(gè)帶MMU功能的高端處理器,可跑WinCE或通用Linux的大多數(shù)功能。ARM7和ARM9的區(qū)別是在與體系結(jié)構(gòu)上,前者是馮?諾伊曼結(jié) 構(gòu),后者是哈佛結(jié)構(gòu)——指令和數(shù)據(jù)總線是分開的。以上是我的一點(diǎn)了解,可能有不對(duì)的地方。我們學(xué)院有十幾套ARM 7開發(fā)系統(tǒng)(采用Samsung S3C44b0x開發(fā)板,主要用于嵌入式處理器結(jié)構(gòu)、實(shí)時(shí)操作系統(tǒng)等課程實(shí)驗(yàn)用),ARM 9的系統(tǒng)好象也已經(jīng)到了(采用的芯片我不知道也沒去問),還有以前的十幾套MPC860開發(fā)板(聽說價(jià)格都很貴,很容易損壞),同學(xué)應(yīng)愛護(hù)使用和珍惜這樣 的實(shí)驗(yàn)機(jī)會(huì)。
(2)嵌入式操作系統(tǒng)類課程
004km.cn 達(dá)內(nèi)教育—中國(guó)IT培訓(xùn)領(lǐng)導(dǎo)品牌
除了WinCE的實(shí)時(shí)性稍差外,大多數(shù)嵌入式操作系統(tǒng)的實(shí)時(shí)性都很強(qiáng),所以也可稱為實(shí)時(shí)操作系統(tǒng)Real Time Operating System.從事嵌入式的人至少須掌握一個(gè)嵌入式操作系統(tǒng),這在嵌入式的所有技術(shù)中是最為關(guān)鍵的了。目前最重要的RTOS主要包括:
第一類、傳統(tǒng)的經(jīng)典RTOS:最主要的便是Vxworks操作系統(tǒng),以及其Tornado開發(fā)平臺(tái)。Vxworks因出現(xiàn)稍早,實(shí)時(shí)性很強(qiáng)(據(jù)說可在1ms內(nèi)響應(yīng)外部事件請(qǐng)求),并且內(nèi)核可極微(據(jù)說最小可8K),可靠性較高等,所以在北美,Vxworks占據(jù)了嵌入式系統(tǒng)的多半 疆山。特別是在通信設(shè)備等實(shí)時(shí)性要求較高的系統(tǒng)中,幾乎非Vxworks莫屬。Vxworks的很多概念和技術(shù)都和Linux很類似,主要是C語言開發(fā)。像Bell-alcatel、Lucent、華為等通信企業(yè)在開發(fā)產(chǎn)品時(shí),Vxworks用得很多。但Vxworks因價(jià)格很高,所以一些小公司或小產(chǎn)品中往往用不 起。目前很多公司都在往嵌入式Linux轉(zhuǎn)(聽說華為目前正在這樣轉(zhuǎn))。但無論如何,Vxworks在一段長(zhǎng)時(shí)間內(nèi)仍是不可動(dòng)搖的。與Vxworks類似 的稍有名的實(shí)時(shí)操作系統(tǒng)還有pSOS、QNX、Nucleus等RTOS。
第二類、嵌入式Linux操作系統(tǒng):Linux的前途除作為服務(wù)器操作系統(tǒng)外,最成功的便是在嵌入式領(lǐng)域的應(yīng)用,原因當(dāng)然是免費(fèi)、開源、支持軟件多、呼擁者眾,這樣嵌入式產(chǎn)品成本會(huì)低。Linux本身不是一個(gè)為嵌入式設(shè)計(jì)的操作系統(tǒng),不是微內(nèi)核的,并且實(shí)時(shí)性不強(qiáng)。
目前應(yīng)用在嵌入式領(lǐng)域的Linux系統(tǒng)主要有兩種:
一種是專為嵌入式設(shè)計(jì)的已被裁減過的Linux系統(tǒng),最常用的是uClinux(不帶MMU功能),目前占較大應(yīng)用份額,可在ARM7上跑;另一種是跑在 ARM 9上的,一般是將Linux2.4.18內(nèi)核移植在其上,可使用更多的Linux功能(當(dāng)然uClinux更可跑在ARM 9上)。很多人預(yù)測(cè),嵌入式Linux預(yù)計(jì)將占嵌入式操作系統(tǒng)的50%以上份額,非常重要。缺點(diǎn)是熟悉Linux的人太少,開發(fā)難度稍大。另外,目前我們 能發(fā)現(xiàn)很多教材和很多大學(xué)都以u(píng)cOS/II為教學(xué)用實(shí)時(shí)操作系統(tǒng),這主要是由于ucOS/II較簡(jiǎn)單,且開源,非常適合入門者學(xué)習(xí)實(shí)時(shí)操作系統(tǒng)原理,但 由于ucOS/II功能有限,實(shí)用用得較少。況且熟悉了Linux開發(fā),不僅在嵌入式領(lǐng)域有用,對(duì)開發(fā)Linux應(yīng)用軟件,對(duì)加深操作系統(tǒng)的認(rèn)識(shí)也有幫 助,可謂一舉多得。據(jù)我所知,目前Intel、Philip都在大搞ARM+LINUX的嵌入式開發(fā),F(xiàn)ujitum則是在自己的處理器上大搞Linux 開發(fā)。目前在嵌入式Linux領(lǐng)域,以下幾個(gè)方面的人特別難找,一是能將Linux移植到某個(gè)新型號(hào)的開發(fā)版上;二是能寫Linux驅(qū)動(dòng)程序的人;三是熟悉Linux內(nèi)核裁減和優(yōu)化的人。不過LINUX有一個(gè)硬傷,就是沒有WINDOWS那樣的友好方便美觀的交互界面,不然微軟帝國(guó)早就守不住了。
第三類、Windows CE嵌入式操作系統(tǒng):Microsoft也看準(zhǔn)了嵌入式的巨大市場(chǎng),MS永遠(yuǎn)是最厲害的,WinCE出來只有幾年時(shí)間,但目前已占據(jù)了很大市場(chǎng)份額,特別是在PDA、手機(jī)、顯示儀表等界面要求較高或者要求快速開發(fā)的場(chǎng)合,WinCE目前已很流行(據(jù)說有一家賣工控機(jī)的公司板子賣得太好,以至來不及為客戶裁減WinCE)。WinCE目前主要為4.2版(.NET),開發(fā)平臺(tái)主要為WinCE 004km.cn 達(dá)內(nèi)教育—中國(guó)IT培訓(xùn)領(lǐng)導(dǎo)品牌
Platform Builder,有時(shí)也用EVC環(huán)境開發(fā)一些較上層的應(yīng)用,由于WinCE開發(fā)都是大家熟悉的VC++環(huán)境,所以我院學(xué)過Windows程序設(shè)計(jì)課程的同 學(xué)都不會(huì)有多大難度,這也是WinCE容易被人們接受的原因,開發(fā)環(huán)境方便快速,微軟的強(qiáng)大技術(shù)支持,WinCE開發(fā)難度遠(yuǎn)低于嵌入式Linux。對(duì)于急于完成,不想拿嵌入式Linux冒險(xiǎn)的開發(fā)場(chǎng)合,WinCE是最合適了(找嵌入式Linux的人可沒那么好找的),畢竟公司不能像學(xué)生學(xué)習(xí)那樣試試看,保證開發(fā)成功更重要。根據(jù)不同的側(cè)重點(diǎn),WinCE還有兩個(gè)特殊版本,一個(gè)是MS PocketPC操作系統(tǒng)專用于PDA上(掌上電腦),另一個(gè)是MS SmartPhone操作系統(tǒng)用于智能手機(jī)上(帶PDA功能的手機(jī)),兩者也都屬于WinCE平臺(tái)。在PDA和手機(jī)市場(chǎng)上,除WinCE外,著名的PDA 嵌入式操作系統(tǒng)還有Palm OS(因出現(xiàn)很早,很有名)、Symbian等,但在WinCE的強(qiáng)勁沖擊下,Palm和Symbian來日還能有多長(zhǎng)?同學(xué)學(xué)過VC++后再學(xué) WinCE,非常方便自然,通過學(xué)習(xí)WinCE同樣也可了解嵌入式軟件的一般開發(fā)過程,對(duì)Linux有懼怕心理的同學(xué)也很合適。很顯然,嵌入式Linux 永遠(yuǎn)不可能替代WinCE,而且將來誰占份額大還很難講,畢竟很多人更愿意接受MS的平臺(tái),就像各國(guó)政府都在大力推LINUX已好長(zhǎng)時(shí)間,但你能看到幾個(gè) 在PC機(jī)上真正使用LINUX的用戶?據(jù)我觀察,目前在嵌入式平臺(tái)上,LINUX是叫得最響,但還是WinCE實(shí)際用得更多.嵌入式LINUX可能更多地是一些有長(zhǎng)遠(yuǎn)產(chǎn)品計(jì)劃的公司,為降低成本而進(jìn)行長(zhǎng)遠(yuǎn)考慮.WinCE和多媒體(如MPEG技術(shù))是微軟亞洲工程院目前做得較多的項(xiàng)目領(lǐng)域之 一,現(xiàn)在社會(huì)很需要精通WinCE的人?,F(xiàn)在有WINCE的智能手機(jī),金山詞霸、WORD、EXCEL、REGEDIT等居然都有 smartphone版的,PC上的MP3、DOC等居然在download時(shí)都可被自動(dòng)轉(zhuǎn)換成smartphone格式,很爽的。完全可用 Windows CE自己開發(fā)一些需要的程序download到自己的手機(jī)上。現(xiàn)在市面銷售PDA智能手機(jī)火爆,MS總是財(cái)源滾滾。
總結(jié)關(guān)于嵌入式操作系統(tǒng)類課程,若你覺得自己功底較深且能鉆研下去,則可去學(xué)嵌入式Linux;若你覺得自己VC++功底較好且想短平快地學(xué)嵌入式開發(fā),自學(xué)WINCE是非常好的選擇。
(3)嵌入式開發(fā)的相關(guān)領(lǐng)域
搞嵌入式若能熟悉嵌入式應(yīng)用的一些主要領(lǐng)域,這樣的人更受企業(yè)歡迎。主要的相關(guān)領(lǐng)域包括:
A、數(shù)字圖像壓縮技術(shù):這是嵌入式最重要最熱門的應(yīng)用領(lǐng)域之一,主要是應(yīng)掌握MPEG編解碼算法和技術(shù),如DVD、MP3、PDA、高精電視、機(jī)頂盒等都涉及MPEG高速解碼問題。
B、通信協(xié)議及編程技術(shù):這包括傳統(tǒng)的TCP/IP協(xié)議和熱門的無線通信協(xié)議。首先,大多數(shù)嵌入式設(shè)備都要連入局域網(wǎng)或Internet,所以首先應(yīng)掌握 TCP/IP協(xié)議及其編程,這是需首要掌握的基本技術(shù);其次,無線通信是目前的大趨勢(shì),所以掌握無線通信協(xié)議及編程也是是很重要的。無線通信協(xié)議包括無線 局域網(wǎng)通信協(xié)議802.11系列,Bluetooth,以及移動(dòng)通信(如GPRS、GSM、CDMA等)。
004km.cn 達(dá)內(nèi)教育—中國(guó)IT培訓(xùn)領(lǐng)導(dǎo)品牌
C、網(wǎng)絡(luò)與信息安全技術(shù):如加密技術(shù),數(shù)字證書CA,以及各種網(wǎng)絡(luò)安全設(shè)備,包括硬件防火墻,入侵檢測(cè)IDS,還有防毒墻,IPS等,中國(guó)在這方面還是沒有自己優(yōu)勢(shì)的,我們陳院長(zhǎng)好象正在往這方面發(fā)展.D、DSP技術(shù):DSP是Digital Signal Process數(shù)字信號(hào)處理的意思,DSP處理器通過硬件實(shí)現(xiàn)數(shù)字信號(hào)處理算法,如高速數(shù)據(jù)采集、壓縮、解壓縮、通信等。數(shù)字信號(hào)處理是電子、通信等硬件 專業(yè)的課程,對(duì)于搞軟件的人若能了解一下最好。目前DSP人才較缺。如果有信號(hào)與系統(tǒng)、數(shù)字信號(hào)處理等課程基礎(chǔ),對(duì)于學(xué)習(xí)MPEG編解碼原理會(huì)有很大幫助。
(4)嵌入式開發(fā)的相關(guān)硬件基礎(chǔ)
對(duì)于軟件工程專業(yè)的學(xué)生,從事嵌入式軟件開發(fā),像數(shù)字電路、計(jì)算機(jī)組成原理、嵌入式微處理器結(jié)構(gòu)等硬件課程是較重要的。另外,匯編語言、C/C++ 數(shù)據(jù)結(jié)構(gòu)算法、特別是操作系統(tǒng)等軟件基礎(chǔ)課也是十分重要的。我們的主要目地是能看懂硬件工作原理,但重點(diǎn)應(yīng)是在嵌入式軟件,特別操作系統(tǒng)級(jí)軟件,那將是我們的優(yōu)勢(shì)。我們的研究生里有些是學(xué)電子、通信類專業(yè)過來的,有較好的模擬電路和單片機(jī)基礎(chǔ),學(xué)嵌入式非常合適。嵌入式本身就是從單片機(jī)發(fā)展過來的,只是單片機(jī)不帶OS,而現(xiàn)在很多嵌入式應(yīng)用越來越復(fù)雜,以至不得不引入嵌入式操作系統(tǒng)。另外,為追求更高速的信號(hào)處理速度,現(xiàn)在在一些速度要求較高場(chǎng)合,有不少公司是將一些DSP算法,如MPEG壓縮解壓縮算法等用硬件來實(shí)現(xiàn),這就涉及到HDL數(shù)字電路設(shè)計(jì)技術(shù)及其 FPGA/IP核實(shí)現(xiàn)技術(shù),這方面的人目前市場(chǎng)上也很缺。