新聞中心

EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 程序員及嵌入式的一些學(xué)習(xí)建議

程序員及嵌入式的一些學(xué)習(xí)建議

作者: 時(shí)間:2018-08-06 來(lái)源:網(wǎng)絡(luò) 收藏

有人說(shuō)可以說(shuō)是一個(gè)吃青春飯的職業(yè)。而且做很累,每天都是代碼,感到很枯燥無(wú)味,一個(gè)人如果做到35或者40來(lái)歲.估計(jì)他的程序生涯也差不多到頭了;也有人說(shuō)有兩條進(jìn)階路線。一條是技術(shù)路線,由程序員,經(jīng)系統(tǒng)分析師、系統(tǒng)設(shè)計(jì)師、項(xiàng)目經(jīng)理、產(chǎn)品經(jīng)理,直到架構(gòu)設(shè)計(jì)師為歸宿。另一條是領(lǐng)導(dǎo)路線,由程序員,經(jīng)開(kāi)發(fā)小組負(fù)責(zé)人、工程負(fù)責(zé)人,奮斗到項(xiàng)目經(jīng)理。但是又有幾個(gè)人能走到設(shè)計(jì)師、經(jīng)理的位置,這使得好多想做程序員的畢業(yè)生很猶豫,不知道到底該不該做程序員。其實(shí)大部分職業(yè)都一樣,有能力的自然會(huì)往高處走,沒(méi)能力的自然就被淘汰。優(yōu)勝劣汰的原則大家都知道,干別的行業(yè)三四十歲無(wú)所建樹(shù)不也玩完嗎?

本文引用地址:http://2s4d.com/article/201808/385404.htm

做程序員很累這是大家都知道的,但是累和累還是不同的,當(dāng)你把程序當(dāng)作異物看待時(shí),編程是一種負(fù)擔(dān),你會(huì)感到枯燥無(wú)味。如果程序員能把自己作為一個(gè)具有個(gè)性的人的主體存在,程序就只是人的屬性的延伸。這時(shí),程序就不會(huì)作為人的負(fù)擔(dān),就象人不會(huì)把自己的肢體作為負(fù)擔(dān)一樣。這樣的人會(huì)不斷努力,不斷學(xué)習(xí)新知識(shí),把程序作為人生奮進(jìn)的載體,創(chuàng)造性地使用程序,會(huì)把編程升華成一種精神,主動(dòng)地影響其它領(lǐng)域,這樣的累你會(huì)感覺(jué)到一種滿(mǎn)足、一種充實(shí)。

另外好多人因?yàn)榭吹匠绦騿T的高薪就想轉(zhuǎn)行做開(kāi)發(fā),所謂“人往高處走”,這樣也沒(méi)有什么不對(duì),但是我想對(duì)轉(zhuǎn)行的人一些忠告:

1、非計(jì)算機(jī)特別是文科類(lèi)因?yàn)闆](méi)有學(xué)過(guò)操作系統(tǒng),編譯原理,數(shù)據(jù)結(jié)構(gòu),數(shù)據(jù)庫(kù),離散數(shù)學(xué),軟件設(shè)計(jì)等專(zhuān)業(yè)課程,邏輯思維也和理工科的不一樣,開(kāi)發(fā)語(yǔ)言理論積累從頭做起顯然很難,開(kāi)始寫(xiě)代碼可以,但是隨著技術(shù)的積累必然會(huì)遇到瓶頸的,除非你很聰明否則最好不要入這行!計(jì)算機(jī)相關(guān)專(zhuān)業(yè)數(shù)學(xué)等理工科畢竟經(jīng)過(guò)四年的理論基礎(chǔ)邏輯思維的熏陶,經(jīng)過(guò)幾個(gè)月的培訓(xùn),基本上就可以上手開(kāi)發(fā)了。

2、作為程序員,學(xué)習(xí)能力也是很重要的,如果在學(xué)第一門(mén)編程語(yǔ)言的時(shí)候不能在半個(gè)月內(nèi),寫(xiě)出象樣的小程序,你不能入這行。

