- 相關(guān)推薦
嵌入式系統(tǒng)學(xué)習(xí)心得
當(dāng)我們受到啟發(fā),對學(xué)習(xí)和工作生活有了新的看法時,寫心得體會是一個不錯的選擇,它可以幫助我們了解自己的這段時間的學(xué)習(xí)、工作生活狀態(tài)。怎樣寫好心得體會呢?下面是小編整理的嵌入式系統(tǒng)學(xué)習(xí)心得,歡迎閱讀,希望大家能夠喜歡。
嵌入式系統(tǒng)學(xué)習(xí)心得1
一、嵌入式系統(tǒng)的概念
著重理解“嵌入”的概念
主要從三個方面上來理解。
1、從硬件上,將基于CPU的處圍器件,整合到CPU芯片內(nèi)部,比如早期基于X86體系結(jié)構(gòu)下的計算機(jī),CPU只是有運算器和累加器的功能,一切芯片要造外部橋路來擴(kuò)展實現(xiàn),象串口之類的都是靠外部的16C550/2的串口控制器芯片實現(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個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系列最高主頻可以達(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)核時所選擇的應(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)是計算機(jī)范疇下的一門綜合性學(xué)科
二、嵌入式系統(tǒng)的分層與專業(yè)的分類。
嵌入式系統(tǒng)分為4層,硬件層、驅(qū)動層、操作系統(tǒng)層和應(yīng)用層。
1、硬件層,是整個嵌入式系統(tǒng)的根本,如果現(xiàn)在單片機(jī)及接口這塊很熟悉,并且能用C和匯編語言來編程的話,從嵌入式系統(tǒng)的硬件層走起來相對容易,硬件層也是驅(qū)動層的基礎(chǔ),一個優(yōu)秀的驅(qū)動工程師是要能夠看懂硬件的電路圖和自行完成CPLD的邏輯設(shè)計的,同時還要對操作系統(tǒng)內(nèi)核及其調(diào)度性相當(dāng)?shù)氖煜さ。但硬件平臺是基礎(chǔ),增值還要靠軟件。
硬件層比較適合于,電子、通信、自動化、機(jī)電一體、信息工程類專業(yè)的人來搞,需要掌握的專業(yè)基礎(chǔ)知識有,單片機(jī)原理及接口技術(shù)、微機(jī)原理及接口技術(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ū)動工程師的水平都達(dá)不到,這樣所寫的驅(qū)動在應(yīng)用調(diào)用時就如同windows下我們打開一個程序運行后,再打開一個程序時,要不就是中斷以前的程序,要不就是等上一會才能運行后來打開的程序。想做個好的`驅(qū)動人員沒有三、四年功底,操作系統(tǒng)內(nèi)核不研究上幾編,不是太容易成功的,但其工資在嵌入式系統(tǒng)四層中可是最高的。
驅(qū)動層比較適合于電子、通信、自動化、機(jī)電一體、信息工程類專業(yè)尤其是計算機(jī)偏體系結(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下如何進(jìn)行編程接口函數(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及其它體系相去較遠(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ù)庫的開發(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單片機(jī)的思想很容易能把他搞懂,就當(dāng)成個32位的單片機(jī),從而消除很多51工程師想轉(zhuǎn)為嵌入式系統(tǒng)硬件ARM開發(fā)工程師的困惑,從而不會被業(yè)界某此不是真正懂嵌入式爛公司帶到操作系統(tǒng)層面上去,讓他們望而失畏,讓業(yè)界更加缺少這方面的人才。
而嵌入式系統(tǒng)不管硬件設(shè)計還是軟件驅(qū)動方面都是十分注重接口這部分的,選擇平臺還要考察一個處理器的外部資源,你接觸外部資源越多,越熟悉他們那你以后就業(yè)成功的機(jī)率就越高,這就是招聘時所說的有無“相關(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è)近十年,20xx年ARM出現(xiàn),我一天始做ARM7,然后直接跑到了Xscale(這個板本在ARM10—11之間),一做就是五年,招人面試都不下數(shù)百人,在這些方面還是深有體會的。
我個人認(rèn)為三星的S3C44b0對初學(xué)者來說比較合適,為什么這么說哪?因為接口資源比較豐富,技術(shù)成熟,資料較多,應(yīng)該十分適合于初學(xué)者,有問題可能很容易找人幫且解決,因為大多數(shù)人都很熟悉,就如同51類的單片機(jī),有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ù)要遠(yuǎn)遠(yuǎn)領(lǐng)先于高校。為架構(gòu)業(yè)界與高校溝通的橋梁,把先進(jìn)技能帶給高校學(xué)子,為學(xué)生在就業(yè)競爭中打造一張王牌,并為業(yè)界工程師快速提升實現(xiàn)自我創(chuàng)造機(jī)遇,我就這樣辭去了外企年薪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)氲,我今年暑假時班里最年輕的一個學(xué)生是大二的,今年才上大三,這學(xué)期才剛學(xué)單片機(jī),但現(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è)級講師溝通。他們的方面上我只能說是知道些,但不是太多,初級的問題也可以問我。
對于硬件來講有幾個方向,就單純信號來分為數(shù)字和模擬,模擬比較難搞,一般需要很長的經(jīng)驗積累,單單一個阻值或容值的精度不夠就可能使信號偏差很大。因此年輕人搞的較少,隨著技術(shù)的發(fā)展,出現(xiàn)了模擬電路數(shù)字化,比如手機(jī)的Modem射頻模塊,都采用成熟的套片,而當(dāng)年國際上只有兩家公司有此技術(shù),自我感覺模擬功能不太強的人,不太適合搞這個,如果真能搞定到手機(jī)的射頻模塊,只要達(dá)到一般程度可能月薪都在15K以上。
另一類就是數(shù)字部分了,在大方向上又可分為51/ARM的單片機(jī)類,DSP類,F(xiàn)PGA類,國內(nèi)FPGA的工程師大多是在IC設(shè)計公司從事IP核的前端驗證,這部分不搞到門級,前途不太明朗,即使做個IC前端驗證工程師,也要搞上幾年才能勝任。DSP硬件接口比較定型,如果不向驅(qū)動或是算法上靠攏,前途也不會太大。而ARM單片機(jī)類的內(nèi)容就較多,業(yè)界產(chǎn)品占用量大,應(yīng)用人群廣,因此就業(yè)空間極大,而硬件設(shè)計最體現(xiàn)水平和水準(zhǔn)的就是接口設(shè)計這塊,這是各個高級硬件工程師相互PK,判定水平高低的依據(jù)。而接口設(shè)計這塊最關(guān)鍵的是看時序,而不是簡單的連接,比如PXA255處理器I2C要求速度在100Kbps,如果把一個I2C外圍器件,最高還達(dá)不到100kbps的與它相接,必然要導(dǎo)致設(shè)計的失敗。這樣的情況有很多,比如51單片機(jī)可以在總線接LCD,但為什么這種LCD就不能掛在ARM的總線上,還有ARM7總線上可以外接個Winband的SD卡控制器,但為什么這種控制器接不到ARM9或是Xscale處理器上,這些都是問題。因此接口并不是一種簡單的連接,要看時序,要看參數(shù)。一個優(yōu)秀的硬件工程師應(yīng)該能夠在沒有參考方案的前提下設(shè)計出一個在成本和性能上更加優(yōu)秀的產(chǎn)品,靠現(xiàn)有的方案,也要進(jìn)行適當(dāng)?shù)目尚行圆眉簦皇呛鷣y的來,我遇到一個工程師把方案中的5V變1。8V的DC芯片,直接更換成LDO,有時就會把CPU燒上幾個。前幾天還有人希望我?guī)兔Π阉麄円郧盎赑XA255平臺的手持GPS設(shè)備做下程序優(yōu)化,我問了一下情況,地圖是存在SD卡中的,而SD卡與PXA255的MMC控制器間采用的SPI接口,因此導(dǎo)致地圖讀取速度十分的慢,這種情況是設(shè)計中嚴(yán)重的缺陷,而不是程序的問題,因此我提了幾條建議,讓他們更新試下再說。因此想成為一個優(yōu)秀的工程師,需要對系統(tǒng)整體性的把握和對已有電路的理解,換句話說,給你一套電路圖你終究能看明白多少,看不明白80%以上的話,說明你離優(yōu)秀的工程師還差得遠(yuǎn)哪。其次是電路的調(diào)試能力和審圖能力,但最最基本的能力還是原理圖設(shè)計PCB繪制,邏輯設(shè)計這塊。這是指的硬件設(shè)計工程師,從上面的硬件設(shè)計工程師中還可以分出ECAD工程師,就是專業(yè)的畫PCB板的工程師,和EMC設(shè)計工程師,幫人家解決EMC的問題。硬件工程師再往上就是板級測試工程師,就是C語功底很好的硬件工程師,在電路板調(diào)試過程中能通過自已編寫的測試程序?qū)τ布δ苓M(jìn)行驗證。然后再交給基于操作系統(tǒng)級的驅(qū)動開發(fā)人員。
總之,硬件的內(nèi)容很多很雜,硬件那方面練成了都會成為一個高手,我時常會給人家做下方案評估,很多高級硬件工程師設(shè)計的東西,經(jīng)常被我一句話否定,因此工程師做到我這種地步,也會得罪些人,但硬件的確會有很多不為人知的東西,讓很多高級硬件工程師也摸不到頭腦。
那么高級硬件件工程師技術(shù)技能都要具備那些東西哪,首先要掌握EDA設(shè)計的輔助工具類如ProtelORCADPowperPCBMaplux2ISE、VDHL語言,要能用到這些工具畫圖畫板做邏輯設(shè)計,再有就是接口設(shè)計審圖能力,再者就是調(diào)試能力,如果能走到總體方案設(shè)計這塊,那就基本上快成為資深工程師了。
嵌入式系統(tǒng)學(xué)習(xí)心得2
嵌入式系統(tǒng)用在一些特定專用設(shè)備上,通常這些設(shè)備的硬件資源(如處理器、存儲器等)非常有限,并且對成本很敏感,有時對實時響應(yīng)要求很高等。特別是隨著消費家電的智能化,嵌入式更顯重要。像我們平常常見到的手機(jī)、PDA、電子字典、可視電話、VCD/DVD/MP3 Player、數(shù)字相機(jī)(DC)、數(shù)字?jǐn)z像機(jī)(DV)、U-Disk、機(jī)頂盒(Set Top Box)、高清電視(HDTV)、游戲機(jī)、智能玩具、交換機(jī)、路由器、數(shù)控設(shè)備或儀表、汽車電子、家電控制系統(tǒng)、醫(yī)療儀器、航天航空設(shè)備等等都是典型的嵌入式系統(tǒng)。
看到了嵌入式系統(tǒng)的范圍,你也應(yīng)該知道嵌入式系統(tǒng)工程師是做什么的,就是開發(fā)上面的那些電子產(chǎn)品的工程師。
關(guān)于如何學(xué)習(xí)嵌入式?
學(xué)習(xí)嵌入式,該學(xué)習(xí)什么基本的知識呢?
首先C語言,這個是毋庸置疑的,不管是做嵌入式軟件還是硬件開發(fā)的人員,對C語言的掌握這個是必需的,特別是對于以后致力于嵌入式軟件開發(fā)的人,現(xiàn)在絕大部分都是用C語言,你說不掌握它可以嗎?至于如何學(xué)習(xí)C語言,我想這些基礎(chǔ)的'知識每個人都有自己的方法,關(guān)鍵要去學(xué)習(xí),看書也好,網(wǎng)上找些視頻看也好。很多人會問,C語言要學(xué)到怎么樣,我覺得這沒有標(biāo)準(zhǔn)的答案。我想至少你在明白了一些基礎(chǔ)的概念后,就該寫代碼了,動手才是最重要的,當(dāng)你動手了,遇到問題了,再反過來學(xué)習(xí),反過來查查課本,那時的收獲就不是你死看書能得到的。
其次,應(yīng)該對操作系統(tǒng)有所了解,這對你對硬件和軟件的理解,絕對有很大的幫助。應(yīng)該把系統(tǒng)的管理理解一下,比如進(jìn)程、線程,系統(tǒng)如何來分配資源的,系統(tǒng)如何來管理硬件的,當(dāng)然,不是看書就能把這些理解透,如果不是一時能理解,沒關(guān)系,多看看,結(jié)合以后的項目經(jīng)驗,會有更好的理解的。
還有應(yīng)該學(xué)習(xí)嵌入式系統(tǒng),如linux或者wince下的編程,這些對以后做應(yīng)用的編程很有幫助,當(dāng)然,如果做手機(jī)的話,那可以學(xué)習(xí)MTK、塞班、Android等操作系統(tǒng),Android是以后發(fā)展的趨勢,現(xiàn)在很熱門,Android也是基于linux系統(tǒng)封裝的,所以建議先學(xué)習(xí)下linux。
還有,應(yīng)該學(xué)習(xí)下單片機(jī)或者ARM或者M(jìn)IPS,很多人說我沒有單片機(jī)的經(jīng)驗,直接學(xué)ARM可以嗎?我覺得那完全沒有問題的,當(dāng)然如果你學(xué)習(xí)過單片機(jī),那最好不過了,以后學(xué)習(xí)ARM就更簡單了。
最后如果你把以上的知識都有所了解后,就該去閱讀閱讀一些優(yōu)秀的代碼,比如結(jié)合arm芯片手冊學(xué)習(xí)去學(xué)習(xí)下UBOOT的源代碼,了解下最小的系統(tǒng)開發(fā),那對你整個嵌入式開發(fā)的非常有幫助的,可以的話,還可以學(xué)習(xí)下linux的源代碼,當(dāng)然如果你直接閱讀2.6的代碼,我想你會很痛苦的,可以先看看linux 代碼早期的版本,比如0.12 的代碼等等,麻雀雖小,五臟俱全,如果你全看完了,那我想你就是一名很成功的嵌入式工程師。
至于上面說的知識如何學(xué)習(xí)呢?每個人都應(yīng)該去找自己最好的方法,所謂的最好的方法就是最適合自己的方法。很多人看不進(jìn)書,那就去看看視頻吧。視頻也應(yīng)該要選擇,不是隨便看看,應(yīng)該要有所選擇,有所挑選。我也是這樣一路走過來的,不過我這人比較懶,我看不進(jìn)書,一看書我就想睡覺,所以這幾年我都是看視頻過來的,現(xiàn)在也算學(xué)有所成,但也不敢說是高手吧。
我在網(wǎng)上看到,有人把自己學(xué)習(xí)嵌入式的視頻總結(jié)出來,嵌入式系列實踐和視頻教程,大家可以看看網(wǎng)址我仔細(xì)看了覺得很不錯,我本來也想整理下,可是奈何我自己的電腦硬盤空間才40G,沒有辦法,時間也是不夠,心有余而力不足,我不是在幫他做廣告,雖然要花錢,我覺得算不錯,至少自己不用去整理和花大量的時間去找資源,當(dāng)然如果網(wǎng)上有的下,你網(wǎng)速和硬盤都夠的話,我建議大家自己網(wǎng)上下也好。想想我自己該開始學(xué)的時候,那時視頻資源少之又少,我買書和買視頻至少花了幾千塊,但是我覺得那很值,至少我現(xiàn)在賺回來了很多知識。
最后,希望這篇文章對熱愛嵌入式,想致力于嵌入式開發(fā)的朋友有所幫助。送給大家一句簡單而又樸素的話,堅持就是勝利,貴在堅持,也可以看看如何堅持嵌入式學(xué)習(xí)!
嵌入式系統(tǒng)學(xué)習(xí)心得3
1、基礎(chǔ)知識
嵌入式開發(fā)很大一部分靠C語言,尤其在底層驅(qū)動等用的很多,當(dāng)然在應(yīng)用開發(fā)還用到諸如C++等其他語言,但我想對于一個初學(xué)者有C基礎(chǔ)就足夠了,等到學(xué)到一定程度再去擴(kuò)展。所以C基礎(chǔ)是學(xué)嵌入式的前提。
關(guān)于C語言需要知道基本的語法,什么是結(jié)構(gòu)體,什么是共用體,有什么區(qū)別,不用強記一些實際中用的很少的東西。C++要知道什么是類,怎么定義,繼承,接口,要深刻理解,當(dāng)然基本語法也是必不可少的。
操作系統(tǒng)原理也需要基本理解和掌握的,我記得我上課的時候不以為然沒有認(rèn)真學(xué)習(xí),后來發(fā)現(xiàn)很多的東西都是在這個課上講到的。什么時間片啊,任務(wù)調(diào)度啊,都是在那里知道的。
Linux基本命令的使用(vi編輯器必須會用,因為在終端修改文件的時候只能用這個),我們現(xiàn)在很多的人都習(xí)慣用鼠標(biāo)了,很少用到命令,我學(xué)習(xí)嵌入Linux就強迫自己去改掉這個習(xí)慣了,Linux用命令操作一是效率高,二是功能非常強大,遠(yuǎn)非圖形界面能比的了的,其實我們用圖形界面的操作都要轉(zhuǎn)化為命令傳給硬件的。Linux文件系統(tǒng)的管理要清楚,哪個目錄存放是什么東西,有什么用,文件權(quán)限管理等。
2、單片機(jī)知識的學(xué)習(xí)
我覺得單片機(jī)、嵌入式等這一類都有很大的相似性,知識功能不一樣,但工作的原理、控制原理都和大的`相似。就我個人而言,能比較快的進(jìn)入嵌入式的學(xué)習(xí)與提高,很大一部分依賴于對單片機(jī)的原理有較深入的學(xué)習(xí)和理解,單片機(jī)比較簡單,學(xué)習(xí)起來相對比較容易,所以我建議想學(xué)嵌入式的同學(xué),可以和我一樣從單片機(jī)入手,那樣不僅可以理解這些微處理器、微控制器的操作與控制原理,當(dāng)然還可以順便學(xué)學(xué)匯編語言,這對后面的嵌入式學(xué)習(xí)都有很大的幫助。
看書不要希望一次就會,一次就明白是什么意思,也不要死記硬背,看不明白也沒關(guān)系,以后遇到了知道去哪里去找就可以了,以后遇到的多了,也就記住了,遇到的少的,忘記也就忘記了。還有,不要直接閱讀Linux內(nèi)核源代碼,看一些自己把頭撞破也想不明白的事,一開始很打擊我的積極性,要循序漸進(jìn),剛開始我就從學(xué)習(xí)做led開始的,接著學(xué)習(xí)做個串口,慢慢的就開始學(xué)著做硬件編解碼了。
3、學(xué)習(xí)開發(fā)板
我在剛開始學(xué)習(xí)嵌入式時就買了一塊學(xué)習(xí)板,現(xiàn)在的開發(fā)板不是很貴,給很我們初學(xué)者減輕了經(jīng)濟(jì)負(fù)擔(dān)。看再多的視頻,看再多的書,也不如自己動手試一下,看著很簡單的東西,做起來就可能遇到很多的問題,遇到問題找到原因,解決問題,只有這樣才能學(xué)到東西,記得我第一次寫led的驅(qū)動,想自己試一下,網(wǎng)上也有人寫過相關(guān)的代碼,可是自己一試,就出了好多的問題,那個led弄了我一天才把led燈點亮。所以不要眼高手低。
4、不要好高騖遠(yuǎn),要腳踏實地
我拿到開發(fā)板時,很興奮也很激動,想法自然也很多,想用開發(fā)板實現(xiàn)自己的這個想法,實現(xiàn)那個想法,然后又不知道從何下手,然后就去論壇中發(fā)一個貼,“那個什么什么怎么實現(xiàn)啊,哪位大俠能詳細(xì)說一下啊,跪求。 ,然后等著別人去回復(fù)。我覺得有想法是好的,我們要實現(xiàn)自己的想法也是有前提的,首先,我們對這部分知識了解嗎?如果不了解就去Google一下(最好別用百度,不太好用),了解了一些,也就大概知道要怎么做了。如果再遇到問題,再去發(fā)貼問,這樣也顯得我們有一點點水平啦。比如自己連串口是什么都不太清楚呢,就問串口通信怎么做啊,就是人家把代碼給我們,我們也不明白是怎么回事啊。
5、多看代碼,多寫代碼
見多識廣,熟能生巧。多看代碼,要從代碼中讀出代碼的意思來。自己平時也要多寫代碼,多練習(xí)(這一點我做的不好,寫的少)。
個人覺得這是最重要的一種做法。這東西沒自己親手做,程序沒親手寫,沒有進(jìn)行調(diào)試等,都是很難學(xué)到東西,因為很多東西感覺看的都懂,其實真正做起來就什么都不會了。因此買塊板來自己做,這樣才能真正將所學(xué)的應(yīng)用到實際中去。而且這樣做印象才能深刻,死記硬背原理及規(guī)則不但不可行還會拖垮你的學(xué)習(xí)興趣,自然學(xué)不下。
總之,我覺得,基礎(chǔ)知識很重要,但是動手做更重要!
【嵌入式系統(tǒng)學(xué)習(xí)心得】相關(guān)文章:
嵌入式系統(tǒng)的設(shè)計與開發(fā)10-01
嵌入式Linux系統(tǒng)中的GUI系統(tǒng)的研究與移植10-01
嵌入式系統(tǒng)的應(yīng)用與開發(fā)論文09-09
嵌入式系統(tǒng)與普適計算10-01
嵌入式操作系統(tǒng)uCLinux10-01
嵌入式系統(tǒng)的實時性問題10-01
嵌入式系統(tǒng)中的CACHE問題10-01