如何學(xué)習(xí)arm嵌入式
如何學(xué)習(xí)arm嵌入式
嵌入式從2002年之后就成為很熱門(mén)的職業(yè),這其中以ARM的商用分不開(kāi),下面學(xué)習(xí)啦小編收集了一些關(guān)于學(xué)習(xí)arm嵌入式的方法,希望對(duì)你有幫助
學(xué)習(xí)arm嵌入式方法
基礎(chǔ)部分:基礎(chǔ)打不牢的工程師必然是走不遠(yuǎn)的。
匯編語(yǔ)言、C語(yǔ)言,數(shù)據(jù)結(jié)構(gòu)和算法、操作系統(tǒng)都是必須要懂得的。當(dāng)然了,如果能用開(kāi)發(fā)板把機(jī)械手臂和智能小車(chē)這樣的項(xiàng)目自己動(dòng)手開(kāi)發(fā)一下,效果就更好了,一方面是降低了學(xué)習(xí)的枯燥,另一方面自己動(dòng)了手也會(huì)增加實(shí)際經(jīng)驗(yàn)。
嵌入式應(yīng)用層開(kāi)發(fā):
Linux系統(tǒng)編程、網(wǎng)絡(luò)編程、UcOS、通信協(xié)議及編程技術(shù)、GUI-Qt、圖形化界面開(kāi)發(fā)等等。這部分技術(shù)所對(duì)應(yīng)的工程師是目前國(guó)內(nèi)相當(dāng)缺乏的,也是嵌入式開(kāi)發(fā)者就業(yè)最多的地方。雖然工資沒(méi)有做底層得高,但個(gè)把萬(wàn)還是能夠輕松實(shí)現(xiàn)的。
嵌入式底層開(kāi)發(fā):
linuxkernel(linux內(nèi)核)、rootfile(根文件系統(tǒng)),系統(tǒng)移植,linux驅(qū)動(dòng)程序這些技術(shù)最好都懂一些。你在這里需要用到一個(gè)運(yùn)行計(jì)算能力更強(qiáng)的arm開(kāi)發(fā)板來(lái)做輔助,測(cè)試你的底層代碼是否能夠運(yùn)行,像尚觀提供給學(xué)員的就是cortex—a9的三星 exnoys 4412四核平臺(tái)。
學(xué)習(xí)嵌入式系統(tǒng)之基礎(chǔ)知識(shí)
1、Linux 基礎(chǔ)
安裝Linux操作系統(tǒng):Linux文件系統(tǒng) ,Linux常用命令,Linux啟動(dòng)過(guò)程詳解,熟悉Linux服務(wù)能夠獨(dú)立安裝Linux操作系統(tǒng),能夠熟練使用Linux系統(tǒng)的基本命令,認(rèn)識(shí)Linux系統(tǒng)的常用服務(wù)安裝Linux操作系統(tǒng),Linux基本命令實(shí)踐,設(shè)置Linux環(huán)境變量,定制Linux的服務(wù),Shell 編程基礎(chǔ)使用vi編輯文件,使用Emacs編輯文件,使用其他編輯器。
2、Shell 編程基礎(chǔ)
Shell簡(jiǎn)介:認(rèn)識(shí)后臺(tái)程序Bash編程熟悉Linux系統(tǒng)下的編輯環(huán)境,熟悉Linux下的各種Shell,熟練進(jìn)行shell編程熟悉vi基本操作,熟悉Emacs的基本操作,比較不同shell的區(qū)別,編寫(xiě)一個(gè)測(cè)試服務(wù)器是否連通的shell腳本程序,編寫(xiě)一個(gè)查看進(jìn)程是否存在的shell腳本程序,編寫(xiě)一個(gè)帶有循環(huán)語(yǔ)句的shell腳本程序。
3、Linux下的 C 編程基礎(chǔ)
linux C語(yǔ)言環(huán)境概述:Gcc使用方法:Gdb調(diào)試技術(shù),Autoconf Automake Makefile,代碼優(yōu)化,熟悉Linux系統(tǒng)下的開(kāi)發(fā)環(huán)境,熟悉Gcc編譯器,熟悉Makefile規(guī)則編寫(xiě)Hello,World程序,使用make命令編譯程序,編寫(xiě)帶有一個(gè)循環(huán)的程序,調(diào)試一個(gè)有問(wèn)題的程序。
4、嵌入式系統(tǒng)開(kāi)發(fā)基礎(chǔ)
嵌入式系統(tǒng)概述:交叉編譯配置TFTP服務(wù),配置NFS服務(wù),下載Bootloader和內(nèi)核,嵌入式Linux應(yīng)用軟件開(kāi)發(fā)流程熟悉嵌入式系統(tǒng)概念以及開(kāi)發(fā)流程,建立嵌入式系統(tǒng)開(kāi)發(fā)環(huán)境制作cross_gcc工具鏈,編譯并下載U-boot 編譯并下載Linux內(nèi)核編譯并下載Linux應(yīng)用程序。
5、嵌入式系統(tǒng)移植
Linux內(nèi)核代碼:平臺(tái)相關(guān)代碼分析,ARM平臺(tái)介紹,平臺(tái)移植的關(guān)鍵技術(shù),移植Linux內(nèi)核到ARM平臺(tái),了解移植的概念,能夠移植Linux內(nèi)核移植Linux2.6內(nèi)核到arm9開(kāi)發(fā)板。
6、嵌入式 Linux 下串口通信
串行I/O的基本概念:嵌入式Linux應(yīng)用軟件開(kāi)發(fā)流程,Linux系統(tǒng)的文件和設(shè)備,與文件相關(guān)的系統(tǒng)調(diào)用,配置超級(jí)終端和MiniCOM能夠熟悉進(jìn)行串口通信,熟悉文件I/O,編寫(xiě)串口通信程序,編寫(xiě)多串口通信程序。
7、嵌入式系統(tǒng)中多進(jìn)程程序設(shè)計(jì)
Linux系統(tǒng)進(jìn)程概述:嵌入式系統(tǒng)的進(jìn)程特點(diǎn),進(jìn)程操作,守護(hù)進(jìn)程,相關(guān)的系統(tǒng)調(diào)用了解Linux系統(tǒng)中進(jìn)程的概念,能夠編寫(xiě)多進(jìn)程程序編寫(xiě)多進(jìn)程程序,編寫(xiě)一個(gè)守護(hù)進(jìn)程程序,sleep系統(tǒng)調(diào)用任務(wù)管理、同步與通信Linux任務(wù)概述任務(wù)調(diào)度管道、信號(hào)共享內(nèi)存,任務(wù)管理 API,了解Linux系統(tǒng)任務(wù)管理機(jī)制,熟悉進(jìn)程間通信的幾種方式,熟悉嵌入式Linux中的任務(wù)間同步與通信編寫(xiě)一個(gè)簡(jiǎn)單的管道程序?qū)崿F(xiàn)文件傳輸,編寫(xiě)一個(gè)使用共享內(nèi)存的程序。
嵌入式系統(tǒng)的分層與專(zhuān)業(yè)的分類(lèi)
1、硬件層,是整個(gè)嵌入式系統(tǒng)的根本,如果現(xiàn)在單片機(jī)及接口這塊很熟悉,并且能用C和匯編語(yǔ)言來(lái)編程的話(huà),從嵌入式系統(tǒng)的硬件層走起來(lái)相對(duì)容易,硬件層也是驅(qū)動(dòng)層的基礎(chǔ),一個(gè)優(yōu)秀的驅(qū)動(dòng)工程師是要能夠看懂硬件的電路圖和自行完成CPLD的邏輯設(shè)計(jì)的,同時(shí)還要對(duì)操作系統(tǒng)內(nèi)核及其調(diào)度性相當(dāng)?shù)氖煜さ?。但硬件平臺(tái)是基礎(chǔ),增值還要靠軟件。
硬件層比較適合于,電子、通信、自動(dòng)化、機(jī)電一體、信息工程類(lèi)專(zhuān)業(yè)的人來(lái)搞,需要掌握的專(zhuān)業(yè)基礎(chǔ)知識(shí)有,單片機(jī)原理及接口技術(shù)、微機(jī)原理及接口技術(shù)、C語(yǔ)言。
2、驅(qū)動(dòng)層,這部分比較難,驅(qū)動(dòng)工程師不僅要能看懂電路圖還要能對(duì)操作系統(tǒng)內(nèi)核十分的精通,以便其所寫(xiě)的驅(qū)動(dòng)程序在系統(tǒng)調(diào)用時(shí),不會(huì)獨(dú)占操作系統(tǒng)時(shí)間片,而導(dǎo)至其它任務(wù)不能動(dòng)行,不懂操作系統(tǒng)內(nèi)核架構(gòu)和實(shí)時(shí)調(diào)度性,沒(méi)有良好的驅(qū)動(dòng)編寫(xiě)風(fēng)格,按大多數(shù)書(shū)上所說(shuō)添加的驅(qū)動(dòng)的方式,很多人都能做到,但可能連個(gè)初級(jí)的驅(qū)動(dòng)工程師的水平都達(dá)不到,這樣所寫(xiě)的驅(qū)動(dòng)在應(yīng)用調(diào)用時(shí)就如同windows下我們打開(kāi)一個(gè)程序運(yùn)行后,再打開(kāi)一個(gè)程序時(shí),要不就是中斷以前的程序,要不就是等上一會(huì)才能運(yùn)行后來(lái)打開(kāi)的程序。想做個(gè)好的驅(qū)動(dòng)人員沒(méi)有三、四年功底,操作系統(tǒng)內(nèi)核不研究上幾編,不是太容易成功的,但其工資在嵌入式系統(tǒng)四層中可是最高的。
驅(qū)動(dòng)層比較適合于電子、通信、自動(dòng)化、機(jī)電一體、信息工程類(lèi)專(zhuān)業(yè)尤其是計(jì)算機(jī)偏體系結(jié)構(gòu)類(lèi)專(zhuān)業(yè)的人來(lái)搞,除硬件層所具備的基礎(chǔ)學(xué)科外,還要對(duì)數(shù)據(jù)結(jié)構(gòu)與算法、操作系統(tǒng)原理、編譯原理都要十分精通了解。
3、操作系統(tǒng)層,對(duì)于操作系統(tǒng)層目前可能只能說(shuō)是簡(jiǎn)單的移植,而很少有人來(lái)自已寫(xiě)操作系統(tǒng),或者寫(xiě)出缺胳膊少腿的操作系統(tǒng)來(lái),這部分工作大都由驅(qū)動(dòng)工程師來(lái)完成。操作系統(tǒng)是負(fù)責(zé)系統(tǒng)任務(wù)的調(diào)試、磁盤(pán)和文件的管理,而嵌入式系統(tǒng)的實(shí)時(shí)性十分重要。據(jù)說(shuō),XP操作系統(tǒng)是微軟投入300人用兩年時(shí)間才搞定的,總時(shí)工時(shí)是600人年,中科院軟件所自己的女?huà)zHopen操作系統(tǒng)估計(jì)也得花遇幾百人年才能搞定。因此這部分工作相對(duì)來(lái)講沒(méi)有太大意義。
4、應(yīng)用層,相對(duì)來(lái)講較為容易的,如果會(huì)在windows下如何進(jìn)行編程接口函數(shù)調(diào)用,到操作系統(tǒng)下只是編譯和開(kāi)發(fā)環(huán)境有相應(yīng)的變化而已。如果涉及Jave方面的編程也是如此的。嵌入式系統(tǒng)中涉及算法的由專(zhuān)業(yè)算法的人來(lái)處理的,不必歸結(jié)到嵌入式系統(tǒng)范疇內(nèi)。但如果涉及嵌入式系統(tǒng)下面嵌入式數(shù)據(jù)庫(kù)、基于嵌入式系統(tǒng)的網(wǎng)絡(luò)編程和基于某此應(yīng)用層面的協(xié)議應(yīng)用開(kāi)發(fā)(比如基于SIP、H.323、Astrisk)方面又較為復(fù)雜,并且有難度了。
猜你感興趣: