第一篇:嵌入式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盤的文件映射過來(lái),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í)心得
LPC2136是ARM7架構(gòu),是32位地址總線和數(shù)據(jù)總線,可以尋址的范圍為2的32次方
=4GB(0x00000000~0xFFFFFFFF)
我們的程序在哪里運(yùn)行?
還記得我們?cè)谧觥芭荞R燈”和“蜂鳴器”兩個(gè)實(shí)驗(yàn),用ads1.2中建立工程文件的時(shí)候有設(shè)置三個(gè)地址:
RO Base :0x40000000
RW Base :0x40001000
Image entry point :0x40000000
開始沒有講為什么,通過上面的系統(tǒng)存儲(chǔ)器映射圖解不知大家是否有所悟。LPC2136內(nèi)部自帶32KB RAM和256KB FLASH。
32KB RAM分布在整個(gè)CPU存儲(chǔ)器空間的0x40000000~0x40007FFF;
256KB FLASH分布在整個(gè)CPU存儲(chǔ)器空間的0x00000000~0x0003 FFFF;
RO Base是告訴編譯系統(tǒng)把編譯生成的目標(biāo)碼放在0x40000000起始的位置,也就是代碼段存放在0x40000000開始的位置。
RW Base告訴編譯系統(tǒng)把各種變量(常量放在RO開始的位置),堆棧放在0x40001000起始的位置。
Image entry point:是告訴編譯系統(tǒng)程序入口點(diǎn)在0x40000000,即程序從這個(gè)地址開始執(zhí)行。(此部分在附錄二中細(xì)說(shuō))
Flash與RAM的區(qū)別
通過以上所說(shuō),好像FLASH在這里沒什么用,如果你的RO地址定位在RAM中,那么FLASH確實(shí)沒有用。但FLASH是必須的功能部件。
Flash的作用也許要從其與RAM的區(qū)別說(shuō)起:
區(qū)別一:RAM是易失性存儲(chǔ)器,F(xiàn)lash是非易失性存儲(chǔ)器。通俗的說(shuō),存儲(chǔ)在RAM中的數(shù)據(jù)掉電后數(shù)據(jù)丟失;而存儲(chǔ)在FLASH中的數(shù)據(jù)掉電后任然保持。(必須通過工具或特殊命令來(lái)擦除)
區(qū)別二:RAM是可讀寫存儲(chǔ)器,F(xiàn)lash只讀存儲(chǔ)器。(也許有人要問,F(xiàn)lash難道不能寫嗎?Flash可以寫,但不能象RAM一樣做簡(jiǎn)單賦值操作,必須通過Flash寫命令寫,而且寫入數(shù)據(jù)的最小單位為512字節(jié),即一個(gè)扇區(qū))
區(qū)別三:RAM訪問速度快,而Flash訪問速度慢的多。
區(qū)別四:RAM價(jià)格昂貴,F(xiàn)lash便宜。
FLASH有何用途
我們一般在調(diào)試程序的時(shí)候?yàn)榱颂岣唛_發(fā)進(jìn)度,都把程序放在RAM中調(diào)試,在RAM中調(diào)試有一個(gè)缺陷就是每次上電必須下載程序到板子上,當(dāng)產(chǎn)品的各個(gè)模塊調(diào)試OK,產(chǎn)品就要實(shí)現(xiàn)脫機(jī)功能,即把程序燒寫到FLASH中,這樣就不需要每次上電加載程序。我們手中拿的手機(jī),在開發(fā)階段都是在RAM(SDRAM)中調(diào)試的,開發(fā)完成,要發(fā)布的時(shí)候就把程序燒到FLASH,這樣我們開機(jī)有能運(yùn)行FLASH的程序。
第三篇:嵌入式學(xué)習(xí)心得
嵌入式學(xué)習(xí)心得
當(dāng)今社會(huì),嵌入式系統(tǒng)已經(jīng)滲透到人們工作、生活中的各個(gè)領(lǐng)域,嵌入式處理器已占分散處理器市場(chǎng)份額的94%。而嵌入式Linux系統(tǒng)也蓬勃發(fā)展,不僅繼承了Linux源碼開放、內(nèi)核穩(wěn)定高效、軟件豐富等優(yōu)勢(shì),還具備支持廣泛處理器結(jié)構(gòu)和硬件平臺(tái)、占有空間小、成本低廉、結(jié)構(gòu)緊湊等特點(diǎn)。
我很幸運(yùn)接觸了嵌入式,在嵌入式實(shí)驗(yàn)我知道了構(gòu)建嵌入式系統(tǒng)的開發(fā)環(huán)境明白了交叉編譯:交叉編譯的環(huán)境建立在宿主機(jī)上,而對(duì)應(yīng)的開發(fā)板為目標(biāo)機(jī)。為了使宿主機(jī)上開發(fā)的程序能夠方便的下載到目標(biāo)機(jī)上運(yùn)行,一般還要在宿主機(jī)上配置好網(wǎng)絡(luò),使其支持NFS或tftp等網(wǎng)絡(luò)服務(wù),從而達(dá)到兩臺(tái)機(jī)器之間的文件共享,知道了宿主機(jī)與目標(biāo)機(jī)之間的關(guān)系:在嵌入式系統(tǒng)開發(fā)過程中,由于可執(zhí)行程序的編譯過程和執(zhí)行過程分別在宿主機(jī)和目標(biāo)機(jī)上完成,因此實(shí)現(xiàn)宿主機(jī)和目標(biāo)機(jī)之間的實(shí)時(shí)交互能夠大幅度提高嵌入式系統(tǒng)開發(fā)的效率。由于目標(biāo)機(jī)也帶有操作系統(tǒng),因此可以通過實(shí)現(xiàn)不同機(jī)器之間的網(wǎng)絡(luò)共享來(lái)完成實(shí)時(shí)交互。宿主機(jī)開發(fā)程序,而目標(biāo)機(jī)作為最后的執(zhí)行機(jī)。兩者在開發(fā)時(shí)需要交替結(jié)合進(jìn)行。知道了UBOOT移植、UBOOT編譯、UBOOT燒寫。LINUX內(nèi)核的移植、LINUX內(nèi)核燒寫。LINUX驅(qū)動(dòng)程序的編寫系統(tǒng)調(diào)用是操作系統(tǒng)內(nèi)核和應(yīng)用程序之間的接口,設(shè)備驅(qū)動(dòng)程序是操作系統(tǒng)內(nèi)核和機(jī)器硬件之間的接口.設(shè)備驅(qū)動(dòng)程序?yàn)閼?yīng)用程序屏蔽了硬件的細(xì)節(jié),這樣在應(yīng)用程序看來(lái),硬件設(shè)備只是一個(gè)設(shè)備文件,應(yīng)用程序可以像操作普通文件一樣對(duì)硬件設(shè)備進(jìn)行操作.設(shè)備驅(qū)動(dòng)程序是內(nèi)核的一部分,它完成以下的功能:對(duì)設(shè)備初始化和釋放、把數(shù)據(jù)從內(nèi)核傳送到硬件和從硬件讀取數(shù)據(jù)、讀取應(yīng)用程序傳送給設(shè)備文件的數(shù)據(jù)和回送應(yīng)用程序請(qǐng)求的數(shù)據(jù)、檢測(cè)和處理設(shè)備出現(xiàn)的錯(cuò)誤.在Linux操作系統(tǒng)下有兩類主要的設(shè)備文件類型,一種是字符設(shè)備,另一種是塊設(shè)備.字符設(shè)備和塊設(shè)備的主要區(qū)別是:在對(duì)字符設(shè)備發(fā)出讀/寫請(qǐng)求時(shí),實(shí)際的硬件I/O一般就緊接著發(fā)生了,塊設(shè)備則不然,它利用一塊系統(tǒng)內(nèi)存作緩沖區(qū),當(dāng)用戶 進(jìn)程對(duì)設(shè)備請(qǐng)求能滿足用戶的要求,就返回請(qǐng)求的數(shù)據(jù),如果不能,就調(diào)用請(qǐng)求函數(shù)來(lái)進(jìn)行實(shí)際的I/O操作.塊設(shè)備是主要針對(duì)磁盤等慢速設(shè)備設(shè)計(jì)的,以免耗費(fèi) 過多的CPU時(shí)間來(lái)等待.、DM6446 USB驅(qū)動(dòng)編寫。ARM+DSP雙處理器開發(fā)實(shí)驗(yàn)。在這些實(shí)驗(yàn)當(dāng)中我遇到了很多問題,因?yàn)槭堑谝淮谓佑|linux,很多命令都不清楚,操作起來(lái)很不方便,使實(shí)驗(yàn)進(jìn)度很慢,并且很多命令也是比葫蘆畫瓢,根本不知道為什么這么用,所以導(dǎo)致命令不熟練,下次操作時(shí)依然需要回憶。在程序開發(fā)中我在課下熟悉了shell命令以后,對(duì)一般的操作也算了解,我明白了問題就如爬山:不怕慢就怕站,只要我慢慢積累我就會(huì)學(xué)到應(yīng)該如何編寫我自己的程序,搭建我自己的嵌入式系統(tǒng)。盡管我們已經(jīng)懂得了一些皮毛但是前方的路依然任重道遠(yuǎn),要想把我們專業(yè)的優(yōu)勢(shì)發(fā)揮出來(lái)就需要軟硬件結(jié)合,這無(wú)疑是一次巨大的契機(jī),我感覺在結(jié)
課以后我們一定仔細(xì)想在實(shí)驗(yàn)中做的不足,以及實(shí)驗(yàn)中給我的資源我如何合理的應(yīng)用。畢竟學(xué)無(wú)止境,我也看看其他論壇上應(yīng)該建議我們?nèi)绾螌W(xué)習(xí)嵌入式,但是眾說(shuō)紛紜,我不應(yīng)該關(guān)注別人做了什么,但是我應(yīng)該明白我的每一次付出會(huì)有什么收獲,畢竟再多的參考也比不上你的實(shí)際情況,正如我們的dm6446它的學(xué)習(xí)方式與一般的arm還是有區(qū)別的,所以要因材施教。其實(shí)在你想做嵌入式Linux的時(shí)候,要對(duì)自己有信心。很可能自己以前學(xué)習(xí)的不是這個(gè)專業(yè)或者以前沒有接觸過,就像我一樣,我以前也沒接觸過嵌入式,一旦我們確定了自己要做嵌入式,我想擺在我們面前的最大的一個(gè)難題就是,嵌入式對(duì)我們很模糊,好想心理面有好多好多陰霾,不用怕,請(qǐng)相信自己,新手都是這樣,有疑團(tuán),才會(huì)激發(fā)我們探索的動(dòng)力和激情。相信自己,在不久的將來(lái)自己會(huì)摸到嵌入式的棱角的,摸清他的面貌的。把學(xué)習(xí)穿插到日常生活中。一旦決定要學(xué),就從現(xiàn)在開始學(xué)習(xí),永遠(yuǎn)不要希望人的一生會(huì)騰出一段時(shí)間來(lái)讓你去專門學(xué)習(xí)嵌入式的,就像當(dāng)你出生的時(shí)候,永遠(yuǎn)不可能會(huì)專門騰出一段時(shí)間來(lái)讓你專門學(xué)走路,最終情況是你學(xué)走路的同時(shí)很可能也在學(xué)習(xí)說(shuō)話,學(xué)習(xí)吃飯。所以,對(duì)于學(xué)生來(lái)說(shuō),永遠(yuǎn)不要試圖把學(xué)習(xí)嵌入式挪到假期,因?yàn)槟悴荒茴A(yù)料到假期你會(huì)發(fā)生什么而耽誤你學(xué)習(xí)的時(shí)間。需要用到什么學(xué)什么。不要企圖把Linux,arm等所謂的什么教程之內(nèi)的書看完了再去做開發(fā)。個(gè)人覺得Linux,只要知道大概,只要知道簡(jiǎn)單的命令,會(huì)用就可以了,但是gcc,gdb一定要掌握,然后就是要掌握嵌入式Linux和Linux開發(fā)環(huán)境的配置。嵌入式Linux是在開發(fā)板里面的Linux。而單純的說(shuō)Linux說(shuō)的是PC上的Linux。遇到問題,我們就去解決,要解決,我們就可以翻書,查資料,這樣既可以縮短項(xiàng)目開發(fā)周期,又可以學(xué)習(xí),這樣就避免了可能你把一本關(guān)于Linux的書看完了,你還不知道如何去做嵌入式Linux開發(fā)。不管你要做什么開發(fā),裝上Linux后,請(qǐng)安裝英文版的,并且盡量在無(wú)圖形界面寫工作。因?yàn)楹芏喙径济鞔_禁止用Linux圖形界面和中文版的。不管做什么開發(fā),應(yīng)用開發(fā),或者是驅(qū)動(dòng)開發(fā),都要先編譯內(nèi)核,因?yàn)橛泻枚辔募侵挥心憔幾g內(nèi)核之后才能產(chǎn)生的,而這些文件,很可能就是你要用的。做應(yīng)用開發(fā),首先用從讀懂驅(qū)動(dòng)入手。不要求你會(huì)寫驅(qū)動(dòng),但是起碼要讀懂驅(qū)動(dòng),這樣才有助于應(yīng)用開發(fā)除非你的嵌入式開發(fā)板是跑裸機(jī),也就是沒有Linux系統(tǒng),你可以操作arm的寄存器,可以直接操作硬件,比如JTAG仿真就是。其他情況,一旦你有Linux系統(tǒng),你的程序時(shí)不可能直接操作硬件的。明白這一點(diǎn),你就不會(huì)向我一樣,開始做嵌入式Linux應(yīng)用的時(shí)候以為可以和單片機(jī)一樣,直接控制引腳來(lái)寫程序了。有了Linux,用主要用的系統(tǒng)提供給用戶的接口。
要時(shí)刻把握每一次提高自己的機(jī)會(huì)!
第四篇:嵌入式學(xué)習(xí)心得
嵌入式學(xué)習(xí)心得
時(shí)間過的緊快,在粵嵌教育已經(jīng)培訓(xùn)有5個(gè)月了,培訓(xùn)期間收獲很多,也認(rèn)識(shí)了班上的學(xué)習(xí)大神,經(jīng)過系統(tǒng)的學(xué)習(xí),老師的細(xì)心指導(dǎo),我的付出努力,對(duì)于嵌入式上,學(xué)到很多實(shí)用的知識(shí),在動(dòng)手操作能力也加強(qiáng)了,不僅在專業(yè)技術(shù)方面有了很大進(jìn)步,而且在實(shí)踐操作方面我也對(duì)嵌入式有了更深入的了解。也許這5個(gè)月是我在外面學(xué)習(xí)和生活最寶貴的時(shí)間。
在校兩年,讀于電子信息工程技術(shù)專業(yè)的我,就覺得這專業(yè)學(xué)的知識(shí)太廣了,不管基礎(chǔ)還是動(dòng)手操作,都要比較靈活。在校期間,學(xué)習(xí)單片機(jī),傳感器,C語(yǔ)言,嵌入式應(yīng)用技術(shù)等課程。感覺學(xué)起來(lái),對(duì)我來(lái)說(shuō)接受還是比較快的,那時(shí)就有想過:學(xué)的多不如學(xué)的巧,也許在校對(duì)課程多于理論為主,理解它的原理和基本編程方式。其實(shí),我還是有努力去學(xué)的,可以說(shuō),在??迫卫蠋煻冀虝?huì)我很多專業(yè)知識(shí),為我將來(lái)的學(xué)習(xí)和發(fā)展打好基礎(chǔ)。
在大三期間,為了更明確自己要走的方向,去培訓(xùn)嵌入式軟件開發(fā)。也許將要投身嵌入式行業(yè)的我,就注定這條路要付出很多時(shí)間和精力,但可能我好求比較強(qiáng),接受還行,就不停給自己打氣,努力!要去培訓(xùn)嵌入式時(shí),我從網(wǎng)上也對(duì)它有更加的理解,也看下大2學(xué)的嵌入式應(yīng)用技術(shù)書,嵌入式系統(tǒng)是軟件和硬件的綜合體,以應(yīng)用為中心,以計(jì)算機(jī)技術(shù)為基礎(chǔ),軟硬件可裁剪,適應(yīng)應(yīng)用系統(tǒng)對(duì)功能、可靠性、成本、體積、功耗等嚴(yán)格要求的專用計(jì)算機(jī)系統(tǒng)。剛開始嵌入式學(xué)習(xí),對(duì)Linux系統(tǒng)的知識(shí)加于鞏固。一些簡(jiǎn)單的代碼,C語(yǔ)言,對(duì)于嵌入式軟件還是硬件開發(fā)的人員,對(duì)C語(yǔ)言的掌握這個(gè)是必需的,特別是對(duì)于以后致力于嵌入式軟件開發(fā)的人,現(xiàn)在絕大部分都是用C語(yǔ)言。在下來(lái)幾個(gè)月就對(duì)Linux系統(tǒng),數(shù)據(jù)結(jié)構(gòu)、系統(tǒng)移植的方法、A8的體系結(jié)構(gòu)、Linux內(nèi)核及驅(qū)動(dòng)設(shè)計(jì)、android、C+Java的JNI應(yīng)用編程的系統(tǒng)學(xué)習(xí)。在每學(xué)個(gè)階段就作一個(gè)考試,對(duì)前面所學(xué)的知識(shí)進(jìn)行復(fù)習(xí),有些會(huì)做一個(gè)簡(jiǎn)單的小項(xiàng)目,學(xué)以致用。知識(shí)量還是比較多,但教學(xué)也比較快,有些知識(shí)還沒消化完,第二天又接受新知識(shí),對(duì)于能在課上就可以對(duì)知識(shí)完全懂的并不多,晚上都用一兩個(gè)小時(shí)來(lái)復(fù)習(xí)。經(jīng)過5個(gè)月系統(tǒng)的學(xué)習(xí),嵌入式技術(shù)方面有了很大進(jìn)步,實(shí)踐操作方面也對(duì)嵌入式有了更深入的了解。在最后一個(gè)月,基于A8(S5PV210)的嵌入式智能家居系統(tǒng)制作。
下面我談?wù)勗诨浨督逃呐嘤?xùn)感受,我培訓(xùn)的地點(diǎn)是在科學(xué)城粵嵌教育培訓(xùn)中心的多媒體課室里,這里有學(xué)習(xí)環(huán)境非常好,在緊張的學(xué)習(xí)的過程中,你可以得到名師的指導(dǎo),也可以體會(huì)到一流企業(yè)高質(zhì)量的培訓(xùn)。在課堂上,老師們認(rèn)真的演講,以及手把手地教導(dǎo),使每個(gè)學(xué)生都能夠扎實(shí)地掌握到嵌入式的各方面的知識(shí)。而粵嵌教育的老師也是操作實(shí)踐為主,實(shí)踐是非常重要的,只有把知識(shí)掌握到位,才能達(dá)到學(xué)習(xí)的目的。感謝粵嵌教育機(jī)構(gòu),感謝粵嵌教育老師。
第五篇:嵌入式學(xué)習(xí)心得
嵌入式學(xué)習(xí)心得
如何學(xué)習(xí)嵌入式系統(tǒng)(基于ARM平臺(tái))
前言
網(wǎng)上看到眾多網(wǎng)友都問了關(guān)于嵌入式系統(tǒng)方面的很多問題,很多都可在這里找到答案,希望我的這篇文章能給他們以啟發(fā)。也請(qǐng)大家不要輕易轉(zhuǎn)載。
一、嵌入式系統(tǒng)的概念
著重理解“嵌入”的概念
主要從三個(gè)方面上來(lái)理解。
1、從硬件上,將基于CPU的處圍器件,整合到CPU芯片內(nèi)部,比如早期基于X86體系結(jié)構(gòu)下的計(jì)算機(jī),CPU只是有運(yùn)算器和累加器的功能,一切芯片要造外部橋路來(lái)擴(kuò)展實(shí)現(xiàn),象串口之類的都是靠外部的16C550/2的串口控制器芯片實(shí)現(xiàn),而目前的這種串口控制器芯片早已集成到CPU內(nèi)部,還有PC機(jī)有顯卡,而多數(shù)嵌入式處理器都帶有LCD控制器,但其種意義上就相當(dāng)于顯卡。比較高端的ARM類Intel Xscale架構(gòu)下的IXP網(wǎng)絡(luò)處理器CPU內(nèi)部集成PCI控制器(可配成支持4個(gè)PCI從設(shè)備或配成自身為CPI從設(shè)備);還集成3個(gè)NPE網(wǎng)絡(luò)處理器引擎,其中兩個(gè)對(duì)應(yīng)于兩個(gè)MAC地址,可用于網(wǎng)關(guān)交換用,而另外一個(gè)NPE網(wǎng)絡(luò)處理器引擎支持DSL,只要外面再加個(gè)PHY芯片即可以實(shí)現(xiàn)DSL上網(wǎng)功能。IXP系列最高主頻可以達(dá)到1.8G,支持2G內(nèi)存,1G×10或10G×1的以太網(wǎng)口或Febre channel的光通道。IXP系列應(yīng)該是目標(biāo)基于ARM體系統(tǒng)結(jié)構(gòu)下由intel進(jìn)行整合后成Xscale內(nèi)核的最高的處理器了。
2、從軟件上前,就是在定制操作系統(tǒng)內(nèi)核里將應(yīng)用一并選入,編譯后將內(nèi)核下載到ROM中。而在定制操作系統(tǒng)內(nèi)核時(shí)所選擇的應(yīng)用程序組件就是完成了軟件的“嵌入”,比如WinCE在內(nèi)核定制時(shí),會(huì)有相應(yīng)選擇,其中就是wordpad,PDF,MediaPlay等等選擇,如果我們選擇了,在CE啟動(dòng)后,就可以在界面中找到這些東西,如果是以前PC上將的windows操作系統(tǒng),多半的東西都需要我們得新再裝。
3、把軟件內(nèi)核或應(yīng)用文件系統(tǒng)等東西燒到嵌入式系統(tǒng)硬件平臺(tái)中的ROM中就實(shí)現(xiàn)了一個(gè)真正的“嵌入”。
以上的定義是我在6、7年前給嵌入式系統(tǒng)下自話側(cè)重于理解型的定義,書上的定義也有很多,但在這個(gè)領(lǐng)域范圍內(nèi),誰(shuí)都不敢說(shuō)自己的定義是十分確切的,包括那些專家學(xué)者們,歷為畢竟嵌入式系統(tǒng)是計(jì)算機(jī)范疇下的一門綜合性學(xué)科
二、嵌入式系統(tǒng)的分層與專業(yè)的分類。
嵌入式系統(tǒng)分為4層,硬件層、驅(qū)動(dòng)層、操作系統(tǒng)層和應(yīng)用層。
1、硬件層,是整個(gè)嵌入式系統(tǒng)的根本,如果現(xiàn)在單片機(jī)及接口這塊很熟悉,并且能用C和匯編語(yǔ)言來(lái)編程的話,從嵌入式系統(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ī)電一體、信息工程類專業(yè)的人來(lái)搞,需要掌握的專業(yè)基礎(chǔ)知識(shí)有,單片機(jī)原理及接口技術(shù)、微機(jī)原理及接口技術(shù)、C語(yǔ)言。
2、驅(qū)動(dòng)層,這部分比較難,驅(qū)動(dòng)工程師不僅要能看懂電路圖還要能對(duì)操作系統(tǒng)內(nèi)核十分的精通,以便其所寫的驅(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)度性,沒有良好的驅(qū)動(dòng)編寫風(fēng)格,按大多數(shù)書上所說(shuō)添加的驅(qū)動(dòng)的方式,很多人都能做到,但可能連個(gè)初級(jí)的驅(qū)動(dòng)工程師的水平都達(dá)不到,這樣所寫的驅(qū)動(dòng)在應(yīng)用調(diào)用時(shí)就如同windows下我們打開一個(gè)程序運(yùn)行后,再打開一個(gè)程序時(shí),要不就是中斷以前的程序,要不就是等上一會(huì)才能運(yùn)行后來(lái)打開的程序。想做個(gè)好的驅(qū)動(dòng)人員沒有三、四年功底,操作系統(tǒng)內(nèi)核不研究上幾編,不是太容易成功的,但其工資在嵌入式系統(tǒng)四層中可是最高的。
驅(qū)動(dòng)層比較適合于電子、通信、自動(dòng)化、機(jī)電一體、信息工程類專業(yè)尤其是計(jì)算機(jī)偏體系結(jié)構(gòu)類專業(yè)的人來(lái)搞,除硬件層所具備的基礎(chǔ)學(xué)科外,還要對(duì)數(shù)據(jù)結(jié)構(gòu)與算法、操作系統(tǒng)原理、編譯原理都要十分精通了解。
3、操作系統(tǒng)層,對(duì)于操作系統(tǒng)層目前可能只能說(shuō)是簡(jiǎn)單的移植,而很少有人來(lái)自已寫操作系統(tǒng),或者寫出缺胳膊少腿的操作系統(tǒng)來(lái),這部分工作大都由驅(qū)動(dòng)工程師來(lái)完成。操作系統(tǒng)是負(fù)責(zé)系統(tǒng)任務(wù)的調(diào)試、磁盤和文件的管理,而嵌入式系統(tǒng)的實(shí)時(shí)性十分重要。據(jù)說(shuō),XP操作系統(tǒng)是微軟投入300人用兩年時(shí)間才搞定的,總時(shí)工時(shí)是600人年,中科院軟件所自己的女媧Hopen操作系統(tǒng)估計(jì)也得花遇幾百人年才能搞定。因此這部分工作相對(duì)來(lái)講沒有太大意義。
4、應(yīng)用層,相對(duì)來(lái)講較為容易的,如果會(huì)在windows下如何進(jìn)行編程接口函數(shù)調(diào)用,到操作系統(tǒng)下只是編譯和開發(fā)環(huán)境有相應(yīng)的變化而已。如果涉及Java方面的編程也是如此的。嵌入式系統(tǒng)中涉及算法的由專業(yè)算法的人來(lái)處理的,不必歸結(jié)到嵌入式系統(tǒng)范疇內(nèi)。但如果涉及嵌入式系統(tǒng)下面嵌入式數(shù)據(jù)庫(kù)、基于嵌入式系統(tǒng)的網(wǎng)絡(luò)編程和基于某此應(yīng)用層面的協(xié)議應(yīng)用開發(fā)(比如基于SIP、H.323、Astrisk)方面又較為復(fù)雜,并且有難度了。
三、目標(biāo)與定位。
先有目標(biāo),再去定位。
學(xué)ARM,從硬件上講,一方面就是學(xué)習(xí)接口電路設(shè)計(jì),另一方面就是學(xué)習(xí)匯編和C語(yǔ)言的板級(jí)編程。如果從軟件上講,就是要學(xué)習(xí)基于ARM處理器的操作系統(tǒng)層面的驅(qū)動(dòng)、移植了。這些對(duì)于初學(xué)都來(lái)說(shuō)必須明確,要么從硬件著手開始學(xué),要么從操作系統(tǒng)的熟悉到應(yīng)用開始學(xué),但不管學(xué)什么,只要不是純的操作系統(tǒng)級(jí)以上基于API的應(yīng)用層的編程,硬件的寄存器類的東西還是要能看懂的,基于板級(jí)的匯編和C編程還是要會(huì)的。因此針對(duì)于嵌入式系統(tǒng)的硬件層和驅(qū)動(dòng)程的人,ARM的接口電路設(shè)計(jì)、ARM的C語(yǔ)言和匯編語(yǔ)言編程及調(diào)試開發(fā)環(huán)境還是需要掌握的。
因此對(duì)于初學(xué)者必然要把握住方向,自己的目標(biāo)是什么,自己要在那一層面上走。然后再著手學(xué)習(xí)較好,與ARM相關(guān)的嵌入式系統(tǒng)的較為實(shí)際的兩個(gè)層面硬件層和驅(qū)動(dòng)層,不管學(xué)好了那一層都會(huì)很有前途的。
如果想從嵌入式系統(tǒng)的應(yīng)用層面的走的話,可能與ARM及其它體系相去較遠(yuǎn),要著重研究基嵌入式操作系統(tǒng)的環(huán)境應(yīng)用與相應(yīng)開發(fā)工具鏈,比如WinCe操作系統(tǒng)下的EVC應(yīng)用開發(fā)(與windows下的VC相類似),如果想再有突破就往某些音視頻類的協(xié)議上靠,比如VOIP領(lǐng)域的基于SIP或H.323協(xié)議的應(yīng)用層開發(fā),或是基于嵌入式網(wǎng)絡(luò)數(shù)據(jù)庫(kù)的開發(fā)等等。
對(duì)于初學(xué)者來(lái)講,要量力而行,不要認(rèn)為驅(qū)動(dòng)層工資高就把它當(dāng)成方向了,要結(jié)合自身特點(diǎn),嵌入式系統(tǒng)四個(gè)層面上那個(gè)層面上來(lái)講都是有高人存在,當(dāng)然高人也對(duì)應(yīng)的高工資,我是做硬件層的,以前每月工資中個(gè)人所得稅要被扣上近3千大元,當(dāng)然我一方面充當(dāng)工程師的角色,一方面充當(dāng)主管及人物的角色,兩個(gè)職位我一個(gè)人干,但上班時(shí)間就那些。硬件這方面上可能與我PK的人很少了,才讓我拿到那么多的工資。
四、開發(fā)系統(tǒng)選擇。
很多ARM初學(xué)者都希望有一套自己能用的系統(tǒng),但他們住住會(huì)產(chǎn)生一種錯(cuò)誤認(rèn)識(shí)就是認(rèn)為處理器版本越高、性能越高越好,就象很多人認(rèn)為ARM9與ARM7好,我想對(duì)于初學(xué)者在此方面以此入門還應(yīng)該理智,開發(fā)系統(tǒng)的選擇最終要看自己往嵌入式系統(tǒng)的那個(gè)方向上走,是做驅(qū)動(dòng)開發(fā)還是應(yīng)用,還是做嵌入式系統(tǒng)硬件層設(shè)計(jì)與板級(jí)測(cè)試。如果想從操作系統(tǒng)層面或應(yīng)用層面上走,不管是驅(qū)動(dòng)還是應(yīng)用,那當(dāng)然處理器性能越高越好了,但這個(gè)東西自學(xué),有十分大的困難,不是幾個(gè)月或半年或是一年二年能搞定的事。
在某種意義上請(qǐng),ARM7與9的差別就是在某些功能指令集上豐富了些,主頻提高一些而已,就比如286和386。對(duì)于用戶來(lái)講可能覺查不到什么,只能是感覺速度有些快而已。
ARM7比較適合于那些想從硬件層面上走的人,因?yàn)锳RM7系列處理器內(nèi)部帶MMU的很少,而且比較好控制,就比如S3C44B0來(lái)講,可以很容易將Cache關(guān)了,而且內(nèi)部接口寄存器很容易看明白,各種接口對(duì)于用硬件程序控制或AXD單步命令行指令都可以控制起來(lái),基于51單片機(jī)的思想很容易能把他搞懂,就當(dāng)成個(gè)32位的單片機(jī),從而消除很多51工程師想轉(zhuǎn)為嵌入式系統(tǒng)硬件ARM開發(fā)工程師的困惑,從而不會(huì)被業(yè)界某此不是真正懂嵌入式爛公司帶到操作系統(tǒng)層面上去,讓他們望而失畏,讓業(yè)界更加缺少這方面的人才。
而嵌入式系統(tǒng)不管硬件設(shè)計(jì)還是軟件驅(qū)動(dòng)方面都是十分注重接口這部分的,選擇平臺(tái)還要考察一個(gè)處理器的外部資源,你接觸外部資源越多,越熟悉他們那你以后就業(yè)成功的機(jī)率就越高,這就是招聘時(shí)所說(shuō)的有無(wú)“相關(guān)技能”,因?yàn)橐粋€(gè)人不可能在短短幾年內(nèi)把所有的處理器都接觸一遍,而招聘單位所用的處理器就可能是我們完全沒有見過的,就拿臺(tái)灣數(shù)十家小公司(市價(jià)幾千萬(wàn))的公司生產(chǎn)的ARM類處理器,也很好用,但這些東西通用性太差,用這些處理器的公司就只能招有相關(guān)工作經(jīng)驗(yàn)的人了,那什么是相關(guān)工作經(jīng)驗(yàn),在硬件上講的是外圍接口設(shè)計(jì),在軟件上講是操作系統(tǒng)方面相關(guān)接口驅(qū)動(dòng)及應(yīng)用開發(fā)經(jīng)驗(yàn)。我從業(yè)近十年,2000年ARM出現(xiàn),我一天始做ARM7,然后直接跑到了Xscale(這個(gè)板本在ARM10-11之間),一做就是五年,招人面試都不下數(shù)百人,在這些方面還是深有體會(huì)的。
我個(gè)人認(rèn)為三星的S3C44b0對(duì)初學(xué)者來(lái)說(shuō)比較合適,為什么這么說(shuō)哪?因?yàn)榻涌谫Y源比較豐富,技術(shù)成熟,資料較多,應(yīng)該十分適合于初學(xué)者,有問題可能很容易找人幫且解決,因?yàn)榇蠖鄶?shù)人都很熟悉,就如同51類的單片機(jī),有N多位專家級(jí)的人物可以給你幫忙,相關(guān)問題得以很快解答,所然業(yè)界認(rèn)為這款A(yù)RM都做用得爛了,但對(duì)于初學(xué)者來(lái),就卻是件好事。
因此開發(fā)系統(tǒng)的選擇,要看自己的未來(lái)從來(lái)目標(biāo)方向、要看開發(fā)板接口資源、還要看業(yè)界的通用性。
五、如何看待培訓(xùn)。
首先說(shuō)說(shuō)我自己,我目前從業(yè)近十年,與國(guó)內(nèi)嵌入式系統(tǒng)行業(yè)共同起步,一直站在嵌入式系統(tǒng)行業(yè)前沿,設(shè)計(jì)過多款高端嵌入式系統(tǒng)平臺(tái)產(chǎn)品并為眾多公司提供過解決方案,離職前為從事VOIP的美資公司設(shè)計(jì)IP-PBX,歷任項(xiàng)目經(jīng)理、項(xiàng)目主管、技術(shù)總監(jiān)、部門經(jīng)理,積累眾多人脈,并集多年經(jīng)驗(yàn)所得,考慮到學(xué)生就業(yè)與公司招人的不相匹配,公司想招人招不到,而學(xué)生和剛畢業(yè)的工程師想找份工作也不太容易,于此力創(chuàng)知天行科技有限公司,開展嵌入式系統(tǒng)教育培訓(xùn)。
因一線的科研人員和一線的教師不相接觸,導(dǎo)至國(guó)內(nèi)嵌入式人才缺乏,國(guó)外高校的技術(shù)超前于業(yè)界公司,而國(guó)內(nèi)情況是業(yè)界公司方面的嵌入式系統(tǒng)技術(shù)要遠(yuǎn)遠(yuǎn)領(lǐng)先于高校。為架構(gòu)業(yè)界與高校溝通的橋梁,把先進(jìn)技能帶給高校學(xué)子,為學(xué)生在就業(yè)競(jìng)爭(zhēng)中打造一張王牌,并為業(yè)界工程師快速提升實(shí)現(xiàn)自我創(chuàng)造機(jī)遇,我就這樣辭去了外企年薪20多萬(wàn)的職位,做嵌入式系統(tǒng)方面的培訓(xùn)了。
對(duì)于培訓(xùn)來(lái)講,是花錢來(lái)買時(shí)間,很多工程師都喜歡自己學(xué),認(rèn)為培訓(xùn)不值,這也是有可能的,純?yōu)橘嶅X的培訓(xùn)當(dāng)然不會(huì)太有價(jià)值,但對(duì)于實(shí)力型的培訓(xùn)他們可能就虧大了,有這樣一筆帳不知他們算過沒有,如果一個(gè)一周的培訓(xùn),能帶給他們自學(xué)兩年后才能掌握的知識(shí),在培訓(xùn)完后他們用三個(gè)月到半年時(shí)間消化培訓(xùn)內(nèi)容,這樣他會(huì)省約至少一年半的時(shí)間來(lái)學(xué)其它的或重新站在另一個(gè)高度上工作,那么他將最遲一年后會(huì)拿到他兩年后水平所對(duì)應(yīng)的工資,就是在工資與水平對(duì)應(yīng)的關(guān)系上比同批人縮短一年,每月按最少1千計(jì),再減去培訓(xùn)費(fèi)用至少多1.0萬(wàn),同時(shí)也省了一年時(shí)間,不管是休閑也好,再繼續(xù)提高也好,總之是跑到了隊(duì)伍的前面了。
另一層面上講,對(duì)于新人的培訓(xùn)相當(dāng)于他們?yōu)樽约禾崆百I了份失業(yè)保險(xiǎn),有師傅會(huì)帶領(lǐng)他們?nèi)氲溃医衲晔罴贂r(shí)班里最年輕的一個(gè)學(xué)生是大二的,今年才上大三,這學(xué)期才剛學(xué)單片機(jī),但現(xiàn)在ARM方面的編程工作已經(jīng)搞得有聲有色了,再過一年多畢業(yè),他還會(huì)失業(yè)嗎?
再者通過培訓(xùn),你可以知道很多業(yè)界不為常人所知的事,同時(shí)也為自己找了個(gè)師傅,就比如說(shuō),兩個(gè)工程師分別用S3C2410和PXA255來(lái)做手持設(shè)備,同樣兩人都工作四年,再出去找工作,兩人工資可能最多可相差一倍,為什么?這就是業(yè)界不為常人所知的規(guī)則,2410屬于民品,被業(yè)界用爛了,做產(chǎn)品時(shí)成本特敏感,當(dāng)然也對(duì)人才成本敏感了,PXA255是intel的東西,一個(gè)255 CPU能買三個(gè)2410,一直被業(yè)界定義為貴族產(chǎn)品,用的公司都是大公司或?yàn)檐姺椒?wù)的公司,不會(huì)在乎成本,只要把東西做好,一切都好說(shuō),但這方面做的人也少啊,因?yàn)殚_發(fā)系統(tǒng)貴啊。
對(duì)于說(shuō)為自已找了個(gè)好師傅,我想是這樣的,因?yàn)橥?jí)工程師間存在著某此潛在的競(jìng)爭(zhēng)關(guān)系,有很多人不愿意把自己知道的東西教給別人,這意味著他將要失業(yè),就是所說(shuō)的教會(huì)徒弟,餓死師傅,但對(duì)于我們這些人就不存在這樣的關(guān)系了,我是在嵌入式系統(tǒng)平臺(tái)設(shè)計(jì)上走到了一定程序,目前在國(guó)內(nèi)這塊的技術(shù)上已經(jīng)是自己很難再突破自己,因此很多東西我對(duì)大家都是OPEN的,就比如說(shuō)下面那部分關(guān)于接口設(shè)計(jì)中所提到的時(shí)序接口東西,我要是不講,卻使是高級(jí)硬件工程師我想也幾乎只有10%的人能知道吧。
六、成為高級(jí)嵌入式系統(tǒng)硬件工程師要具備的技能。
首先我聲明,我是基于嵌入式系統(tǒng)平臺(tái)級(jí)設(shè)計(jì)的,硬件這個(gè)方向我相對(duì)來(lái)講比較有發(fā)言權(quán),如果是其它方面所要具備的基本技能還要和我們培訓(xùn)中心其它專業(yè)級(jí)講師溝通,或去網(wǎng)站看看004km.cn/ ”,而且出版社還提供了一個(gè)非常好的路線圖:http://004km.cn/guide/guide_linux.php。
四、選擇一個(gè)適合你的Linux發(fā)行版本:目前全球有超過1百多個(gè)Linux發(fā)行版本,在國(guó)內(nèi)也能找到十幾個(gè)常見版本。如何選擇請(qǐng)根據(jù)你的需求和能力,Redhat Linux 和Debian Linux是網(wǎng)絡(luò)管理員的理想選擇。對(duì)于英語(yǔ)不是很好的讀者紅旗Linux、中標(biāo)Linux這些中文版本比較適合?,F(xiàn)在一些Linux網(wǎng)站有一些Linux版本的免費(fèi)下載,這里要說(shuō)的是并不適合Linux初學(xué)者。
五、養(yǎng)成在命令行下工作: 一定要養(yǎng)成在命令行下工作的習(xí)慣,要知道X-window只是運(yùn)行在命令行模式下的一個(gè)應(yīng)用程序。在命令行下學(xué)習(xí)雖然一開始進(jìn)度較慢,但是熟悉后,您未來(lái)的學(xué)習(xí)之路將是以指數(shù)增加的方式增長(zhǎng)的。從網(wǎng)管員來(lái)說(shuō),命令行實(shí)際上就是規(guī)則,它總是有效的,同時(shí)也是靈活的。即使是通過一條緩慢的調(diào)制解調(diào)器線路,它也能操縱幾千公里以外地遠(yuǎn)程系統(tǒng)。
六、選擇一個(gè)適合你的Linux社區(qū): 隨著Linux應(yīng)用的擴(kuò)展,出現(xiàn)了不少Linux社區(qū)。其中有一些非常優(yōu)秀的社區(qū):www.linuxforum.net(國(guó)內(nèi)最高水平GNU站點(diǎn))、http://www.chinaunix.net/(中國(guó)最大的Unix技術(shù)社區(qū)),但是這幾個(gè)論壇往往是Linux高手的舞臺(tái),如果在探討高級(jí)技巧的論壇張貼非常初級(jí)的問題經(jīng)常會(huì)沒有結(jié)果。
七、勤于實(shí)踐: 要增加自己Linux 的技能,只有通過實(shí)踐來(lái)實(shí)現(xiàn)了。所以,趕快找一部計(jì)算機(jī),趕快安裝一個(gè) Linux 發(fā)行版本,然后進(jìn)入精彩的Linux世界。相信對(duì)于你自己的 Linux 能力必然大有斬獲。此外,人腦不像計(jì)算機(jī)的硬盤一樣,除非硬盤壞掉了或者是資料被你抹掉了,否則儲(chǔ)存的資料將永遠(yuǎn)而且立刻的記憶在硬盤中。在人類記憶的曲線中,你必須要不斷的重復(fù)練習(xí)才會(huì)將一件事情記得比較熟。同樣的,學(xué)習(xí)Linux 也一樣,如果你無(wú)法經(jīng)常學(xué)習(xí)的話,學(xué)了后面的,前面的忘了。你對(duì)Linux命令熟悉后你可以開始搭建一個(gè)小的Linux網(wǎng)絡(luò),這是最好的實(shí)踐方法。Linux是網(wǎng)絡(luò)的代名詞,Linux網(wǎng)絡(luò)服務(wù)功能非常強(qiáng)大,不論是郵件服務(wù)器、Web服務(wù)器、DNS服務(wù)器等都非常完善。當(dāng)然你不需搭建所有服務(wù),可以慢慢來(lái)。需要說(shuō)明的是這個(gè)Linux網(wǎng)絡(luò)對(duì)于初學(xué)者有兩三臺(tái)計(jì)算機(jī)即可,其中一臺(tái)計(jì)算機(jī)最好安裝Windows系統(tǒng)。自己多動(dòng)手,不要非要等著別人幫你解決問題。
八、如何得到聯(lián)機(jī)幫助:和私有操作系統(tǒng)不同,各個(gè)Linux的發(fā)行版本的技術(shù)支持時(shí)間都較短,這對(duì)于Linux初學(xué)者是往往不夠的。其實(shí)當(dāng)你安裝了一個(gè)完整的Linux系統(tǒng)后其中已經(jīng)包含了一個(gè)強(qiáng)大的幫助,只是可能你還沒有發(fā)現(xiàn)和使用它們的技巧。
1.主流Linux發(fā)行版都自帶非常詳細(xì)的文檔(包括手冊(cè)頁(yè)和FAQ),從系統(tǒng)安裝到系統(tǒng)安全,針對(duì)不同層次的人的詳盡文檔,仔細(xì)閱讀文檔后40%問題都可在此解決。
2.查閱經(jīng)典工具書和Howto,特別是Howto是全球數(shù)以萬(wàn)計(jì)的Linux、Unix的經(jīng)驗(yàn)總結(jié)非常有參考價(jià)值通常40%的問題同樣可以解決。
九、在Linux論壇獲取幫助:如果上面的措施沒有解決問題,此時(shí)你就需要Linux社區(qū)的幫助了。Linux的使用者一般都是專業(yè)人士,他們有著很好的電腦背景且愿意協(xié)助他人,Linux高手更具有鼓勵(lì)新手的文化精神。如何在Linux社區(qū)獲得幫助,需要說(shuō)明的是你要有周全的思考,準(zhǔn)備好你的問題,不要草率的發(fā)問,否則只會(huì)得到到草率的回答或者根本得 不到任何答案。越表現(xiàn)出在尋求幫助前為解決問題付出的努力,你越能得到實(shí)質(zhì)性的幫助。最好先搜尋一下論壇是否有您需要的文章。這樣可以獲得事半功倍的效果。下面筆者在論壇看到的一個(gè)好問題:“安裝紅旗4.0 后,系統(tǒng)紫光輸入法自帶的雙拼方案和我的習(xí)慣不一樣,如何自定義雙拼方案解決?謝謝?”這個(gè)問題很簡(jiǎn)練,筆者五分鐘后就給出了解決方法:“首先備份原文件到其他目錄,然后刪掉/usr/local/unispim/unispimsp.ksc,編輯/usr/local/unispim/unispimsp.ini,最后重啟動(dòng)計(jì)算機(jī),生成新的unispimsp.ksc”另外得到回復(fù)后如果問題解決,向幫助過你的人發(fā)個(gè)說(shuō)明,讓他們知道問題是怎樣解決的,這種補(bǔ)充有助于他人在郵件列表/新聞組/論壇中搜索對(duì)你有過幫助的完整解決方案,這可能對(duì)他們也很有用。下面看看一個(gè)讓人無(wú)法回答的問題:“救命各位高手,向你們請(qǐng)教一些問題:如何在Linux下配制HTTP、FTP、Samba、DNS、DHCP、Sendmail服務(wù)器,謝謝” 這樣的問題我想即使Linux高手也很難快速準(zhǔn)確精練的回答你。你需要提供精確有效的信息。這并不是要求你簡(jiǎn)單的把成噸的出錯(cuò)代碼或者數(shù)據(jù)完全轉(zhuǎn)儲(chǔ)摘錄到你的提問中。如果你有龐大而復(fù)雜的測(cè)試條件,盡量把它剪裁得越小越好。可能你會(huì)遇到這種情況,對(duì)于一個(gè)問題會(huì)出現(xiàn)不同內(nèi)容回答,這時(shí)你需要通過實(shí)踐來(lái)驗(yàn)證。另外把這個(gè)問題放在其他Linux社區(qū)請(qǐng)求幫助也是一種選擇。如果得不到答案,請(qǐng)不要以為我們覺得無(wú)法幫助你。有時(shí)只是看到你問題的人不知道答案罷了。這時(shí)換一個(gè)社區(qū)是不錯(cuò)的選擇。另外發(fā)問的時(shí)候一定要注意到某些禮節(jié)。因?yàn)長(zhǎng)inux社區(qū)是一個(gè)松散的組織、也不承擔(dān)回復(fù)每個(gè)帖子的義務(wù)。它不是技術(shù)支持。
十、用Unix思維學(xué)習(xí)Linux:Linux是參照Unix思想設(shè)計(jì)的,理解掌握Linux必須按照Unix思維來(lái)進(jìn)行。思想性的轉(zhuǎn)變比暫時(shí)性的技術(shù)提高更有用,因?yàn)樗軒椭慵涌鞂W(xué)習(xí)速度。
十一、學(xué)習(xí)專業(yè)英文:如果你想深入學(xué)習(xí)Linux,看不懂因?yàn)槲臋n實(shí)在是太難了。寫的最好的,最全面的文檔都是英語(yǔ)寫的,最先發(fā)布的技術(shù)信息也都是用英語(yǔ)寫的。即便是非英語(yǔ)國(guó)家的人發(fā)布技術(shù)文檔,也都首先翻譯成英語(yǔ)在國(guó)際學(xué)術(shù)雜志和網(wǎng)絡(luò)上發(fā)表。安裝一個(gè)新的軟件時(shí)先看README,再看INSTALL然后看FAQ,最后才動(dòng)手安裝,這樣遇到問題就知道為什么。如果說(shuō)明文檔不看,結(jié)果出了問題再去論壇來(lái)找答案反而浪費(fèi)時(shí)間。
十二、最后是Linux學(xué)習(xí)的路線圖: 1. 掌握至少50個(gè)以上的常用命令。
2. 熟悉Gnome/KDE等X-windows桌面環(huán)境操作。
3. 掌握.tgz、.rpm等軟件包的常用安裝方法
4. 學(xué)習(xí)添加外設(shè),安裝設(shè)備驅(qū)動(dòng)程序(比如網(wǎng)卡)5. 熟悉Grub/Lilo引導(dǎo)器及簡(jiǎn)單的修復(fù)操作。
6. 熟悉Linux文件系統(tǒng)和目錄結(jié)構(gòu)。
7. 掌握vi,gcc,gdb等常用編輯器,編譯器,調(diào)試器。Linux下編程,主要是選用一個(gè)文本編輯工具(如vi eclipse nano gedit等)編寫,再用GCC編譯鏈接,最后用gdb調(diào)試。8. 理解shell別名、管道、I/O重定向、輸入和輸出以及shell腳本編程。9. 學(xué)習(xí)Linux環(huán)境下的組網(wǎng)。
十三、深入學(xué)習(xí)linux的大致方向
1.文件系統(tǒng):linux的相關(guān)的系統(tǒng)設(shè)定,各種linux環(huán)境下的軟件的使用與調(diào)試。這類知識(shí)是基礎(chǔ),但并不簡(jiǎn)單,學(xué)好了,絕對(duì)可以當(dāng)講師的。
2.網(wǎng)絡(luò)服務(wù):linux這種類UNIX的操作系統(tǒng)其另一個(gè)作用域是網(wǎng)絡(luò)服務(wù)器。linux本身自帶幾乎所有網(wǎng)絡(luò)上的用得到的服務(wù),可以充當(dāng)任何網(wǎng)絡(luò)服務(wù)器,比如DNS、DHCP、ftp、NFS、Proxy等等。而且其特點(diǎn)是,所有這些服務(wù)的配置與設(shè)定都可以通過文本形式的配置文件進(jìn)行配置。所以學(xué)好linux下網(wǎng)絡(luò)服務(wù)的配置與使用,完全可以當(dāng)CIO(首席信息官)了,因?yàn)橐呀?jīng)具備linux網(wǎng)絡(luò)工程師的能力了。3.軟件設(shè)計(jì):linux是開源的大環(huán)境,也是較原始的編成環(huán)境,其下的C/C++、PHP等都是比windows下更純語(yǔ)言。但linux下高級(jí)的開發(fā)環(huán)境較少,不像VC等工具好使,所以linux下的軟件工程師要具備的知識(shí)更多。要是學(xué)好了linux下的軟件設(shè)計(jì),也算編成是高手了。
linux這三大塊知識(shí)的學(xué)習(xí)不相互影響,但也有相互依賴和促進(jìn)的作用,想深入某一個(gè)領(lǐng)域,不見得要其它領(lǐng)域都掌握,但建議也對(duì)其它領(lǐng)域也有所涉及,會(huì)有事半功倍的效果。
十四、學(xué)習(xí)嵌入式linux的三個(gè)方向
1、嵌入式linux應(yīng)用軟件開發(fā)
2、linux內(nèi)核的剪裁和移植
3、嵌入式linux底層驅(qū)動(dòng)的開發(fā)
無(wú)論選擇哪一方向,基本的linux的知識(shí)是需要具備的,其他還需要掌握的知識(shí)有ARM(最常用的一款嵌入式處理器)和C語(yǔ)言編程,每一方面知識(shí)的掌握熟練程度都最終決定了個(gè)人進(jìn)行嵌入式linux開發(fā)的綜合能力。
嵌入式Linux學(xué)前建議(初學(xué)者必讀)
目前,Linux作為嵌入式系統(tǒng)的主力軍,廣泛應(yīng)用于消費(fèi)類電子、工業(yè)控制、軍工電子、電信/網(wǎng)絡(luò)/通訊、航空航天、汽車電子、醫(yī)療設(shè)備、儀器儀表等相關(guān)行業(yè)。隨著嵌入式行業(yè)的迅猛發(fā)展,嵌入式Linux憑借其系統(tǒng)發(fā)展的成熟度、市場(chǎng)應(yīng)用的高份額也受到更多工程師朋友的青睞,越來(lái)越多的企業(yè)和研發(fā)機(jī)構(gòu)都轉(zhuǎn)向嵌入式Linux的開發(fā)和研究,這使得嵌入式Linux在新興的嵌入式操作系統(tǒng)領(lǐng)域內(nèi)也獲得了飛速發(fā)展和廣泛應(yīng)用。而對(duì)于那些希望盡快進(jìn)入嵌入式行業(yè)從事產(chǎn)品研發(fā)的朋友們,選擇嵌入式Linux方向作為切入點(diǎn)無(wú)疑是最好的途徑之一。
近期,有許多面臨畢業(yè)、找工作的大學(xué)生來(lái)到華清遠(yuǎn)見嵌入式培訓(xùn)中心咨詢了解有關(guān)嵌入式Linux方向的學(xué)習(xí)安排。在與他們交流溝通的過程中,被問到最多的幾個(gè)問題就是“如何做好嵌入式Linux學(xué)習(xí)前的準(zhǔn)備?”,“學(xué)習(xí)嵌入式Linux需要補(bǔ)習(xí)哪些基礎(chǔ)課程?”,“嵌入式Linux開發(fā)跟普通軟件開發(fā)在學(xué)習(xí)方法上有什么不同?”,“項(xiàng)目實(shí)戰(zhàn)環(huán)節(jié)多嗎?”,“有專業(yè)人員帶領(lǐng)嗎?”,相信這些也是很多準(zhǔn)備入行的初學(xué)者都會(huì)關(guān)心的問題,為了幫助大家做好嵌入式Linux的學(xué)前準(zhǔn)備,我們對(duì)這些常見的問題逐一進(jìn)行解答,提供給大家參考,希望能夠有所幫助。
1、如何做好嵌入式Linux學(xué)習(xí)前的準(zhǔn)備?
要成為一名合格的嵌入式Linux工程師,就需要系統(tǒng)的學(xué)習(xí)軟、硬件相關(guān)領(lǐng)域內(nèi)的知識(shí),需要在最開始就掌握開發(fā)的規(guī)范和原則,養(yǎng)成良好的工作習(xí)慣。為了確保學(xué)習(xí)的效果,華清遠(yuǎn)見安排的整個(gè)課程體系是非常集中、高效的,這就要求準(zhǔn)備參加嵌入式Linux就業(yè)課程學(xué)習(xí)的同學(xué)要調(diào)整好自己的時(shí)間,務(wù)必要確保在4個(gè)多月的學(xué)習(xí)時(shí)間內(nèi)能夠高度集中精力。在整個(gè)集中學(xué)習(xí)過程中,既要保證課上認(rèn)真聽講、實(shí)戰(zhàn)演練的時(shí)間,也要保證課下繼續(xù)實(shí)戰(zhàn)演練、查閱資料的時(shí)間。只有經(jīng)過這種高強(qiáng)度的、實(shí)戰(zhàn)為主的訓(xùn)練,才能夠在比較短的時(shí)間內(nèi)掌握規(guī)范的嵌入式開發(fā)工作流程,讓自己符合嵌入式企業(yè)對(duì)應(yīng)崗位的需求。
除了在學(xué)習(xí)時(shí)間上要做好充分的準(zhǔn)備之外,在學(xué)習(xí)的心態(tài)和方法的調(diào)整上也要做好準(zhǔn)備。許多朋友只了解嵌入式Linux方向美好的發(fā)展前景,只關(guān)注高收入、就業(yè)機(jī)會(huì)多等熱點(diǎn),卻忽略了學(xué)習(xí)過程本身。為了能夠讓集中培訓(xùn)的效果發(fā)揮到最佳,建議大家在學(xué)習(xí)開始前更多地去了解嵌入式產(chǎn)品研發(fā)的特點(diǎn)、所需要掌握的技術(shù)規(guī)范和工作要點(diǎn),關(guān)注需具備基礎(chǔ)的補(bǔ)充和學(xué)習(xí),從而為后續(xù)的強(qiáng)化學(xué)習(xí)過程做好心態(tài)上的準(zhǔn)備,畢竟態(tài)度往往決定了最后做事的結(jié)果。
2、學(xué)習(xí)嵌入式Linux需要補(bǔ)習(xí)哪些基礎(chǔ)課程?
嵌入式Linux工程師的學(xué)習(xí)需要具備一定的C語(yǔ)言基礎(chǔ),因此面對(duì)許多朋友只是在大一或者大二學(xué)習(xí)過C(還不一定認(rèn)真學(xué)了,呵呵?。?,之后基本就不再用過的情況,建議大家在來(lái)華清遠(yuǎn)見學(xué)習(xí)之前先復(fù)習(xí)一下C語(yǔ)言基礎(chǔ)這塊。要提醒大家的是,復(fù)習(xí)時(shí)不能只關(guān)注基本語(yǔ)法,對(duì)于常用的數(shù)據(jù)存儲(chǔ)及處理方式,例如:數(shù)組、結(jié)構(gòu)體等也要關(guān)注,有條件的話一定在機(jī)器上親自敲敲代碼、分析理解一下具體案例代碼編寫的思路,讓自己慢慢進(jìn)入一名嵌入式開發(fā)人員的狀態(tài)。
此外,在時(shí)間允許的情況下,建議大家看一下有關(guān)計(jì)算機(jī)操作系統(tǒng)工作原理以及計(jì)算機(jī)組成原理等方面的專業(yè)書籍。對(duì)于進(jìn)程、線程、任務(wù)調(diào)度、總線、I/O等基本概念及工作原理有一個(gè)初步的了解和掌握,這部分知識(shí)的準(zhǔn)備對(duì)于后續(xù)更好地學(xué)習(xí)嵌入式Linux系統(tǒng)開發(fā)將會(huì)起到很好的幫助作用。
3、嵌入式Linux開發(fā)跟普通軟件開發(fā)在學(xué)習(xí)方法上有什么不同?
要成為一名成功的嵌入式軟件開發(fā)人員,程序的設(shè)計(jì)能力是首要技能,這一點(diǎn)與普通的軟件開發(fā)人員的要求是一樣的。但是作為“軟硬兼施”的嵌入式開發(fā),則要求大家不僅要了解較底層軟件的工作過程和工作原理(例如操作系統(tǒng)級(jí)、驅(qū)動(dòng)程序級(jí)軟件),在軟件開發(fā)的專業(yè)水平上也需要充分考慮軟件設(shè)計(jì)的時(shí)間和空間效率,這樣才能設(shè)計(jì)出高性能嵌入式程序。
因此面對(duì)相對(duì)復(fù)雜的嵌入式系統(tǒng)的研發(fā)過程,在學(xué)習(xí)的過程中需要更多關(guān)注完整的知識(shí)體系結(jié)構(gòu)的建立。特別是對(duì)于原理性知識(shí)的掌握程度則相對(duì)普通的軟件開發(fā)人員提出了更高的要求。因此在學(xué)習(xí)的過程中,“要知其然,更要知其所以然”。
同時(shí)由于一直以來(lái)嵌入式行業(yè)中專業(yè)人才的緊缺,許多經(jīng)驗(yàn)性的東西都有待交流和分享,因此充分關(guān)注與每一位講師的實(shí)際經(jīng)驗(yàn)交流就顯得至關(guān)重要。華清遠(yuǎn)見的每一位專業(yè)講師都擁有多年的嵌入式Linux開發(fā)經(jīng)驗(yàn),他們?cè)诟髯陨瞄L(zhǎng)的領(lǐng)域內(nèi)都有很多值得分享和交流的體會(huì),因此通過他們課堂的講解、示范,通過充分的交流溝通,無(wú)疑可以大大縮短在行業(yè)中摸索的時(shí)間,記住不要以為原理性的東西通過看書就能解決,借助這些行業(yè)高手的透徹分析,才能讓你的學(xué)習(xí)過程更有價(jià)值、更加實(shí)用。
4、華清遠(yuǎn)見的課程體系中項(xiàng)目實(shí)戰(zhàn)環(huán)節(jié)多嗎?有專業(yè)人員帶領(lǐng)嗎?
由于大多數(shù)人對(duì)嵌入式開發(fā)過程的陌生,因此實(shí)戰(zhàn)環(huán)節(jié)的訓(xùn)練就顯得格外重要。在嵌入式Linux課程學(xué)習(xí)的每個(gè)階段,都需要在專業(yè)人員的引導(dǎo)下,通過全真的案例設(shè)計(jì)與實(shí)現(xiàn)來(lái)鞏固所學(xué)的知識(shí)點(diǎn)。同時(shí)我們要求大家盡可能在課堂上多出問題、多暴露問題,只有這樣,才能通過專業(yè)人員的及時(shí)幫助和指導(dǎo),最高效地掌握解決實(shí)際問題的方式和方法,積累足夠的技術(shù)經(jīng)驗(yàn)和項(xiàng)目經(jīng)驗(yàn)。
同時(shí)也只有通過最終綜合項(xiàng)目實(shí)戰(zhàn)環(huán)節(jié)的密集訓(xùn)練,才能夠逐步建立起嵌入式產(chǎn)品開發(fā)的工程化概念。在這個(gè)過程中,除了可以達(dá)到所學(xué)知識(shí)綜合、實(shí)際應(yīng)用的目的,還可以讓大家更真實(shí)地體驗(yàn)到如何編寫工程化程序?如何在設(shè)計(jì)中與團(tuán)隊(duì)協(xié)作開發(fā)?如何為后續(xù)有效地升級(jí)與維護(hù)做好準(zhǔn)備?如何編寫規(guī)范的文檔等?而這些體驗(yàn)都將為后續(xù)真正從事企業(yè)內(nèi)工程化的軟件設(shè)計(jì)做好充分的準(zhǔn)備。
記住貫穿始終的是:要知道為什么學(xué)?要知道學(xué)的是什么?要知道怎么學(xué)?要知道學(xué)了如何用?最后還要知道用的時(shí)候出了問題該如何解決?相信以這些問題為線索的學(xué)習(xí)過程一定可以幫助大家快速成為一名優(yōu)秀的嵌入式開發(fā)工程師。