3、作為程序員,如果你不能承受巨大壓力的情況下,你不能入這行,因?yàn)樵诔绦蜷_(kāi)發(fā)的過(guò)程中很可能遇到你完全陌生的技術(shù),甚至聽(tīng)都沒(méi)聽(tīng)過(guò),而你必須再短時(shí)間內(nèi)了解它,并寫(xiě)出完美的商業(yè)代碼。這個(gè)過(guò)程不能超過(guò)一兩周,這期間會(huì)有很大的壓力。

有的學(xué)生認(rèn)為女生不適合做Java,適合做測(cè)試,那是大錯(cuò)特錯(cuò),女生一樣會(huì)比男生強(qiáng),關(guān)鍵看自已是不是有興趣去學(xué)!如果真的想在測(cè)試方面有發(fā)展,也要至少做一到兩年程序員再轉(zhuǎn)向測(cè)試會(huì)更有發(fā)展,試想一下連代碼都沒(méi)編過(guò)的人去做測(cè)試能有什么前途呢!

------------------------------------------------------------------------------

時(shí)代已經(jīng)來(lái)臨,你還在等什么?

---循序漸進(jìn)學(xué)習(xí)開(kāi)發(fā)技術(shù)(南京凌嵌電子科技)

最近經(jīng)常有用人單位給我打來(lái)電話,問(wèn)我這有沒(méi)有Linux方面的開(kāi)發(fā)人員,他們說(shuō)他們單位急需要懂得在嵌入式linux環(huán)境下的軟件開(kāi)發(fā)人員,我回答說(shuō),現(xiàn)在每年畢業(yè)的大學(xué)生那么多,還招不到合適的軟件開(kāi)發(fā)人員嗎?他跟我說(shuō),畢業(yè)大學(xué)生雖然多,但大部分都能力不夠,不能達(dá)到他們的工作的要求。

該公司HR的一句話說(shuō)出來(lái)我們現(xiàn)在的大學(xué)教學(xué)和大學(xué)生就業(yè)的現(xiàn)狀:一方面每年那么多大學(xué)生畢業(yè)找不到合適的工作,另一方面很多用人單位和企業(yè)又找不到合適的人才。造成這種現(xiàn)象最基本的原因是學(xué)校教育和社會(huì)需求的嚴(yán)重脫節(jié)(本人認(rèn)為在大學(xué)學(xué)習(xí)的是修煉內(nèi)功的,使你能夠走的更遠(yuǎn)的東西;大多培訓(xùn)機(jī)構(gòu)則更針對(duì)大多企業(yè)需要,更偏重于技能培訓(xùn))。其他的專(zhuān)業(yè)和行業(yè)我不清楚,但是對(duì)于嵌入式專(zhuān)業(yè)和嵌入式軟件行業(yè)來(lái)說(shuō),通過(guò)與多所高校的老師和在校高年級(jí)本科生,研究生交流,我還是有所了解的,高校的嵌入式專(zhuān)業(yè)的教學(xué)現(xiàn)狀我在前一篇文章里仔細(xì)分析過(guò),造成很多嵌入式專(zhuān)業(yè)的學(xué)生在畢業(yè)后,還是很難達(dá)到用人單位的要求最主要的原因在于高校在嵌入式教學(xué)方面重理論和輕實(shí)踐,很多嵌入式專(zhuān)業(yè)的老師也沒(méi)有實(shí)際的工作經(jīng)驗(yàn),這樣培養(yǎng)出的學(xué)生可能讓他講起來(lái)頭頭是道,但是讓他去真正編寫(xiě),調(diào)試一個(gè)應(yīng)用程序就傻眼了,不知道從何下手,因?yàn)樗麄冊(cè)趯W(xué)校的學(xué)習(xí)可能從來(lái)就沒(méi)有老師帶著他們實(shí)際調(diào)試過(guò)嵌入式程序,也沒(méi)有機(jī)會(huì)讓你去調(diào)試嵌入式應(yīng)用程序,那些看起來(lái)非常不錯(cuò)的嵌入式實(shí)驗(yàn)箱大部分時(shí)間都躺在實(shí)驗(yàn)室睡大覺(jué),只有在上實(shí)驗(yàn)課的時(shí)候搬出來(lái)讓大家看2眼,摸2下,還沒(méi)有弄明白怎么回事,又要收到實(shí)驗(yàn)室睡大覺(jué)去了。這樣的教學(xué)模式,如何能培養(yǎng)出一名合格的嵌入式工程師呢?出現(xiàn)企業(yè)找不到合適的人,大學(xué)畢業(yè)生找不到合適的工作也就不奇怪了。

