嵌入式學(xué)習(xí)的心得體會(huì)_第1頁
嵌入式學(xué)習(xí)的心得體會(huì)_第2頁
嵌入式學(xué)習(xí)的心得體會(huì)_第3頁
嵌入式學(xué)習(xí)的心得體會(huì)_第4頁
嵌入式學(xué)習(xí)的心得體會(huì)_第5頁
已閱讀5頁,還剩5頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

第第頁嵌入式學(xué)習(xí)的心得體會(huì)

本人本科學(xué)的是電子信息工程專業(yè),其實(shí)這個(gè)專業(yè)和嵌入式?jīng)]有多大的關(guān)系,要說有關(guān)系就是簡(jiǎn)約的講了下C語言語法,學(xué)完之后還不知道什么是C語言,只記住了char,int,long等占幾個(gè)字節(jié),if,while,for循環(huán)什么的,感覺也就能算一些學(xué)校就會(huì)的題目,全國(guó)計(jì)算機(jī)二級(jí)C語言也就糊涂的過了。我這個(gè)專業(yè)沒學(xué)過C++,一開始不知道什么是面對(duì)對(duì)象,這可能會(huì)讓人笑話了。不過這說的是實(shí)話,本科的時(shí)候,學(xué)院安排的課程大部分偏硬件部分,動(dòng)手機(jī)會(huì)比較多,自然而然比較喜愛硬件方面。

在大二的時(shí)候就聽學(xué)長(zhǎng)說,單片機(jī)很難學(xué),那時(shí)候經(jīng)學(xué)長(zhǎng)介紹,淘寶買了本郭天祥老師出的書《51單片機(jī)C語言教程》,一開始還真是不怎么懂,感覺有點(diǎn)像是看天書,然后硬著頭皮去看,當(dāng)我把51的結(jié)構(gòu)看完了,就不像一開始那樣一頭霧水了,自己在紙上把51的結(jié)構(gòu)圖默畫一遍,然后再把各個(gè)寄存器功能寫一下,各個(gè)功能口的結(jié)構(gòu)粗略畫了下,然后覺得51整體已在我心中了,雖然沒有什么作用,但是至少懂得這門課要怎么去學(xué)習(xí)。其實(shí)有些時(shí)候不是這個(gè)東西你不會(huì),而是在不會(huì)的時(shí)候自己先告知自己這個(gè)太難了,自己先放棄了。

在大三的時(shí)候,第一學(xué)期課比較少,我就常常待在圖書館,會(huì)去蠻看些專業(yè)相關(guān)的書籍,現(xiàn)在想想,那時(shí)候也是機(jī)緣巧合下,看到了一本書《從51到ARM》,講解并描述的是從51系列單片機(jī)的一般知識(shí)出發(fā),將arm處理器和51系列單片機(jī)進(jìn)行對(duì)比,引導(dǎo)讀者去理解和學(xué)習(xí)arm處理器的知識(shí)。那個(gè)時(shí)候也有考慮到以后就業(yè)的問題,就想到一件事情,假如去應(yīng)聘工作的話,每個(gè)工科院校電子信息類的畢業(yè)生都會(huì)異口同聲地說:我會(huì)51系列單片機(jī)。當(dāng)他說這句話的時(shí)候,他和別人是站在同一起跑線上的??晌覀兺耆锌赡芎蛣e人不站在同一起跑線上。正是這本書給我開啟了另外一扇大門,讓我初步了解了嵌入式。后來去報(bào)考全國(guó)計(jì)算機(jī)等級(jí)考試三級(jí)教程——嵌入式系統(tǒng)開發(fā)技術(shù),在圖書館奮斗了兩個(gè)月,最末取得優(yōu)秀的成果,也讓我進(jìn)一步了解嵌入式系統(tǒng)。

