我的嵌入式之路(轉(zhuǎn)貼)
我的嵌入式之路
myemail@embeded.cn
前言
這個題目很大,給人一種感覺我好像很成功,其實不然。實際上自己水平不高,甚至很低,但是做過了一些曲折的學習道路,同時把自己真實的學習歷程表達出來,希望對后來者有借鑒的意義,甚幸!
工作三年、幾成廢人!
我2000年畢業(yè)于華中地區(qū)的一個理工科大學,專業(yè)是機械電子,我當時已經(jīng)簽了一家內(nèi)陸某個省級機關(guān)工作,家里八輩是農(nóng)民,并且很偏遠,能夠進入這樣的地方是祖墳有風水。但在畢業(yè)前夕有個進入it的機會,我本想進去的,家里人極力反對,阻力可想而知。同時要交4000元的違約金,對我來說是天文數(shù)字。大學里的費用很多是借的,幾乎將近一半的費用是在大學勤工儉學掙的,為了省錢,高中一個學期回家一次,大學一年回去一次。并且我個人也有特殊的人生背景(悲景更確切),這里不多說了,寫十篇也寫不完,同時偏離主題。這樣我就參加了工作。一張報紙一杯茶的日子,幾乎下班后有種很空虛和恐慌的感覺。在工作中雖然是與自己專業(yè)有點關(guān)系,但是很少。專業(yè)幾乎荒廢。我自己也思考,如果再不出去,自己將會成廢人,只好讓國家養(yǎng)了。兩年后決定出去,但是幾成廢人,誰要呢,只好到學校去鍍金。這是中國教育和社會的悲哀!
至于專業(yè)就改為計算機方面,聽說好找工作,我說實話不是很對計算機特別感興趣,生存第一需要。不要笑我,哈哈!
考研成績出來,超過了國家線幾十分。那個方向要兩個,我第三,但是那年非碘,不面試就按分數(shù)來排,自然我落選了。最后調(diào)劑到另外一個學校,交錢,咬咬牙,交吧!現(xiàn)在仍然債臺高筑!
進入學校前夕
為什么要把這段列出,看后就知道了。
單位有網(wǎng)絡(luò),經(jīng)常上網(wǎng)查些英語資料,在那里唯獨英語沒有丟很多。于是我就在網(wǎng)上查資料,學什么好呢,最后確定學嵌入式把,聽說跟硬件相對比較緊密!而我在大學里多少學習了數(shù)字電路,單片機等,所以多少也有所利用,不會真的一無所知。當然在這之前也自學過數(shù)據(jù)結(jié)構(gòu),計算機組成原理等。C 語言在大學就學了。哈哈這就是我的家底。
我知道自己的基礎(chǔ)差,于是我就拿操作系統(tǒng),數(shù)據(jù)庫、數(shù)據(jù)結(jié)構(gòu)、c++來看,機關(guān)有這個好處,空余時間多,于是平常就看書,很痛苦,沒有人請教。
另外就上網(wǎng)到論壇上去,我就到各個專業(yè)的技術(shù)論壇,其實是電子論壇和嵌入式論壇。我?guī)缀鯖]有發(fā)帖,幾乎把幾個大型的出名的論壇的帖子翻遍了,雖然有很多重復(fù)的,我才知道嵌入式是個什么東東。這些帖子對我以后的學習產(chǎn)生了極大的影響。
最關(guān)鍵兩點:1、嵌入式是什么?
2、嵌入式需要哪些知識?
知道了這兩點,好辦!我就開始規(guī)劃學習路線。計算機的基本理論不能丟,于是重點看組成原理,數(shù)據(jù)機構(gòu),操作系統(tǒng)、c++。同時論壇上了解到,實時操作系統(tǒng)ucos是一個很好的嵌入式操作系統(tǒng),對初學者很好。于是我就買了一本書,但是代碼在電腦里調(diào)不通,網(wǎng)上也有很多相同的問題,我就看書,分析代碼,一遍不行就兩遍,三遍,這樣才看了入了門,才知道什么是進程。原來看操作系統(tǒng)書時,根本就不知道進程是個什么東西。
在這段時間掌握的東西不多,但是,對我以后的影響很大,我想起了大學時一個同學跟我說過了一句話:大學里最重要的不是學到了什么,最重要的是學會怎么學!大概是這個意思。
進入我的避難所
對我來講,再次進入大學不再是大學,而是避難所。希望這次進入給我喘氣和養(yǎng)精蓄銳的機會和時間。我是這樣認為和實踐的。
在學校我有三件事:上課,上圖書館,上網(wǎng)。
對于上課,學校開了很多課程,非常好,很多是名人名師講解,于是很多同學都想學,都去聽。我也考慮過,最后放棄。我是這樣認為的,時間是有限的,什么都想學,什么都學不成。于是我把我自己學的課進行了分化,一般的課程通過就行,重要的一定好好學。我希望不要什么爭論學習課程多和少的問題,這僅僅是我的看法。所以我的成績應(yīng)該是很差的。分數(shù)低。好在后來的單位沒有要我的成績單,否則就慘了。
我個人感覺是上圖書館的效率比在寢室里高多了,這是我的經(jīng)驗。
上網(wǎng),我給自己定了規(guī)矩:不玩游戲,不灌水,少看電影!因為時間對我來說太少和寶貴了,我沒有資格和資本來浪費這些。上網(wǎng)我就在幾個重要的專業(yè)技術(shù)網(wǎng)站上逛,下載技術(shù)資料。我一個朋友最近開了一個嵌入式網(wǎng)站,www.embeded.cn 里面的資料相當一部分是我在網(wǎng)上找的資料。那個網(wǎng)站很不錯,資料豐富,找嵌入式方面,特別是嵌入式linux的資料,異常豐富。
有人會問,您下了那么多資料,怎么看的完和消化的了呢?
我是這樣對待這個問題的:
1、 網(wǎng)上資料比較零散,不系統(tǒng),但是如果把差不多的東西收集起來看就相對完整了,(嵌入式的圖書就是這兩年特別多,特別是2004年,簡直是向外涌!2003年想買本嵌入式,特別是嵌入式linux的不多。)
2、 對于像我這種入門的來說,很多看不懂,沒關(guān)系,反復(fù)看,我個人對學習方法的一個總結(jié)是:重復(fù)是最好的老師!
3、 即使有的用不上,也可以收集以后用的上時查閱。
但是我并非什么都要,目前我的技術(shù)路線是嵌入式linux,所以像wince之類基本上不收集。
總之,我在學校里我充分利用時間來學習,我看到一些同學整天的掛在網(wǎng)上打游戲,發(fā)些無關(guān)痛癢的帖子,浪費時間呀!我真的很痛心!
學習嵌入式
在這里我把它單獨列出,文章有點紊亂,但是內(nèi)容希望有益。
1、學習linux
根據(jù)我在論壇的了解,我選擇學習嵌入式linux,剛好我們學校也重視嵌入式linux,從實驗室到課程安排都是關(guān)于嵌入式linux方面,天時地利!這里我把學習linux的經(jīng)驗和教訓說說。
可以這樣說,在論壇里說道學習linux差不多就學習linux內(nèi)核。于是我電腦里安裝了linux就開始看linux內(nèi)核方面的書了。我記得來學校以前就買到一本陳莉君的講linux內(nèi)核的第一版,現(xiàn)在有第二版了。我就開始看那本說,大家說linux內(nèi)核情景分析不錯,我就買了上下冊,后來又買了 《深入理解linux內(nèi)核》,最后也買了毛德操的《嵌入式系統(tǒng)》也是分析linux內(nèi)核代碼的,主要講arm相關(guān)的。
看內(nèi)核期間是個非常痛苦的過程,看情景分析有種在森林中找出路,其間我組織了一些同學學習內(nèi)核,幾乎沒有幾個能堅持下來的。我認為我是堅持下來了。情景分析在看第一、第二遍是幾乎沒有摸到門道,我分析有三個方面的原因:1、自己的基礎(chǔ)差,這是最關(guān)鍵的。2、內(nèi)核本身很難。3、沒有交流和高人指點。到了第三遍時我才摸到門,才差不多知道個linux的大概脈絡(luò),很多細節(jié)也是稀里糊涂。
學習linux總結(jié),這里聲明一下,我指的嵌入式主要是偏向軟件的嵌入式。學習嵌入式的重點和難點關(guān)鍵在操作系統(tǒng),如果沒有掌握操作系統(tǒng),我認為很難把握一個嵌入式系統(tǒng)。即使在做嵌入式開發(fā)中,作應(yīng)有層的開發(fā)幾乎可以不知道操作系統(tǒng)也可以開發(fā),我認為那是浮在表面的。很難深入和提高自己的層次。聲明:一孔之見!不可深究!
在學習linux內(nèi)核過程中犯了一個極其嚴重路線錯誤:對linux幾乎不懂就開始學習內(nèi)核。我個人推薦一個學習路線是:使用linux—〉linxu系統(tǒng)編程開發(fā)---〉驅(qū)動開發(fā)和分析linux內(nèi)核。而我差不多相反,實際上你不會使用linux也可以學習內(nèi)核,但是如果你懂了這些東西學習更有效率。
關(guān)于要不要學習內(nèi)核的問題,我的回答如下:不一定。如果你是喜歡鉆研的那你進入內(nèi)核會滿足你的欲望。同時對你以后的嵌入式系統(tǒng)的開發(fā)有很好的影響。如果你想從事嵌入式linux系統(tǒng)開發(fā),最好對內(nèi)核有所了解。如果僅僅是做應(yīng)用開發(fā)沒有必要。我打個比喻:c、c++、java等語言是武林中的某個武林派別的話,如什么拳法,什么刀法等,那么linux 內(nèi)核應(yīng)該是一個人的內(nèi)功的反應(yīng)。
怎么開始學linux內(nèi)核:最好有三件寶物:《深入理解linux內(nèi)核》《情景分析》和源代碼。
先看《深》,那主要講原理,好像市場上有本講原理性并且更淺,《linux內(nèi)核設(shè)計與實現(xiàn)》聽說不錯。如果沒有學習操作系統(tǒng)的,像我這樣的,最好先看看操作系統(tǒng)原理的書??戳藥妆楹?,就看情景分析,最好對著《深》看。兩本交叉看,《深》是綱,《情》是目。最后深入代碼。
2、學習嵌入式linux
學習嵌入式,我認為兩個重點,cpu和操作系統(tǒng),目前市場是比較流行arm,所以推薦大家學習arm。操作系統(tǒng)很多,我個人對開始學習的人,特別不是計算機專業(yè)的,推薦學習ucos。那是開源的,同時很小。學習很好。為什么選linux,我不想講太多,網(wǎng)上這方面的太多,但是我在工作中發(fā)現(xiàn),做linux的技術(shù)路線很難,在windows幾乎不會有的問題,在linux開發(fā)中幾乎遍地陷阱。一掉進去劃很長時間出來,一旦解決自己又長進了!相對來說開發(fā)周期長,難度大?,F(xiàn)在資料也逐漸豐富起來,難度也降低了些!
至于怎么學習,這是他的特色地方,必須有塊開發(fā)板,我是同學里最早買學習板的,雖然化錢,我認為值。對我實習和工作產(chǎn)生了很大的影響。
如果沒有開發(fā)板,那是紙上談兵。有人說,那要1000-2000亞,的確是,兄弟,看長遠的,對您的職業(yè)和發(fā)展那點錢不算什么!有的人說我站著說話不腰痛,好吧,錢這東西對我影響很大,我在大學里掃廁所,掃的不錯,獎5元/月。兄弟你有過嗎?我認為教育投資是效益最有保障的!我實習拿3k,很多同學拿1-2k,當然比我高的也有。雖然我現(xiàn)在沒有畢業(yè),但一家公司就簽了。從事目前流行的高檔的消費電子的研發(fā)。對于我兩年前一無所知的我,應(yīng)該有質(zhì)的變化,我感謝學校收了我這個廢品。當然我也非常的努力。說這么多并不是要炫耀我什么,實際上根本不值得炫耀,雖然現(xiàn)在工作環(huán)境和待遇比較滿意,但是,我發(fā)現(xiàn)我很差,特別是代碼能力,我希望平常大家少玩游戲,多編程。編程才是硬道理!
3、 學習板和培訓
你可以不接受培訓,但是不能不買開發(fā)板。如果你想學習嵌入式一定要買塊學習板,最好買塊arm9的,貴些也值??梢耘芨呒壊僮飨到y(tǒng)。這個不要什么品牌公司的,一般不會出什么問題,市場上的板子一般是三星的2410,基本上是抄的。如果是做產(chǎn)品那要注意些。一般的公司一般要2000,加lcd要3000甚至更多。我接觸到有的板只要1200,加lcd也就2000,差別比較大,我認為學習都夠啦。
對于培訓,如果有條件最好參加,主要是嵌入式相對別的不同,自己摸索很費時,如果有高手指點非常的好,進步快。特別是認識做這些的朋友。我接受過培訓,認識個朋友。在以后的工作中幫我很多,在這里謝謝他!我記得哈佛的一個MBA的學生這樣說,大意是:在哈佛學到什么不重要,最重要的是這些未來各大公司的高級管理人員是我的同學!真是有遠見!
目前市場是培訓比較貴,一個星期兩三千,真正算起來也要,那些講師待遇絕對不會低。但是有個致命的問題是連續(xù)上課,一連幾天,效果不佳。我希望社會上多出些1000元左右,并且時間長些,如一個月,一周一到兩次課。如果沒人做,我來做,哈哈!
沒有想到,一下寫了這么多,其實還想寫的,比如在中科院的一位老兄是怎樣學習linux內(nèi)核和看書的,真的很感動。他的為人我很欽佩。也想介紹毛德操的《嵌入式系統(tǒng)》那本書,對學習arm linux的很好,也想介紹實習和工作的東西,太長了,耽誤大家時間。我也不想檢查里面的錯別字了,很多!就寫到這里吧。
耽誤大家時間了,對不起!可以聯(lián)系我: myemail@embeded.cn