嵌入式專(zhuān)業(yè)是一門(mén)實(shí)踐性非常強(qiáng)的學(xué)科,只有多動(dòng)手,多實(shí)踐,多編程,多調(diào)試,多看書(shū),多思考才能真正掌握好嵌入式開(kāi)發(fā)技術(shù)。

現(xiàn)在很多同學(xué)也意識(shí)到了學(xué)校培養(yǎng)模式和社會(huì)需求脫節(jié)問(wèn)題,有一部分同學(xué)也先行行動(dòng)起來(lái),開(kāi)始注重培養(yǎng)自己的實(shí)際動(dòng)手能力,培養(yǎng)自己實(shí)際分析問(wèn)題,解決問(wèn)題的問(wèn)題,培養(yǎng)自己在嵌入式專(zhuān)業(yè)實(shí)際編程,和調(diào)試程序的能力。但是嵌入式專(zhuān)業(yè)不同于其他學(xué)科,嵌入式專(zhuān)業(yè)是一門(mén)綜合性非常強(qiáng),涉及知識(shí)面非常廣的學(xué)科,對(duì)于初學(xué)者來(lái)說(shuō),面對(duì)那么多教程,課本,那么多知識(shí)點(diǎn),往往不知道從何處下手,不知道哪些是重點(diǎn),哪些不是重點(diǎn),這些知識(shí)點(diǎn)之間有什么關(guān)聯(lián),一臉的茫然,然后東一榔頭,西一棒子,折騰了幾個(gè)月甚至大半年后,還是找不著學(xué)習(xí)嵌入式的方向,還徘徊在嵌入式開(kāi)發(fā)的大門(mén)之外。

那么,如何從零開(kāi)始學(xué)習(xí)嵌入式開(kāi)發(fā)技術(shù), 進(jìn)入嵌入式開(kāi)發(fā)大門(mén)呢,筆者根據(jù)自己的嵌入式學(xué)習(xí)經(jīng)歷和多年的嵌入式linux教學(xué)經(jīng)驗(yàn),談?wù)勛约簩?duì)嵌入式學(xué)習(xí)的一些想法和意見(jiàn),希望對(duì)大家有所幫助。

一、 練好基本功

嵌入式系統(tǒng)專(zhuān)業(yè)是綜合了計(jì)算機(jī)硬件技術(shù),計(jì)算機(jī)軟件技術(shù)以及電子電路技術(shù)的一門(mén)綜合學(xué)科,所涉及的內(nèi)涵和知識(shí)非常廣泛,包括:數(shù)字電路,模擬電路,計(jì)算機(jī)組成原理,單片機(jī)基礎(chǔ),C語(yǔ)言基礎(chǔ),操作系統(tǒng),數(shù)據(jù)結(jié)構(gòu),編譯原理,計(jì)算機(jī)控制,計(jì)算機(jī)網(wǎng)絡(luò)等知識(shí)。

在真正學(xué)習(xí)嵌入式開(kāi)發(fā)之前,首先要打好基礎(chǔ)。其中最重要的是C語(yǔ)言基礎(chǔ)、數(shù)字電路、計(jì)算機(jī)組成原理三門(mén)課程。對(duì)于C語(yǔ)言,至少能單獨(dú)編寫(xiě)調(diào)試一個(gè)3~ 500行的程序,能夠了解C語(yǔ)言的基本語(yǔ)法規(guī)則,基本語(yǔ)句的使用,理解指針概念并能靈活使用各種指針。

計(jì)算機(jī)組成原理要能理解組成一個(gè)計(jì)算機(jī)系統(tǒng)的幾大部件,計(jì)算機(jī)系統(tǒng)的結(jié)構(gòu),理解系統(tǒng)總線,理解處理器和計(jì)算機(jī)外部設(shè)備的關(guān)系,處理器和計(jì)算機(jī)外設(shè)是如何協(xié)調(diào)工作完成某一項(xiàng)功能的,計(jì)算機(jī)軟件和硬件是如何分工協(xié)作完成某一項(xiàng)任務(wù)的,理解軟件是通過(guò)寄存器來(lái)控制硬件的。