在大四的時(shí)候,我們有嵌入式的選修課,不過當(dāng)時(shí)由于考研的緣故,就沒有去上過這門課,好惋惜呀!但是,在選擇讀研討論方向的時(shí)候我還是毅然選擇了嵌入式方向,我知道這將成為我將來三年討論的方向。這學(xué)期(研一下學(xué)期),很快樂能夠再次接觸嵌入式系統(tǒng)這門課程,對(duì)于導(dǎo)師教的這門課程,我覺得自己上課還是蠻仔細(xì)聽講的,當(dāng)然也被師在臺(tái)上那講得井井有條,溫文儒雅的風(fēng)姿所吸引。對(duì)于沒有學(xué)過微機(jī)8086的我,有些時(shí)候,老師用微機(jī)與嵌入式的對(duì)比讓我頭腦沒有相關(guān)概念...

首先,我對(duì)嵌入式在概念上有了一個(gè)比較精確的了解。嵌入式是指以應(yīng)用為中心,以計(jì)算機(jī)為基礎(chǔ),并且軟硬件可裁剪,適用于對(duì)功能、牢靠性、成本、體積和功耗有嚴(yán)格要求的專用計(jì)算機(jī)系統(tǒng)。它由硬件平臺(tái)和系統(tǒng)軟件組成。硬件平臺(tái)指嵌入式處理器和與之通過接口連接的外圍硬件平臺(tái)。系統(tǒng)軟件是指實(shí)時(shí)操作系統(tǒng)和用戶應(yīng)用軟件。

談到硬件部分,我首先想到的是嵌入式處理器那些外圍功能模塊。對(duì)于這部分的學(xué)習(xí),我起初花了好長(zhǎng)時(shí)間看《深入淺出ARM7——LPC2400》這本書,現(xiàn)在想想覺得自己學(xué)習(xí)方法沒用對(duì),完全沒有那個(gè)須要,自己卻花了大把時(shí)間在看這些寄存器引腳的運(yùn)用,由于單純的看過之后還是很簡(jiǎn)單忘的,之后在進(jìn)行試驗(yàn)的時(shí)候還是翻書來查就證明白這一點(diǎn)。不過一些最基本的模塊,例如通用輸入/輸出口(GPIO),通用異步收發(fā)器(UART),向量中斷掌握器(VIC),外部中斷輸入和定時(shí)器/計(jì)數(shù)器還是需要看書仔細(xì)去記住那些常用的引腳功能。對(duì)于CPU異樣這部分,我一開始以為異樣就是中斷,由于處理程序流程設(shè)計(jì)是相像的,都是懇求處理器打斷正常的程序執(zhí)行流程,進(jìn)入特定程序的一種機(jī)制。當(dāng)時(shí)還對(duì)老師提出的一個(gè)看法有點(diǎn)疑義,51可以處理中斷嵌套而ARM處理器卻不能?我當(dāng)時(shí)腦子里面就在想:中斷不都是有硬件設(shè)備產(chǎn)生的,那按常理來講ARM處理器也可以處理的呀。后來在仔細(xì)查書,發(fā)覺CPU異樣有7種:復(fù)位,數(shù)據(jù)中止,中斷,快中斷,預(yù)取中止,未定義,軟件中斷。而異樣向量會(huì)使CPU轉(zhuǎn)入異樣入口地址執(zhí)行程序,開始了異樣處理。同理的話,中斷向量使CPU轉(zhuǎn)入中斷入口地址執(zhí)行程序,開始了中斷處理。即當(dāng)發(fā)生IRQ中斷時(shí),程序返回地址被存入該IRQ中斷模式下的LR,假如繼續(xù)發(fā)生IRQ中斷,那第二次的中斷返回地址也還是被存入該IRQ中斷模式下的LR中,那原先發(fā)生中斷時(shí)候存入的程序返回地址將被掩蓋掉,導(dǎo)致不能返回正確的位置。在我解決這個(gè)問題的期間,每次睡前思維準(zhǔn)會(huì)定格在這問題上,久久不能繞出來,其實(shí)有時(shí)候查書還是最好的解決方案,由于網(wǎng)絡(luò)資源只能提供應(yīng)我們部分的參考資料。

