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