數(shù)字電路,模擬電路要了解其基本原理個(gè)概念,能看懂簡(jiǎn)單模擬、數(shù)字電路原理圖。理解數(shù)字電路中的寄存器,時(shí)序的概念,能看懂芯片手冊(cè)和時(shí)序圖。對(duì)于其他基礎(chǔ)課程,重點(diǎn)要理解其中的一些基本概念,如何使用等等。

對(duì)于電子,自動(dòng)化,通信,計(jì)算機(jī)類(lèi)專(zhuān)業(yè)的學(xué)生,在大二、大三開(kāi)設(shè)的專(zhuān)業(yè)基礎(chǔ)或?qū)I(yè)課程中基本包含了以上的大部分課程。因?yàn)槿狈?shí)踐,可能學(xué)得不是很深入,但是一些基本的概念和基本知識(shí)應(yīng)該還是有所了解,針對(duì)一些薄弱環(huán)節(jié),自己稍微加強(qiáng)學(xué)習(xí)一下,基本上已經(jīng)具備了學(xué)習(xí)嵌入式開(kāi)發(fā)的基礎(chǔ)。在嵌入式基本功學(xué)習(xí)階段,最重要的是C語(yǔ)言和單片機(jī)基礎(chǔ),最好是能用C語(yǔ)言開(kāi)發(fā)一個(gè)小的單片機(jī)程序,例如用C語(yǔ)言實(shí)現(xiàn)單片機(jī)和PC的串口通信,用C語(yǔ)言控制LED等顯示,用C語(yǔ)言控制數(shù)碼管顯示等小程序。在這個(gè)期間需要的學(xué)習(xí)工具就是單片機(jī)51學(xué)習(xí)開(kāi)發(fā)板。

二、嵌入式Linux應(yīng)用開(kāi)發(fā)

嵌入式開(kāi)發(fā)基礎(chǔ)知識(shí)學(xué)習(xí)完后,這時(shí)候你已經(jīng)有了一定的嵌入式開(kāi)發(fā)基礎(chǔ)了,可以進(jìn)行基于單片機(jī)的嵌入式系統(tǒng)設(shè)計(jì)了。單片機(jī)編程本身也是屬于嵌入式編程,但是在這里我們只是把單片機(jī)開(kāi)發(fā)當(dāng)作嵌入式系統(tǒng)開(kāi)發(fā)的基礎(chǔ),不把單片機(jī)開(kāi)發(fā)作為真正的嵌入式系統(tǒng)開(kāi)發(fā),在這里我們的嵌入式系統(tǒng)開(kāi)發(fā)是指在帶有操作系統(tǒng)的嵌入式平臺(tái)上的應(yīng)用和驅(qū)動(dòng)開(kāi)發(fā),特別指在嵌入式linux平臺(tái)上的開(kāi)發(fā)。

單片機(jī)開(kāi)發(fā)在很早以前是非常熱門(mén)的,現(xiàn)在在一些比較簡(jiǎn)單的系統(tǒng)上單片機(jī)也用的非常廣泛,隨著硬件的成本不斷降低,在一些比較復(fù)雜的嵌入式設(shè)備一般都采用嵌入式linux操作系統(tǒng),在嵌入式linux平臺(tái)上進(jìn)行開(kāi)發(fā),這樣可以極大的提高嵌入式開(kāi)發(fā)效率,提高系統(tǒng)的穩(wěn)定性和可靠性,降低開(kāi)發(fā)成本。由于linux是一個(gè)開(kāi)源的操作系統(tǒng),你可以通過(guò)閱讀linux內(nèi)核來(lái)理解內(nèi)核的實(shí)現(xiàn)機(jī)制,如果有需要,你甚至可以通過(guò)修改內(nèi)核源碼來(lái)提高系統(tǒng)的性能;同時(shí),全球參與linux開(kāi)發(fā)的隊(duì)伍非常龐大,網(wǎng)上有大量的嵌入式linux開(kāi)發(fā)資料和源代碼,很多你需要實(shí)現(xiàn)的功能在網(wǎng)上基本都能找到相關(guān)源碼,參考一下別人寫(xiě)的源碼,這樣可以極大的提高自己的工作效率和技術(shù)能力,近幾年,隨著參與linux開(kāi)發(fā)的人越來(lái)越多,linux系統(tǒng)的穩(wěn)定性、實(shí)時(shí)性有了很大的提高,linux系統(tǒng)無(wú)論在服務(wù)器上還是嵌入式設(shè)備平臺(tái)上都應(yīng)用越來(lái)越廣泛,現(xiàn)在包括華為、中興、朗訊的各大通信巨頭都開(kāi)始把自己設(shè)備的底層平臺(tái)從vxworks操作系統(tǒng)遷移到linux系統(tǒng),可以說(shuō)嵌入式linux是嵌入式技術(shù)發(fā)展一個(gè)方向,是嵌入式技術(shù)的一面旗幟?;谝陨显?,我的建議是學(xué)嵌入式開(kāi)發(fā),就學(xué)嵌入式linux開(kāi)發(fā),相對(duì)于wince等其他的嵌入式平臺(tái),你可以真正學(xué)到更多的東西,學(xué)到嵌入式技術(shù)的精髓,同時(shí)他又符合嵌入式產(chǎn)業(yè)發(fā)展的方向,不容易被日新月異的技術(shù)發(fā)展所淘汰。