對(duì)于ARM匯編語言這部分的學(xué)習(xí),我認(rèn)為是需要重視的,學(xué)匯編不是說用這語言做多牛逼的事情,問題的關(guān)鍵在于,學(xué)透了匯編會(huì)使你真正理解計(jì)算機(jī)。另外一方面,只要以后在嵌入式工作中你遲早會(huì)在某個(gè)陰暗的角落里遇到匯編。“不管你承認(rèn)不承認(rèn),現(xiàn)在的CPU沒有徑直跑高級(jí)語言的,哪怕是虛擬機(jī)也都是類似匯編的指令集.當(dāng)遇到崩潰分析,性能優(yōu)化甚至編譯器抽風(fēng)等等的時(shí)候,匯編是你最末一根救命稻草(這句話是福來師兄講的)。”為此他給了我們一份資料,周立功lpc21**/lpc22**系列ARM7啟動(dòng)代碼分析,主要講解并描述的是startup.s文件的分析,看了下才發(fā)覺老師上課講的那個(gè)啟動(dòng)代碼分析許多不理解之處這里都有具體的介紹,這分析太精辟了。

學(xué)ARM7這么久,我認(rèn)為從硬件上講,一方面就是學(xué)習(xí)接口電路設(shè)計(jì),另一方面就是學(xué)習(xí)匯編和C語言的板級(jí)編程。假如從軟件上講,就是要學(xué)習(xí)基于ARM處理器的操作系統(tǒng)層面的驅(qū)動(dòng)和移植。這些對(duì)于我們初學(xué)者來說需要明確,要么從硬件著手開始學(xué),要么從操作系統(tǒng)的熟識(shí)到應(yīng)用開始學(xué),但不管學(xué)什么,只要不是純的操作系統(tǒng)級(jí),硬件的寄存器類的東西還是要能看懂的,基于板級(jí)的匯編和C編程還是要會(huì)的。

μC/OS-II是一種基于優(yōu)先級(jí)的搶占式多任務(wù)實(shí)時(shí)操作系統(tǒng),包含了實(shí)時(shí)內(nèi)核、任務(wù)管理、時(shí)間管理、任務(wù)間通信同步(信號(hào)量,郵箱,消息隊(duì)列)和內(nèi)存管理等功能。它可以使各個(gè)任務(wù)獨(dú)立工作,互不干涉,很簡(jiǎn)單實(shí)現(xiàn)準(zhǔn)時(shí)而且無誤執(zhí)行,使實(shí)時(shí)應(yīng)用程序的設(shè)計(jì)和擴(kuò)展變得簡(jiǎn)單,使應(yīng)用程序的設(shè)計(jì)過程大為減化。μC/OS-II是一個(gè)完整的、可移植、可固化、可裁剪的占先式實(shí)時(shí)多任務(wù)內(nèi)核。μC/OS-II絕大部分的代碼是用ANSI的C語言編寫的,包含一小部分匯編代碼,使之可供不同架構(gòu)的微處理器運(yùn)用。

μC/OS-II可以大致分成內(nèi)核結(jié)構(gòu)、任務(wù)管理、時(shí)間管理、任務(wù)之間通信與同步4個(gè)部分。內(nèi)核結(jié)構(gòu)是操作系統(tǒng)的處理核心,包括操作系統(tǒng)初始化、操作系統(tǒng)運(yùn)行、中斷進(jìn)出的前導(dǎo)、時(shí)鐘節(jié)拍、任務(wù)調(diào)度、事項(xiàng)處理等多部分。任務(wù)管理部分中的內(nèi)容都是與任務(wù)的操作親密相關(guān)的。包括任務(wù)的建立、刪除、掛起、復(fù)原等等。由于μC/OS-II是以任務(wù)為基本單位調(diào)度的,所以這部分內(nèi)容也相當(dāng)重要。μC/OS-II中的最小時(shí)鐘單位是timetick(時(shí)鐘節(jié)拍),任務(wù)延時(shí)等操作是在時(shí)間管理這部分完成的。任務(wù)之間通信與同步為事項(xiàng)處理部分,包括信號(hào)量、郵箱、郵箱隊(duì)列、事項(xiàng)標(biāo)識(shí)等部分;主要用于任務(wù)間的相互聯(lián)系和對(duì)臨界資源的訪問。μC/OS-Ⅱ操作系統(tǒng)是在main()中建立的,首先要系統(tǒng)初始化,OSInit(),初始化系統(tǒng)全部的變量和數(shù)據(jù)結(jié)構(gòu)。然后進(jìn)行任務(wù)的創(chuàng)建,OSTaskCreate();之后進(jìn)行多任務(wù)的啟動(dòng),OSStart()。在進(jìn)行任務(wù)的并行處理的時(shí)候,一個(gè)任務(wù)的程序是順次執(zhí)行的,而不同任務(wù)的程序卻是并行執(zhí)行的。從應(yīng)用程序的觀點(diǎn)來看,此處的并行處理只是一個(gè)假象。而事實(shí)上它是通過實(shí)時(shí)操作系統(tǒng)的內(nèi)核掌握任務(wù)之間的切換來實(shí)現(xiàn)的,也就是任務(wù)調(diào)度啦。

