第一篇:嵌入式開發(fā)學(xué)習(xí)心得
個人學(xué)習(xí)嵌入式心得體會
就我個人而言,從最開始對嵌入式一竅不通到現(xiàn)在越學(xué)越感興趣,當(dāng)然相應(yīng)在嵌入式方面的提高也是很明顯的。學(xué)習(xí)潛入式越來越成為我學(xué)習(xí)生活的一部分,現(xiàn)在把我的學(xué)習(xí)過程與大家一起分享,希望那些和我一樣對嵌入式想學(xué)而又迷茫,不知從哪入手的同學(xué)朋友有所幫助。
一、語言基礎(chǔ)
嵌入式開發(fā)很大一部分靠C語言,尤其在底層驅(qū)動等用的很多,當(dāng)然在應(yīng)用開發(fā)還用到諸如C++等其他語言,但我想對于一個初學(xué)者有C基礎(chǔ)就足夠了,等到學(xué)到一定程度再去擴展。所以,C 基礎(chǔ)是學(xué)嵌入式的前提。
二、單片機等知識的儲備
我覺得單片機、嵌入式等這一類都有很大的相似性,知識功能不一樣,但工作的原理、控制原理都和大的相似。就我個人而言,能比較快的進入嵌入式的學(xué)習(xí)與提高,很大一部分依賴于對單片機的原理有較深入的學(xué)習(xí)和理解,單片機比較簡單,學(xué)習(xí)起來相對比較容易,所以我建議哪些想學(xué)潛入式的同學(xué),可以和我一樣從單片機入手,那樣不僅可以理解這些微處理器、微控制器的操作與控制原理,當(dāng)然還可以順便學(xué)學(xué)匯編語言,這對后面的嵌入式學(xué)習(xí)都有很大的幫助。
三、接受培訓(xùn)
暑假,我在學(xué)院的組織下參加過ICC的嵌入式培訓(xùn),雖然接觸的都是皮毛,但是對我進入嵌入式的學(xué)習(xí)起了一個很好的引導(dǎo)作用。所以,如果有條件的可以去報名正規(guī)的專門的培訓(xùn)班,這樣如果遇到問題也可以比較容易的得到老師或?qū)I(yè)人士的指導(dǎo),提高學(xué)習(xí)效率。
四、買開發(fā)板自己動手做
個人覺得這是最重要的一種做法。這東西沒自己親手做,程序沒親手寫,沒有進行調(diào)試等,都是很難學(xué)到東西,因為很多東西感覺看的都懂,其實真正做起來就什么都不會了。因此買塊板來自己做,這樣才能真正將所學(xué)的應(yīng)用到實際中去。而且這樣做映像很深,死記硬背原理及規(guī)則不但不可行還會拖垮你的學(xué)習(xí)興趣,自然學(xué)不下。
總之,我覺得,基礎(chǔ)知識很重要,但是動手做更重要!我能說的就這些了,能力有限,不好的地方請指教!
第二篇:嵌入式開發(fā)學(xué)習(xí)心得
嵌入式開發(fā)學(xué)習(xí)心得
嵌入式開發(fā)學(xué)習(xí)心得
就我個人而言,從最開始對嵌入式一竅不通到現(xiàn)在越學(xué)越感興趣,當(dāng)然相應(yīng)在嵌入式方面的提高也是很明顯的。學(xué)習(xí)嵌入式越來越成為我學(xué)習(xí)中的一部分,現(xiàn)在把我的學(xué)習(xí)過程的心得體會與大家一起分享,希望那些和我一樣對嵌入式想學(xué)而又迷茫,不知從哪入手的同學(xué)朋友有所幫助。基礎(chǔ)知識
嵌入式開發(fā)很大一部分靠C語言,尤其在底層驅(qū)動等用的很多,當(dāng)然在應(yīng)用開發(fā)還用到諸如C++等其他語言,但我想對于一個初學(xué)者有C基礎(chǔ)就足夠了,等到學(xué)到一定程度再去擴展。所以C 基礎(chǔ)是學(xué)嵌入式的前提。
關(guān)于C語言需要知道基本的語法,什么是結(jié)構(gòu)體,什么是共用體,有什么區(qū)別,不用強記一些實際中用的很少的東西。C++要知道什么是類,怎么定義,繼承,接口,要深刻理解,當(dāng)然基本語法也是必不可少的。
操作系統(tǒng)原理也需要基本理解和掌握的,我記得我上課的時候不以為然沒有認真學(xué)習(xí),后來發(fā)現(xiàn)很多的東西都是在這個課上講到的。什么時間片啊,任務(wù)調(diào)度啊,都是在那里知道的。
Linux基本命令的使用(vi編輯器必須會用,因為在終端修改文件的時候只能用這個),我們現(xiàn)在很多的人都習(xí)慣用鼠標(biāo)了,很少用到命令,我學(xué)習(xí)嵌入Linux就強迫自己去改掉這個習(xí)慣了,Linux用命令操作一是效率高,二是功能非常強大,遠非圖形界面能比的了的,其實我們用圖形界面的操作都要轉(zhuǎn)化為命令傳給硬件的。Linux文件系統(tǒng)的管理要清楚,哪個目錄存放是什么東西,有什么用,文件權(quán)限管理等。單片機知識的學(xué)習(xí)
我覺得單片機、嵌入式等這一類都有很大的相似性,知識功能不一樣,但工作的原理、控制原理都和大的相似。就我個人而言,能比較快的進入嵌入式的學(xué)習(xí)與提高,很大一部分依賴于對單片機的原理有較深入的學(xué)習(xí)和理解,單片機比較簡單,學(xué)習(xí)起來相對比較容易,所以我建議想學(xué)嵌入式的同學(xué),可以和我一樣從單片機入手,那樣不僅可以理解這些微處理器、微控制器的操作與控制原理,當(dāng)然還可以順便學(xué)學(xué)匯編語言,這對后面的嵌入式學(xué)習(xí)都有很大的幫助。
看書不要希望一次就會,一次就明白是什么意思,也不要死記硬背,看不明白也沒關(guān)系,以后遇到了知道去哪里去找就可以了,以后遇到的多了,也就記住了,遇到的少的,忘記也就忘記了。還有,不要直接閱讀Linux內(nèi)核源代碼,看一些自己把頭撞破也想不明白的事,一開始很打擊我的積極性,要循序漸進,剛開始我就從學(xué)習(xí)做led開始的,接著學(xué)習(xí)做個串口,慢慢的就開始學(xué)著做硬件編解碼了。學(xué)習(xí)開發(fā)板
我在剛開始學(xué)習(xí)嵌入式時就買了一塊學(xué)習(xí)板,現(xiàn)在的開發(fā)板不是很貴,給很我們初學(xué)者減輕了經(jīng)濟負擔(dān)??丛俣嗟囊曨l,看再多的書,也不如自己動手試一下,看著很簡單的東西,做起來就可能遇到很多的問題,遇到問題找到原因,解決問題,只有這樣才能學(xué)到東西,記得我第一次寫led的驅(qū)動,想自己試一下,網(wǎng)上也有人寫過相關(guān)的代碼,可是自己一試,就出了好多的問題,那個led弄了我一天才把led燈點亮。所以不要眼高手低。不要好高騖遠,要腳踏實地
我拿到開發(fā)板時,很興奮也很激動,想法自然也很多,想用開發(fā)板實現(xiàn)自己的這個想法,實現(xiàn)那個想法,然后又不知道從何下手,然后就去論壇中發(fā)一個貼,“那個什么什么怎么實現(xiàn)啊,哪位大俠能詳細說一下啊,跪求!”,然后等著別人去回復(fù)。我覺得有想法是好的,我們要實現(xiàn)自己的想法也是有前提的,首先,我們對這部分知識了解嗎?如果不了解就去Google一下(最好別用百度,不太好用),了解了一些,也就大概知道要怎么做了。如果再遇到問題,再去發(fā)貼問,這樣也顯得我們有一點點水平啦。比如自己連串口是什么都不太清楚呢,就問串口通信怎么做啊,就是人家把代碼給我們,我們也不明白是怎么回事啊。多看代碼,多寫代碼
見多識廣,熟能生巧。多看代碼,要從代碼中讀出代碼的意思來。自己平時也要多寫代碼,多練習(xí)(這一點我做的不好,寫的少)。
個人覺得這是最重要的一種做法。這東西沒自己親手做,程序沒親手寫,沒有進行調(diào)試等,都是很難學(xué)到東西,因為很多東西感覺看的都懂,其實真正做起來就什么都不會了。因此買塊板來自己做,這樣才能真正將所學(xué)的應(yīng)用到實際中去。而且這樣做印象才能深刻,死記硬背原理及規(guī)則不但不可行還會拖垮你的學(xué)習(xí)興趣,自然學(xué)不下。
總之,我覺得,基礎(chǔ)知識很重要,但是動手做更重要!
第三篇:嵌入式學(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í)行。(此部分在附錄二中細說)
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)用程序屏蔽了硬件的細節(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é)
課以后我們一定仔細想在實驗中做的不足,以及實驗中給我的資源我如何合理的應(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)期間收獲很多,也認識了班上的學(xué)習(xí)大神,經(jīng)過系統(tǒng)的學(xué)習(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)對功能、可靠性、成本、體積、功耗等嚴格要求的專用計算機系統(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)。在課堂上,老師們認真的演講,以及手把手地教導(dǎo),使每個學(xué)生都能夠扎實地掌握到嵌入式的各方面的知識。而粵嵌教育的老師也是操作實踐為主,實踐是非常重要的,只有把知識掌握到位,才能達到學(xué)習(xí)的目的。感謝粵嵌教育機構(gòu),感謝粵嵌教育老師。