有了嵌入式開(kāi)發(fā)的基礎(chǔ),又知道了我們?yōu)槭裁匆獙W(xué)習(xí)嵌入式linux開(kāi)發(fā),那我們就要開(kāi)始動(dòng)手開(kāi)始學(xué)習(xí)了,那如何開(kāi)始學(xué)習(xí)嵌入式linux開(kāi)發(fā),從哪里開(kāi)始著手呢?

很多同學(xué)這時(shí)候就開(kāi)始買(mǎi)linux書(shū)籍,從圖書(shū)館借了一大堆關(guān)于linux的書(shū):什么《linux使用基礎(chǔ)教程》、《linux源碼深度分析》、《linux情景分析等》、 《linux高級(jí)使用指南》等等。結(jié)果抱著這些圖書(shū)看了10天半個(gè)月還是不知所云,當(dāng)初學(xué)習(xí)的激情慢慢就消退了,最后不了了之,終究沒(méi)有進(jìn)入嵌入式開(kāi)發(fā)大門(mén)。究其原因,是因?yàn)闆](méi)有找到合適學(xué)習(xí)嵌入式開(kāi)發(fā)的方法,做任何事情都有方法可循,找對(duì)了學(xué)習(xí)方法往往就能事半功倍;否則就可能是事倍功半,甚至勞而無(wú)功。

接下來(lái)我先分析一下同學(xué)們的幾種常見(jiàn)的嵌入式linux學(xué)習(xí)誤區(qū),然后提出一種比較合適的嵌入式linux學(xué)習(xí)方法。

誤區(qū)一、全身投入學(xué)習(xí)桌面或服務(wù)器版本linux系統(tǒng)

很多想學(xué)嵌入式linux 的同學(xué)經(jīng)常問(wèn)我,我不會(huì)linux系統(tǒng),怎么學(xué)習(xí)嵌入式linux開(kāi)發(fā),于是他們就花費(fèi)了大量的精力和時(shí)間去研究學(xué)習(xí)桌面版本linux系統(tǒng)的使用,什么redhat 、federo,、ubuntu等等都用過(guò),如何配置linux,linux的各種使用命令都背的滾瓜爛熟,linux各種服務(wù)器的配置,還原備份各種操作非常熟悉,以為這樣就學(xué)會(huì)了嵌入式linux開(kāi)發(fā)。其實(shí)這是一個(gè)學(xué)習(xí)嵌入式Linux開(kāi)發(fā)的誤區(qū)。