μCOS-Ⅱ總是運(yùn)行進(jìn)入就緒態(tài)任務(wù)中優(yōu)先級(jí)最高的那一個(gè)。當(dāng)創(chuàng)建新任務(wù)時(shí),或當(dāng)前任務(wù)調(diào)用一些可能把自己掛起的系統(tǒng)函數(shù)(如OSMBo*Pend)時(shí),內(nèi)核就要進(jìn)行任務(wù)切換。在上述的場(chǎng)合,任務(wù)級(jí)的調(diào)度是由函數(shù)OSSched()完成的。

在一個(gè)多任務(wù)的應(yīng)用工程中,任務(wù)之間并不是完全獨(dú)立的,它們存在一些需相互協(xié)作的處理,這些相互協(xié)作是靠任務(wù)間的通訊或同步,信號(hào)量、郵箱、消息隊(duì)列可以實(shí)現(xiàn)這種任務(wù)與任務(wù),任務(wù)與中斷服務(wù)函數(shù)間的通訊與同步。

郵箱可以使一個(gè)任務(wù)或者中斷服務(wù)子程序向另一個(gè)任務(wù)發(fā)送一個(gè)指針型的'變量。而信號(hào)量不能,其只能發(fā)送信號(hào)量。消息隊(duì)列可以使一個(gè)任務(wù)或者中斷服務(wù)子程序向另一個(gè)任務(wù)發(fā)送以指針方式定義的變量。因詳細(xì)的應(yīng)用有所不同,每個(gè)指針指向的數(shù)據(jù)結(jié)構(gòu)變量也有所不同,事實(shí)上,我們可以將消息隊(duì)列看作多個(gè)郵箱組成的數(shù)組,只是它們共用一個(gè)等待任務(wù)列表。

我們?cè)囼?yàn)所用的ARM開發(fā)工具是ADS1.2。ARMADS全稱為ARMDeveloperSuite,是ARM公司推出的新一代ARM集成開發(fā)工具。現(xiàn)在ADS的最新版本是1.2,支持軟件調(diào)試及JTAG硬件仿真調(diào)試、支持匯編、C語言、C++源程序,具有編譯效率高、系統(tǒng)庫功能強(qiáng)等特點(diǎn)。在安裝ADS1.2的時(shí)候涌現(xiàn)過小問題,當(dāng)時(shí)我的電腦是64位的,安裝完之后顯示不了,后來百度查找到緣由,竟然是文件夾放錯(cuò)地方,應(yīng)當(dāng)放在ProgramFiles(*86)這個(gè)文件夾中。后來有同學(xué)問我這方面的問題,但是發(fā)覺他們的ADS1.2安裝不了的緣由是由于Licence弄錯(cuò)了。在打開CodeWarriorforARMDeveloperSuite的時(shí)候,肯定要記得選DebugInChipRAM,否那么Make都涌現(xiàn)許多error,而且那些幾乎都是未定義函數(shù)的錯(cuò)誤。之后就進(jìn)行Debug,調(diào)試勝利之后會(huì)跳出A*D的界面,選擇Options里面的ConfigureTarget,再添加H-JTAG的文件,之后點(diǎn)擊GO,程序會(huì)跳出匯編語言的界面,再點(diǎn)擊下就跳到C語言程序入口地址,之后再點(diǎn)擊下GO,程序就開始跑起來。前面所述的這些步驟是抱負(fù)狀況下程序自身沒有發(fā)生錯(cuò)誤,當(dāng)然在調(diào)試過程中,還是有許多硬件上的問題,一方面是有些開發(fā)板可能用久了,用JTAG并口連接的時(shí)候接觸不良,很簡(jiǎn)單自動(dòng)掉線,常涌現(xiàn)未連接設(shè)備的的Error,還有一方面是跑程序過程常會(huì)涌現(xiàn)兼容性的問題,導(dǎo)致程序A*D調(diào)試時(shí)候會(huì)涌現(xiàn)卡在某個(gè)部分一貫進(jìn)入死循環(huán),這個(gè)后來是解決了,但是間或還是會(huì)涌現(xiàn)這個(gè)BUG。

