版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
第第頁嵌入式學習的心得體會
本人本科學的是電子信息工程專業(yè),其實這個專業(yè)和嵌入式沒有多大的關系,要說有關系就是簡約的講了下C語言語法,學完之后還不知道什么是C語言,只記住了char,int,long等占幾個字節(jié),if,while,for循環(huán)什么的,感覺也就能算一些學校就會的題目,全國計算機二級C語言也就糊涂的過了。我這個專業(yè)沒學過C++,一開始不知道什么是面對對象,這可能會讓人笑話了。不過這說的是實話,本科的時候,學院安排的課程大部分偏硬件部分,動手機會比較多,自然而然比較喜愛硬件方面。
在大二的時候就聽學長說,單片機很難學,那時候經學長介紹,淘寶買了本郭天祥老師出的書《51單片機C語言教程》,一開始還真是不怎么懂,感覺有點像是看天書,然后硬著頭皮去看,當我把51的結構看完了,就不像一開始那樣一頭霧水了,自己在紙上把51的結構圖默畫一遍,然后再把各個寄存器功能寫一下,各個功能口的結構粗略畫了下,然后覺得51整體已在我心中了,雖然沒有什么作用,但是至少懂得這門課要怎么去學習。其實有些時候不是這個東西你不會,而是在不會的時候自己先告知自己這個太難了,自己先放棄了。
在大三的時候,第一學期課比較少,我就常常待在圖書館,會去蠻看些專業(yè)相關的書籍,現(xiàn)在想想,那時候也是機緣巧合下,看到了一本書《從51到ARM》,講解并描述的是從51系列單片機的一般知識出發(fā),將arm處理器和51系列單片機進行對比,引導讀者去理解和學習arm處理器的知識。那個時候也有考慮到以后就業(yè)的問題,就想到一件事情,假如去應聘工作的話,每個工科院校電子信息類的畢業(yè)生都會異口同聲地說:我會51系列單片機。當他說這句話的時候,他和別人是站在同一起跑線上的??晌覀兺耆锌赡芎蛣e人不站在同一起跑線上。正是這本書給我開啟了另外一扇大門,讓我初步了解了嵌入式。后來去報考全國計算機等級考試三級教程——嵌入式系統(tǒng)開發(fā)技術,在圖書館奮斗了兩個月,最末取得優(yōu)秀的成果,也讓我進一步了解嵌入式系統(tǒng)。
在大四的時候,我們有嵌入式的選修課,不過當時由于考研的緣故,就沒有去上過這門課,好惋惜呀!但是,在選擇讀研討論方向的時候我還是毅然選擇了嵌入式方向,我知道這將成為我將來三年討論的方向。這學期(研一下學期),很快樂能夠再次接觸嵌入式系統(tǒng)這門課程,對于導師教的這門課程,我覺得自己上課還是蠻仔細聽講的,當然也被師在臺上那講得井井有條,溫文儒雅的風姿所吸引。對于沒有學過微機8086的我,有些時候,老師用微機與嵌入式的對比讓我頭腦沒有相關概念...
首先,我對嵌入式在概念上有了一個比較精確的了解。嵌入式是指以應用為中心,以計算機為基礎,并且軟硬件可裁剪,適用于對功能、牢靠性、成本、體積和功耗有嚴格要求的專用計算機系統(tǒng)。它由硬件平臺和系統(tǒng)軟件組成。硬件平臺指嵌入式處理器和與之通過接口連接的外圍硬件平臺。系統(tǒng)軟件是指實時操作系統(tǒng)和用戶應用軟件。
談到硬件部分,我首先想到的是嵌入式處理器那些外圍功能模塊。對于這部分的學習,我起初花了好長時間看《深入淺出ARM7——LPC2400》這本書,現(xiàn)在想想覺得自己學習方法沒用對,完全沒有那個須要,自己卻花了大把時間在看這些寄存器引腳的運用,由于單純的看過之后還是很簡單忘的,之后在進行試驗的時候還是翻書來查就證明白這一點。不過一些最基本的模塊,例如通用輸入/輸出口(GPIO),通用異步收發(fā)器(UART),向量中斷掌握器(VIC),外部中斷輸入和定時器/計數(shù)器還是需要看書仔細去記住那些常用的引腳功能。對于CPU異樣這部分,我一開始以為異樣就是中斷,由于處理程序流程設計是相像的,都是懇求處理器打斷正常的程序執(zhí)行流程,進入特定程序的一種機制。當時還對老師提出的一個看法有點疑義,51可以處理中斷嵌套而ARM處理器卻不能?我當時腦子里面就在想:中斷不都是有硬件設備產生的,那按常理來講ARM處理器也可以處理的呀。后來在仔細查書,發(fā)覺CPU異樣有7種:復位,數(shù)據(jù)中止,中斷,快中斷,預取中止,未定義,軟件中斷。而異樣向量會使CPU轉入異樣入口地址執(zhí)行程序,開始了異樣處理。同理的話,中斷向量使CPU轉入中斷入口地址執(zhí)行程序,開始了中斷處理。即當發(fā)生IRQ中斷時,程序返回地址被存入該IRQ中斷模式下的LR,假如繼續(xù)發(fā)生IRQ中斷,那第二次的中斷返回地址也還是被存入該IRQ中斷模式下的LR中,那原先發(fā)生中斷時候存入的程序返回地址將被掩蓋掉,導致不能返回正確的位置。在我解決這個問題的期間,每次睡前思維準會定格在這問題上,久久不能繞出來,其實有時候查書還是最好的解決方案,由于網絡資源只能提供應我們部分的參考資料。
對于ARM匯編語言這部分的學習,我認為是需要重視的,學匯編不是說用這語言做多牛逼的事情,問題的關鍵在于,學透了匯編會使你真正理解計算機。另外一方面,只要以后在嵌入式工作中你遲早會在某個陰暗的角落里遇到匯編?!安还苣愠姓J不承認,現(xiàn)在的CPU沒有徑直跑高級語言的,哪怕是虛擬機也都是類似匯編的指令集.當遇到崩潰分析,性能優(yōu)化甚至編譯器抽風等等的時候,匯編是你最末一根救命稻草(這句話是福來師兄講的)?!睘榇怂o了我們一份資料,周立功lpc21**/lpc22**系列ARM7啟動代碼分析,主要講解并描述的是startup.s文件的分析,看了下才發(fā)覺老師上課講的那個啟動代碼分析許多不理解之處這里都有具體的介紹,這分析太精辟了。
學ARM7這么久,我認為從硬件上講,一方面就是學習接口電路設計,另一方面就是學習匯編和C語言的板級編程。假如從軟件上講,就是要學習基于ARM處理器的操作系統(tǒng)層面的驅動和移植。這些對于我們初學者來說需要明確,要么從硬件著手開始學,要么從操作系統(tǒng)的熟識到應用開始學,但不管學什么,只要不是純的操作系統(tǒng)級,硬件的寄存器類的東西還是要能看懂的,基于板級的匯編和C編程還是要會的。
μC/OS-II是一種基于優(yōu)先級的搶占式多任務實時操作系統(tǒng),包含了實時內核、任務管理、時間管理、任務間通信同步(信號量,郵箱,消息隊列)和內存管理等功能。它可以使各個任務獨立工作,互不干涉,很簡單實現(xiàn)準時而且無誤執(zhí)行,使實時應用程序的設計和擴展變得簡單,使應用程序的設計過程大為減化。μC/OS-II是一個完整的、可移植、可固化、可裁剪的占先式實時多任務內核。μC/OS-II絕大部分的代碼是用ANSI的C語言編寫的,包含一小部分匯編代碼,使之可供不同架構的微處理器運用。
μC/OS-II可以大致分成內核結構、任務管理、時間管理、任務之間通信與同步4個部分。內核結構是操作系統(tǒng)的處理核心,包括操作系統(tǒng)初始化、操作系統(tǒng)運行、中斷進出的前導、時鐘節(jié)拍、任務調度、事項處理等多部分。任務管理部分中的內容都是與任務的操作親密相關的。包括任務的建立、刪除、掛起、復原等等。由于μC/OS-II是以任務為基本單位調度的,所以這部分內容也相當重要。μC/OS-II中的最小時鐘單位是timetick(時鐘節(jié)拍),任務延時等操作是在時間管理這部分完成的。任務之間通信與同步為事項處理部分,包括信號量、郵箱、郵箱隊列、事項標識等部分;主要用于任務間的相互聯(lián)系和對臨界資源的訪問。μC/OS-Ⅱ操作系統(tǒng)是在main()中建立的,首先要系統(tǒng)初始化,OSInit(),初始化系統(tǒng)全部的變量和數(shù)據(jù)結構。然后進行任務的創(chuàng)建,OSTaskCreate();之后進行多任務的啟動,OSStart()。在進行任務的并行處理的時候,一個任務的程序是順次執(zhí)行的,而不同任務的程序卻是并行執(zhí)行的。從應用程序的觀點來看,此處的并行處理只是一個假象。而事實上它是通過實時操作系統(tǒng)的內核掌握任務之間的切換來實現(xiàn)的,也就是任務調度啦。
μCOS-Ⅱ總是運行進入就緒態(tài)任務中優(yōu)先級最高的那一個。當創(chuàng)建新任務時,或當前任務調用一些可能把自己掛起的系統(tǒng)函數(shù)(如OSMBo*Pend)時,內核就要進行任務切換。在上述的場合,任務級的調度是由函數(shù)OSSched()完成的。
在一個多任務的應用工程中,任務之間并不是完全獨立的,它們存在一些需相互協(xié)作的處理,這些相互協(xié)作是靠任務間的通訊或同步,信號量、郵箱、消息隊列可以實現(xiàn)這種任務與任務,任務與中斷服務函數(shù)間的通訊與同步。
郵箱可以使一個任務或者中斷服務子程序向另一個任務發(fā)送一個指針型的'變量。而信號量不能,其只能發(fā)送信號量。消息隊列可以使一個任務或者中斷服務子程序向另一個任務發(fā)送以指針方式定義的變量。因詳細的應用有所不同,每個指針指向的數(shù)據(jù)結構變量也有所不同,事實上,我們可以將消息隊列看作多個郵箱組成的數(shù)組,只是它們共用一個等待任務列表。
我們試驗所用的ARM開發(fā)工具是ADS1.2。ARMADS全稱為ARMDeveloperSuite,是ARM公司推出的新一代ARM集成開發(fā)工具?,F(xiàn)在ADS的最新版本是1.2,支持軟件調試及JTAG硬件仿真調試、支持匯編、C語言、C++源程序,具有編譯效率高、系統(tǒng)庫功能強等特點。在安裝ADS1.2的時候涌現(xiàn)過小問題,當時我的電腦是64位的,安裝完之后顯示不了,后來百度查找到緣由,竟然是文件夾放錯地方,應當放在ProgramFiles(*86)這個文件夾中。后來有同學問我這方面的問題,但是發(fā)覺他們的ADS1.2安裝不了的緣由是由于Licence弄錯了。在打開CodeWarriorforARMDeveloperSuite的時候,肯定要記得選DebugInChipRAM,否那么Make都涌現(xiàn)許多error,而且那些幾乎都是未定義函數(shù)的錯誤。之后就進行Debug,調試勝利之后會跳出A*D的界面,選擇Options里面的ConfigureTarget,再添加H-JTAG的文件,之后點擊GO,程序會跳出匯編語言的界面,再點擊下就跳到C語言程序入口地址,之后再點擊下GO,程序就開始跑起來。前面所述的這些步驟是抱負狀況下程序自身沒有發(fā)生錯誤,當然在調試過程中,還是有許多硬件上的問題,一方面是有些開發(fā)板可能用久了,用JTAG并口連接的時候接觸不良,很簡單自動掉線,常涌現(xiàn)未連接設備的的Error,還有一方面是跑程序過程常會涌現(xiàn)兼容性的問題,導致程序A*D調試時候會涌現(xiàn)卡在某個部分一貫進入死循環(huán),這個后來是解決了,但是間或還是會涌現(xiàn)這個BUG。
通過這學期對嵌入式的學習,我發(fā)覺自己尚未掌控的知識點還是蠻多的,尤其是對μC/OS-II的移植方面,我只是理論上粗略了解,沒有經過試驗的操作。還有對存儲器加速模塊(MAM)這方面不夠了解,主要一方面起初在做消息隊列采集試驗(KeySem_SampdataQeue),這個模塊被代替掉,不需要運用它,所以后來也沒有去掌控相關知識點。對于任務就緒算法這部分,我只是上課的時候聽“懂”了,課后自己再看完全懵了。對于CAN總線調試的部分,老師上課沒有講到這部分的介紹與應用,但是后來通過自己對試驗室?guī)熜謧兯龅恼n題初步了解,發(fā)覺我自己有須要去弄懂它的構造和原理。
“看書不要盼望一次就會,一次就明白是什么意思,也不要死記硬背,看不明白也沒關系,以后遇到了知道去哪里去找就可以了,以后遇到的多了,也就記住了,遇到的少的,忘卻也就忘卻了?!币琅f記得起初不懂怎么解決某個問題的時候請教李碩師兄,師兄對我說的這番話。自己在μC/OS-II這部分內容掙扎了好久,現(xiàn)在想想,覺得起初不應當一上來就徑直閱讀內核源代碼,看了一些自己把頭撞破也想不明白的事,這樣徑直正面打擊我學習嵌入式的積極性。學習啊,還是得要按部就班。假如你想學習嵌入式肯定要有塊學習板??丛俣嗟囊曨l,看再多的書,也不如自己動手試一下,看著很簡約的東西,做起來就可能遇到許多的問題,遇到問題找到緣由,解決問題,只有這樣才能學到東西。記得我第一次仿寫led的驅動,想自己試一下,可是自己一試,就出了好多的問題,那個led弄了我一天才把led燈點亮。所以不要眼高手低。
對于初學者,有一點小建議,我們拿到一個開發(fā)板,很興奮也很激昂,想法自然也許多,想用開發(fā)板實現(xiàn)自己的這個想法,實現(xiàn)那個想法,然后又不知道從何下手,然后就去論壇中發(fā)一個貼,最末等著別人去回復,當見沒人回復就開始埋怨。這種做法是不可取的,有想法是好的,我們要實現(xiàn)自己的想法也是有前提
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025版交通安全設施維護與保養(yǎng)服務合同3篇
- 2025年度咖啡廳餐廳合伙經營合同
- 2025年度精裝修住宅簡易裝修合同
- 2025年度超市員工勞動權益保障與勞務合同執(zhí)行
- 2025年食堂食堂食品添加劑使用規(guī)范合同模板3篇
- 2025年高品質銷售會議服務合同書模板2篇
- 2025年食品行業(yè)食品安全風險評估與預防合同3篇
- 2025版農業(yè)設備買賣及購銷合同格式規(guī)范3篇
- 美容專業(yè)學徒與培訓機構簽訂的二零二五年度實習協(xié)議3篇
- 鄭州澍青醫(yī)學高等??茖W?!吨袑W語文教學案例》2023-2024學年第一學期期末試卷
- 高校鑄牢中華民族共同體意識教育的路徑研究
- 《面神經炎護理措施分析》3900字(論文)
- 城市微電網建設實施方案
- 企業(yè)文化融入中華傳統(tǒng)文化的實施方案
- 9.1增強安全意識 教學設計 2024-2025學年統(tǒng)編版道德與法治七年級上冊
- 《化工設備機械基礎(第8版)》全套教學課件
- 人教版八年級數(shù)學下冊舉一反三專題17.6勾股定理章末八大題型總結(培優(yōu)篇)(學生版+解析)
- 2024屆上海高考語文課內古詩文背誦默寫篇目(精校版)
- DL-T5024-2020電力工程地基處理技術規(guī)程
- 初中數(shù)學要背誦記憶知識點(概念+公式)
- 駕照體檢表完整版本
評論
0/150
提交評論