Linux桌面環(huán)境只是嵌入式linux的一個(gè)開(kāi)發(fā)工具,開(kāi)發(fā)環(huán)境而已。我們的目標(biāo)不是學(xué)習(xí)linux服務(wù)器的配置和使用,linux服務(wù)器的高級(jí)配置和使用那是另外一個(gè)領(lǐng)域,不屬于嵌入式linux討論的范疇。我們進(jìn)行嵌入式linux開(kāi)發(fā),只是把linux桌面環(huán)境當(dāng)作一個(gè)工具,在linux桌面環(huán)境下運(yùn)行嵌入式linux開(kāi)發(fā)工具,例如gcc 編譯器,make工具來(lái)開(kāi)發(fā)我們的嵌入式linux應(yīng)用程序而已,對(duì)于嵌入式開(kāi)發(fā)工程師來(lái)說(shuō),沒(méi)有必要花費(fèi)那么多的精力和時(shí)間去研究linux桌面版和服務(wù)器的應(yīng)用,只要能了解最基本的操作即可。現(xiàn)在的桌面linux系統(tǒng)的圖形化界面做的也相當(dāng)好,跟window具有相同的易用性能,例如ubuntu很多操作都可以在圖形界面下完成,就沒(méi)有必要去記每個(gè)linux命令了。熟悉linux桌面系統(tǒng)的使用和基本操作命令,安排1~2天時(shí)間學(xué)習(xí)基本就可以掌握了。

誤區(qū)二、直接閱讀linux內(nèi)核源代碼

很多想學(xué)linux,在連linux是什么東西,一點(diǎn)都還不會(huì)使用的情況下去就閱讀linux內(nèi)核源代碼,花了大量時(shí)間去閱讀《linux源碼深度分析》、《linux情景分析等》等書(shū)。這樣的結(jié)果很可能就是看的頭昏眼花,不知所云,最后只能放棄了。

這也是同學(xué)們學(xué)習(xí)嵌入式linux的一個(gè)誤區(qū),在有一定嵌入式linux開(kāi)發(fā)基礎(chǔ)后,帶著一定的目的去閱讀linux源代碼,這樣可以極大的提高你的技術(shù)能力,但是你在沒(méi)有任何基礎(chǔ),對(duì)linux一點(diǎn)都不了解的情況下就去閱讀linux內(nèi)核源代碼,無(wú)異于以卵擊石,最后只能是撞個(gè)頭破血流。

以上分析了同學(xué)們學(xué)習(xí)嵌入式linux開(kāi)發(fā)的2個(gè)誤區(qū),那么如何正確的嵌入式linux開(kāi)發(fā)呢?

做任何事情都有一個(gè)循序漸進(jìn)的過(guò)程,學(xué)習(xí)嵌入式linux也一樣。在有了一定的嵌入式開(kāi)發(fā)基礎(chǔ)后,學(xué)習(xí)嵌入式linux開(kāi)發(fā)比較適合的切入點(diǎn)是從嵌入式linux應(yīng)用程序開(kāi)發(fā)開(kāi)始,即暫時(shí)先不去關(guān)心嵌入式硬件平臺(tái),不去關(guān)心linux的底層驅(qū)動(dòng),先把精力集中在現(xiàn)有的嵌入式linux平臺(tái)上進(jìn)行嵌入式linux應(yīng)用程序設(shè)計(jì)開(kāi)發(fā)。學(xué)習(xí)嵌入式linux開(kāi)發(fā)絕不是看看書(shū)就可以學(xué)好的,需要多實(shí)踐,編程調(diào)試;因?yàn)榍度胧介_(kāi)發(fā)不同于普通的基于PC機(jī)或服務(wù)器的應(yīng)用程序開(kāi)發(fā),嵌入式開(kāi)發(fā)的應(yīng)用程序是要燒寫(xiě)到嵌入式板卡或開(kāi)發(fā)板上運(yùn)行的,所以首先你要給自己購(gòu)買(mǎi)一塊開(kāi)發(fā)板,現(xiàn)在普遍流行的嵌入式開(kāi)發(fā)板都是基于三星的ARM9 CPUS3C2440,性?xún)r(jià)比極高。