通過這學(xué)期對(duì)嵌入式的學(xué)習(xí),我發(fā)覺自己尚未掌控的知識(shí)點(diǎn)還是蠻多的,尤其是對(duì)μC/OS-II的移植方面,我只是理論上粗略了解,沒有經(jīng)過試驗(yàn)的操作。還有對(duì)存儲(chǔ)器加速模塊(MAM)這方面不夠了解,主要一方面起初在做消息隊(duì)列采集試驗(yàn)(KeySem_SampdataQeue),這個(gè)模塊被代替掉,不需要運(yùn)用它,所以后來也沒有去掌控相關(guān)知識(shí)點(diǎn)。對(duì)于任務(wù)就緒算法這部分,我只是上課的時(shí)候聽“懂”了,課后自己再看完全懵了。對(duì)于CAN總線調(diào)試的部分,老師上課沒有講到這部分的介紹與應(yīng)用,但是后來通過自己對(duì)試驗(yàn)室?guī)熜謧兯龅恼n題初步了解,發(fā)覺我自己有須要去弄懂它的構(gòu)造和原理。

“看書不要盼望一次就會(huì),一次就明白是什么意思,也不要死記硬背,看不明白也沒關(guān)系,以后遇到了知道去哪里去找就可以了,以后遇到的多了,也就記住了,遇到的少的,忘卻也就忘卻了?!币琅f記得起初不懂怎么解決某個(gè)問題的時(shí)候請(qǐng)教李碩師兄,師兄對(duì)我說的這番話。自己在μC/OS-II這部分內(nèi)容掙扎了好久,現(xiàn)在想想,覺得起初不應(yīng)當(dāng)一上來就徑直閱讀內(nèi)核源代碼,看了一些自己把頭撞破也想不明白的事,這樣徑直正面打擊我學(xué)習(xí)嵌入式的積極性。學(xué)習(xí)啊,還是得要按部就班。假如你想學(xué)習(xí)嵌入式肯定要有塊學(xué)習(xí)板。看再多的視頻,看再多的書,也不如自己動(dòng)手試一下,看著很簡(jiǎn)約的東西,做起來就可能遇到許多的問題,遇到問題找到緣由,解決問題,只有這樣才能學(xué)到東西。記得我第一次仿寫led的驅(qū)動(dòng),想自己試一下,可是自己一試,就出了好多的問題,那個(gè)led弄了我一天才把led燈點(diǎn)亮。所以不要眼高手低。

對(duì)于初學(xué)者,有一點(diǎn)小建議,我們拿到一個(gè)開發(fā)板,很興奮也很激昂,想法自然也許多,想用開發(fā)板實(shí)現(xiàn)自己的這個(gè)想法,實(shí)現(xiàn)那個(gè)想法,然后又不知道從何下手,然后就去論壇中發(fā)一個(gè)貼,最末等著別人去回復(fù),當(dāng)見沒人回復(fù)就開始埋怨。這種做法是不可取的,有想法是好的,我們要實(shí)現(xiàn)自己的想法也是有前提

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論