有了開(kāi)發(fā)板后,先后開(kāi)始學(xué)習(xí)嵌入式linux開(kāi)發(fā)環(huán)境搭建、嵌入式linux開(kāi)發(fā)模型、linux內(nèi)核移植和文件系統(tǒng)、嵌入式linux應(yīng)用程序移植、嵌入式linux多進(jìn)程,多線程應(yīng)用程序設(shè)計(jì)、嵌入式linux網(wǎng)絡(luò)編程,如果對(duì)嵌入式數(shù)據(jù)庫(kù)或圖形軟件開(kāi)發(fā)有興趣的,可以進(jìn)一步學(xué)習(xí)嵌入式linux數(shù)據(jù)庫(kù)開(kāi)發(fā)或基于QT的嵌入式linux圖形應(yīng)用軟件設(shè)計(jì)。每學(xué)一章節(jié)都要通過(guò)相關(guān)實(shí)驗(yàn)來(lái)來(lái)驗(yàn)證你從書(shū)上學(xué)到的東西,同時(shí)提高自己編寫(xiě)代碼,調(diào)試程序的能力。這個(gè)過(guò)程根據(jù)不同學(xué)員的基礎(chǔ)不同,大概要花上1 ~ 2個(gè)月時(shí)間。學(xué)完這些課程后,你就有了再現(xiàn)有的嵌入式linux平臺(tái)上進(jìn)行應(yīng)用程式設(shè)計(jì)開(kāi)發(fā)的能力,到一些嵌入式軟件公司去,能夠勝任在現(xiàn)有的嵌入式linux平臺(tái)上進(jìn)行上層的應(yīng)用程序開(kāi)發(fā)工作。但是目前你還不能進(jìn)行嵌入式linux系統(tǒng)和驅(qū)動(dòng)的開(kāi)發(fā),也就是說(shuō),你現(xiàn)在只能在一個(gè)已經(jīng)構(gòu)建好的嵌入式linux平臺(tái)上進(jìn)行應(yīng)用程序開(kāi)發(fā),而自己還沒(méi)有能力根據(jù)實(shí)際需要去重新構(gòu)建一個(gè)嵌入式linux平臺(tái)。要讓自己有能力根據(jù)實(shí)際需要重新構(gòu)建一個(gè)嵌入式linux軟硬件平臺(tái),這時(shí)候就需要進(jìn)行下一階段的學(xué)習(xí)了,即嵌入式linux系統(tǒng)和驅(qū)動(dòng)開(kāi)發(fā)。

三、嵌入式Linux系統(tǒng)和驅(qū)動(dòng)開(kāi)發(fā)

有了嵌入式linux平臺(tái)上開(kāi)發(fā)應(yīng)用程序的基礎(chǔ),你已經(jīng)對(duì)linux的功能、linux對(duì)應(yīng)用程序提供的接口和系統(tǒng)調(diào)用有了一定的了解,知道如何利用linux提供的功能來(lái)進(jìn)行應(yīng)用程序開(kāi)發(fā),知道如何來(lái)使用設(shè)備驅(qū)動(dòng)來(lái)進(jìn)行應(yīng)用程序設(shè)計(jì),有了這些知識(shí)后,你就可以更深入的去學(xué)習(xí)Linux系統(tǒng)原理和基于Linux驅(qū)動(dòng)的開(kāi)發(fā),Linux內(nèi)核的裁剪,文件系統(tǒng)構(gòu),bootloader等等底層的知識(shí)了。

想要更深入學(xué)習(xí)嵌入式Linux系統(tǒng)和驅(qū)動(dòng)開(kāi)發(fā),要學(xué)的內(nèi)容非常多包括計(jì)算機(jī)軟件、硬件、操作系統(tǒng)知識(shí)。這時(shí)候你可以參照以下的學(xué)習(xí)思路,因?yàn)榍度胧絃inux系統(tǒng)和驅(qū)動(dòng)的開(kāi)發(fā),和底層硬件聯(lián)系非常緊密,所以首先我們從學(xué)習(xí)了解嵌入式硬件開(kāi)始,包括:ARM體系架構(gòu)、S3C2440微處理器接口設(shè)計(jì)、時(shí)鐘系統(tǒng)、LCD屏接口、存儲(chǔ)控制器及系統(tǒng)的存儲(chǔ)空間分配、NAND FLASH接口和NOR FLASH接口等。對(duì)嵌入式系統(tǒng)硬件有了一定的了解后,接下來(lái)就可以開(kāi)始學(xué)習(xí)bootloader了,理解bootloader的概念,功能,和原理,重點(diǎn)掌握U-BOOT的使用和移植。接下來(lái)就開(kāi)始學(xué)習(xí)嵌入式linux內(nèi)核機(jī)制,分析嵌入式Linux源碼組成、內(nèi)核的模塊機(jī)制、內(nèi)核進(jìn)程管理、內(nèi)存管理機(jī)制、linux的中斷系統(tǒng)、Linux內(nèi)核的移植等。有了內(nèi)核的基礎(chǔ),就可以學(xué)習(xí)嵌入式Linux設(shè)備驅(qū)動(dòng)開(kāi)發(fā)了,重點(diǎn)掌握字符設(shè)備驅(qū)動(dòng)開(kāi)發(fā),LCD屏設(shè)備驅(qū)動(dòng)開(kāi)發(fā)、觸摸屏設(shè)備驅(qū)動(dòng)開(kāi)發(fā)、USB設(shè)備驅(qū)動(dòng)開(kāi)發(fā),網(wǎng)卡設(shè)備驅(qū)動(dòng)開(kāi)發(fā)。學(xué)完這些知識(shí)點(diǎn)并通過(guò)相關(guān)實(shí)驗(yàn)驗(yàn)證后,嵌入式Linux系統(tǒng)和驅(qū)動(dòng)的開(kāi)發(fā)就算掌握了差不多了,能夠勝任絕大部分基于linux平臺(tái)的驅(qū)動(dòng)開(kāi)發(fā)工作了。學(xué)完這些知識(shí)點(diǎn),根據(jù)學(xué)員的不同情況,一般需要花三個(gè)月到半年時(shí)間。通過(guò)這一階段的學(xué)習(xí),你在嵌入式Linux開(kāi)發(fā)領(lǐng)域已經(jīng)算是有了一定的功底,已經(jīng)不再被人稱(chēng)為菜鳥(niǎo)了,已經(jīng)進(jìn)入嵌入式linux開(kāi)發(fā)高手行列了。

四、更上一層樓

深入理解了嵌入式內(nèi)核和驅(qū)動(dòng)開(kāi)發(fā),這時(shí)候?qū)憘€(gè)什么驅(qū)動(dòng)對(duì)你已經(jīng)沒(méi)有什么問(wèn)題了,開(kāi)發(fā)過(guò)程中一些基本問(wèn)題都難不倒你了。這是你可能想優(yōu)化一下系統(tǒng)的性能,比如實(shí)時(shí)性,提高系統(tǒng)的啟動(dòng)速度,或者優(yōu)化系統(tǒng)的內(nèi)存管理機(jī)制,要達(dá)到修改內(nèi)核核心機(jī)制的境界,你就需要去深入去研讀linux內(nèi)核源碼了,參考《linux源碼深度分析》、《linux情景分析等》等linux源碼分析的書(shū)籍,深入理解linux各部分的實(shí)現(xiàn)機(jī)制和原理,以及可能存在的問(wèn)題。你只有在深入理解現(xiàn)有代碼和實(shí)現(xiàn)機(jī)制的基礎(chǔ)上,才能提出更好的改進(jìn)方案。如果你能達(dá)到這個(gè)境界,那你已經(jīng)是高手中的高手,可以笑傲群雄了。

以上是筆者結(jié)合自己的嵌入式學(xué)習(xí)經(jīng)歷和嵌入式培訓(xùn)經(jīng)驗(yàn)總結(jié)的一些嵌入式學(xué)習(xí)方法和步驟,這只是筆者對(duì)嵌入式學(xué)習(xí)的一些看法,希望對(duì)那些有興趣學(xué)習(xí)嵌入式linux又不知道從哪開(kāi)始學(xué)的同學(xué)們有所幫助。當(dāng)然,每個(gè)人,每個(gè)同學(xué)的基礎(chǔ),各方面的情況都不一樣,每個(gè)人都有自己適合的學(xué)習(xí)方式,本文章總結(jié)的一些學(xué)習(xí)方法和思路僅供參考,希望大家能找到適合自己的學(xué)習(xí)嵌入式開(kāi)發(fā)的方式,早日進(jìn)入嵌入式開(kāi)發(fā)大門(mén)。

萬(wàn)丈高樓平地起,心動(dòng)不如行動(dòng),有志從事嵌入式開(kāi)發(fā)的同學(xué)不要再猶豫了,趕緊拿出實(shí)際行動(dòng),好好學(xué)習(xí),為實(shí)現(xiàn)自己的偉大夢(mèng)想而努力奮斗吧。



關(guān)鍵詞: 嵌入式 程序員

評(píng)論


相關(guān)推薦

技術(shù)專(zhuān)區(qū)

關(guān)閉