第一篇:2016arm嵌入式學(xué)習(xí)心得
2016arm嵌入式學(xué)習(xí)心得
嵌入式ARM學(xué)習(xí)心得【1】
本人大學(xué)學(xué)的是電子信息科學(xué)與技術(shù)專業(yè),其實這個專業(yè)和嵌入式?jīng)]有多大的關(guān)系,要說有關(guān)系就是簡單的講了下C語言語法,學(xué)完之后還不知道什么是C語言,只記住了,char,int,string等占幾個字節(jié),if,for,while循環(huán)什么的,感覺也就能算一些小學(xué)就會的題目,全國計算機等級二級也就糊涂的過了。
我這個專業(yè)沒學(xué)過C++,一開始不知道什么是向?qū)ο螅裁唇忻嫦蜻^程,這可能讓大家笑話了。不過這說的是實話,大學(xué)的時候比較喜歡動手,喜歡硬件方面的東西,也喜歡看書。在大一的時候就聽學(xué)長說,單片機很難學(xué),在沒事的時候就從圖書管借了本關(guān)于51的書,一開始還真是不怎么懂,然后硬著頭皮去看,當(dāng)我把51的結(jié)構(gòu)看完了,就不像一開始那樣一頭霧水了,自己在紙上把51的結(jié)構(gòu)圖默畫一遍,然后再把各個寄存器功能寫一下,各個功能口的結(jié)構(gòu)也畫一遍,然后就不覺得51有什么難了。其實有些時候不是這個東西你不會,而是在不會的時候自己先告訴自己這個太難了,自己先放棄了。我們學(xué)習(xí)51芯片,是為了以后的打基礎(chǔ),知道是怎么通過配置寄存器來實現(xiàn)功能。大二下學(xué)期的時候,我們開了51的課,這個課幾乎就沒怎么去,因為我認(rèn)為沒有必要去聽自己會的東西了。后來聽別人說avr的資源會比51的豐富的很多,所以就想試試,看看有什么難的,就從網(wǎng)上買了本馬潮老師《AVR單片機嵌入式系統(tǒng)原理與應(yīng)用實踐》,一邊看書,一邊想自己畫一個板了,一開始想實現(xiàn)一個點陣屏,實現(xiàn)滾動效果,后來想想做個板也花不少錢呢,為什么不多加一些功能呢,還能多學(xué)到些知識,所以就加了溫感,紅外,鐵電存儲器等并把所有的擴展口都擴展了出來,備以后用,那時還挺自豪的呢,同學(xué)們都很羨慕,不過現(xiàn)在想想其實也沒什么了。大學(xué)也聽說過嵌入式這個詞,不過不太明白是什么意思,09年的時候從網(wǎng)上找到中嵌視頻,有四張DVD(大約13G),下載下來后,從頭到尾的看了一遍,沒什么印象,只記得講一些不知所云的函數(shù),然后莫名其妙的講怎么使用那個44b0的開發(fā)板,不過聽完了,還是有很大收獲的,就有一種想裝一個linux的沖動,我是大二下學(xué)期才有的自己電腦,不過電腦的配置比較低,1g內(nèi)存,跑虛擬機就像個蝸牛,所以就想著怎么才能裝個linux,自己用XP習(xí)慣了,如果全換了又舍不得,那時從書上知道linux的文件系統(tǒng)和windows不一樣,只有一個根分區(qū),所以也害怕一裝linux全盤就被格式化了,不過最后還是欲望戰(zhàn)勝了擔(dān)心,買了張redhat9的光盤,小心的裝這個系統(tǒng),里邊的英文也不是太難,還是知道大概意思的,所以一步步的裝,最后裝到我的硬盤的最后空間,重新啟動,竟可以選擇進(jìn)入哪一個系統(tǒng)了,從這之后,自己就不害怕怎么裝系統(tǒng)了,應(yīng)了那句言,紙上得來終覺淺,絕知此事要躬行。所以我認(rèn)為,買一個開發(fā)板是完全有必要的,拿到實物操作一下就不會感覺太抽象了。
后來也想學(xué)學(xué)arm,但不知道arm是什么東西,所以就買了本《從51到arm》,講的是關(guān)于arm的大體結(jié)構(gòu),看完后感覺,原來arm就是一個速度更快,接口更豐富的單片機啊。
如果想做linux設(shè)備驅(qū)動的同學(xué)應(yīng)該對arm硬件有一些了解。如果對驅(qū)動不感興趣,完全沒有必要去看。交叉編譯器會幫我們做好這些事情,他比我們更了解arm結(jié)構(gòu)。大三下學(xué)期開始準(zhǔn)備考研了,所以自己這些興趣就先放下了,報的北郵的信通學(xué)院通信專業(yè),當(dāng)時就是想一定要上個好學(xué)校好專業(yè),也沒想太多,結(jié)果考了的成績差了點,沒有被錄取,也不想調(diào)劑一個二流的學(xué)校,然后就參加工作了,工作中每天都用的到開發(fā)板,當(dāng)我看到一個小板上還可以跑系統(tǒng)的時候感覺很不可思議,以為要很大工程。后來邊工作邊學(xué)習(xí),每天都要看電腦看到眼發(fā)疼,晚上也都差不多十二點時才睡覺。感覺到累,不過也感覺到自己在進(jìn)步。
閑話有點多了,說了很多都是自己大學(xué)那點破事。
聽很多的初學(xué)者說不知道從哪里開始,學(xué)習(xí)嵌入都要學(xué)哪些東西,從網(wǎng)上搜了一下,一大堆的東西要學(xué),一下就推薦十幾本書,說看完這本書怎么怎么樣,看完那本書怎么怎么樣,一下子就給初學(xué)者給嚇住了,其實完全沒必要把網(wǎng)上的那些東西全部看一遍,那樣又費時,又感覺工程太大,讓初學(xué)者沒有信心去把每一種都看完。網(wǎng)上說的些方面都要知道,不一定全部都掌握,我們可以退成求其次,每一個都知道一些,當(dāng)然會的越多越好。今天學(xué)點這個明天學(xué)點那,換著樣來也不會覺得煩。而且還能感覺到每天都有收獲。
下面給嵌入式初學(xué)者一些自己的我個人建議。
1、嵌入式涉及到很多的基礎(chǔ)知識
c語言,關(guān)于C語言要知道基本的語法,什么是結(jié)構(gòu)體,什么是共用體,有什么區(qū)別,不用強記一些二級考的東西,因在實際中用的很少。
c++要知道什么是類,怎么定義,繼承,接口,要深刻理解,當(dāng)然基本語法也是必不可少的。
操作系統(tǒng)原理也應(yīng)該知道基本的原理的,我記得我大學(xué)沒這個課還是去電信學(xué)院蹭別的專業(yè)的課呢,后來學(xué)習(xí)發(fā)現(xiàn)很多的東西都是在這個課上學(xué)到的。什么時間片啊,任務(wù)調(diào)度啊,都是在那里知道的。
Linux基本命令的使用(vi編輯器必須會用,因為在終端改文件的時候只能用這個),我們現(xiàn)在很多的人都習(xí)慣用鼠標(biāo)了,很少用到命令,我們學(xué)習(xí)嵌入linux可要改改這個習(xí)慣了,linux用命令操作一是效率高,二是功能非常強大,遠(yuǎn)非圖形界面能比的了的,其實我們用圖形界面的操作都要轉(zhuǎn)化為命令傳給硬件的。
Linux文件系統(tǒng)的管理要清楚,哪個目錄存放是什么東西,有什么用,文件權(quán)限管理等 Shell編程也要了解一些,在這給大家推薦一個教程,周朝劍的 shell編程,也就七八講吧,講的很全面。初學(xué)者看前4講就可以了。Linux設(shè)備驅(qū)動的架構(gòu)要了解,初學(xué)者可以以米爾的MYD-AM335X開發(fā)板上的led驅(qū)動分析一下,結(jié)合原理圖和linux設(shè)備驅(qū)動相關(guān)書籍把每一行代碼都分析明白。關(guān)于驅(qū)動給大家推薦一本書《LINUX設(shè)備驅(qū)動程序》中國電力出版社出版的,很經(jīng)典的,初學(xué)者看可能看不太明白,不過要堅持看,最次也得把前6章看完了。
2、看書不要希望一次就會
一次就明白是什么意思,也不要死記硬背,看不明白也沒關(guān)系,以后遇到了知道去哪里去找就可以了,以后遇到的多了,也就記住了,遇到的少的,忘記也就忘記了。還有,不要直接閱讀linux內(nèi)核源代碼,看一些自己把頭撞破也想不明白的事,會打擊初學(xué)者的積極性,要循序漸進(jìn),今天學(xué)個做個led,明天做個串口,后天說不定就做硬件編解碼了。
3、你可以不接受培訓(xùn),但是不能不買開發(fā)板
如果你想學(xué)習(xí)嵌入式一定要買塊學(xué)習(xí)板,現(xiàn)在的開發(fā)板很便宜了,給我們初學(xué)者減輕了很多經(jīng)濟負(fù)擔(dān)??丛俣嗟囊曨l,看再多的書,也不如自己動手試一下,看著很簡單的東西,做起來就可能遇到很多的問題,遇到問題找到原因,解決問題,只有這樣才能學(xué)到東西,記得我第一次寫led的驅(qū)動,想自己試一下,網(wǎng)上也有人寫過相關(guān)的代碼,可是自己一試,就出了好多的問題,那個led弄了我一天才把led燈點亮。所以不要眼高手低。
還有關(guān)于培訓(xùn),現(xiàn)在的培訓(xùn)機構(gòu)很多,講的也不錯,老師也很好,但是有一個問題,太集中了,而且學(xué)生動手的機會也不太多,記得我們公司還招了一個在北京某個培訓(xùn)機構(gòu)培訓(xùn)半年的員工呢,花了一萬多,來了之后也沒感覺有多高,問他都學(xué)了什么,也就是我前邊說的那些基礎(chǔ)知識,很多的東西還是不知道的,照著書弄個helloworld模塊驅(qū)動兩天沒搞定。不是培訓(xùn)不好,但我個人見解效果并不是很好。記?。褐挥凶约簞邮肿鲞^的東西才是自己的。
現(xiàn)在買一塊開發(fā)板很便宜,飛凌的OK6410的開發(fā)板就不錯,源碼完全開放,而且資料也很豐富,完全能滿足初學(xué)者學(xué)習(xí)用,有人說友善的板子也不錯,我個人覺得友善的板子不錯,但是不適合初學(xué)者,因為他的很多的東西是不給代碼的,用過友善的板子的同學(xué)經(jīng)常有這樣的痛苦,想學(xué)一個東西,去找他的代碼的時候,卻找不到,很多友善提供的代碼中很多的都是封裝好的,只提供給客戶一個庫,初學(xué)者想要找代碼的時候就不知道怎么辦了。
4、不要好高騖遠(yuǎn),要腳踏實地
對于初學(xué)者,還有一點小建議,我們拿到一個開發(fā)板,很興奮也很激動,想法自然也很多,想用開發(fā)板實現(xiàn)自己的這個想法,實現(xiàn)那個想法,然后又不知道從何下手,然后就去論壇中發(fā)一個貼,“那個什么什么怎么實現(xiàn)啊,哪位大俠能詳細(xì)說一下啊,跪求!”然后等著別人去回復(fù)。見沒人回復(fù)就抱怨。有想法是好的,我們要實現(xiàn)自己的想法也是有前提的,首先,我們對這部分知識了解嗎?如果不了解就去google一下(最好別用百度,不太好用),了解了一些,也就大概知道要怎么做了。如果再遇到問題,再去發(fā)貼問,這樣也顯得咱們有水平。比如自己連串口是什么都不太清楚呢,就問串口通信怎么做啊,就是人家把代碼給咱,咱也不明白是怎么回事啊。
5、多看代碼,多寫代碼
見多識廣,熟能生巧。多看代碼,要從代碼中讀出代碼的意思來。自己平時也要多寫代碼,多練習(xí)(這一點我做的不好,寫的少)。寫完已經(jīng)晚上兩點了,思路有些亂,有些也是個人的見解,在有些人看來可能是錯誤的,每個人有每個人的學(xué)習(xí)方法,但是我們的目的只有一個——希望我們學(xué)到更多的知識。嵌入式學(xué)習(xí)心得【2】
還記得老師第一次將一塊天祥的2440開發(fā)板放到我面前時,我心里覺得這太神奇了,好漂亮的板子,怎么弄呢?老師大體給我講了一下,但是以前連51單片機操作都不熟的我如何記得住老師說的呢?板子拿到手里,左手拿不知到怎么開始,右手拿也不知道如何入手啊。
然后我決定上網(wǎng)查一查這個東西如何轉(zhuǎn)起來呢?搜到了天祥的視頻教程,但其是加密的,唉......我大概就在網(wǎng)上搜了將近一周的時間,后來老師過來詢問我的板子玩的如何了,我連工作環(huán)境都沒有搭建起來,老師說我那里有視頻,我覺得老師啊,你不早說啊。也許老師是故意的,因為將近一周的時間我了解了三星公司的芯片S3C2440A,知道了天祥開發(fā)板的原理,包括的外設(shè),有了整體的認(rèn)識。
我拿到視頻后跟著視頻一步一步地開始了我的嵌入式之旅...
第二篇:實習(xí)總結(jié)-嵌入式ARM
實訓(xùn)總結(jié)
班級 卓越1301姓名***
通過這段時間的學(xué)習(xí)使我學(xué)到了很多知識,并且了解到ARM的應(yīng)用以及對開發(fā)板的應(yīng)用,為以后的學(xué)習(xí)奠定了一定的基礎(chǔ)。
嵌入式系統(tǒng)一般定義為以應(yīng)用為中心、以計算機技術(shù)為基礎(chǔ),軟硬件可裁剪,應(yīng)用系統(tǒng)對功能、可靠性、成本、體積、功耗和應(yīng)用環(huán)境有特殊要求的專用計算機系統(tǒng)。是將應(yīng)用程序、操作系統(tǒng)和計算機硬件集成在一起的系統(tǒng)這是從技術(shù)角度。從系統(tǒng)角度上是設(shè)計完成復(fù)雜功能的硬件和軟件,并使其緊密耦合在一起的計算機系統(tǒng)。
廣義上講,凡是帶有微處理器的專用軟硬件系統(tǒng)都可稱為嵌入式系統(tǒng)。如各類單片機和DSP系統(tǒng)。這些系統(tǒng)在完成較為單一的專業(yè)功能時具有簡潔高效的特點。但由于他們沒有操作系統(tǒng),管理系統(tǒng)硬件核軟件的能力有限,在實現(xiàn)復(fù)雜多任務(wù)功能時,往往困難重重,甚至無法實現(xiàn)。從狹義上講,我們更加強調(diào)那些使用嵌入式微處理器構(gòu)成獨立系統(tǒng),具有自己操作系統(tǒng),具有特定功能,用于特定場合的嵌入式系統(tǒng)。
嵌入式的應(yīng)用也比較廣泛涉及軍事國防、工業(yè)控制、消費電子和網(wǎng)絡(luò)。在家用方面更是數(shù)字電視、信息家電、智能玩具、手持通訊、存儲設(shè)備的核心。
在ARM指令集中了解到ARM的尋址方式以及它的的特性,具有高效、快速的特點,還有Thumb指令集具有靈活、小巧的特點。
在這次實訓(xùn)中做了兩個項目,一個是LED燈,實現(xiàn)LED燈的點亮是比較簡單的,通過查找手冊可以很快的了解到要使用的寄存器和方法,另一個項目是DS18B20這個比較復(fù)雜,除了要掌握對寄存器的使用,還要對了解對串口的初始化,讀寫字節(jié)等等。
感謝這次實訓(xùn),通過這次的實訓(xùn)項目,使我大體了解制作項目的步驟,了解了嵌入式技術(shù)的掌握是需要一個過程的。實事求是的說,嵌入式技術(shù)的全面掌握是有相當(dāng)難度的,通過積累和動手總會有收獲的,從實驗中也明白了一個大的項目并不是一個人可以完成的,團隊協(xié)作很重要。
姓名:***
年級:卓越1301
2014-7-5
第三篇:嵌入式系統(tǒng)ARM實驗報告
南京郵電大學(xué)通信與信息工程學(xué)院
實驗報告
實驗名稱:實驗一基于ADS開發(fā)環(huán)境的設(shè)計
實驗二嵌入式Linux交叉開發(fā)環(huán)境的建立 實驗三嵌入式Linux環(huán)境下的程序設(shè)計
課程名稱嵌入式系統(tǒng)B
班級學(xué)號B13010711 姓名馬俊民
開課時間 2015/2016學(xué)年第1學(xué)期
實驗一基于ADS開發(fā)環(huán)境的程序設(shè)計
一、實驗?zāi)康?/p>
1、學(xué)習(xí)ADS開發(fā)環(huán)境的使用;
2、學(xué)習(xí)和掌握ADS環(huán)境下的匯編語言及C語言程序設(shè)計;
3、學(xué)習(xí)和掌握匯編語言及C語言的混合編程方法。
二、實驗內(nèi)容
1、編寫和調(diào)試匯編語言程序;
2、編寫和調(diào)試C語言程序;
3、編寫和調(diào)試匯編語言及C語言的混合程序;
4、編寫程序測試多寄存器傳送指令的用法。
三、實驗原理
ADS全稱為ARM Developer Suite,是ARM公司推出的新一代ARM集成開發(fā)工具?,F(xiàn)在常用的ADS版本是ADS1.2,它取代了早期的ADS1.1和ADS1.0。
ADS用于無操作系統(tǒng)的ARM系統(tǒng)開發(fā),是對裸機(可理解成一個高級單片機)的開發(fā)。ADS具有極佳的測試環(huán)境和良好的偵錯功能,它可使硬件開發(fā)工作者更深入地從底層去理解ARM處理器的工作原理和操作方法,為日后自行設(shè)計打基礎(chǔ),為BootLoader的編寫和調(diào)試打基礎(chǔ)。
1.ADS軟件的組成
ADS由命令行開發(fā)工具、ARM運行時庫、GUI開發(fā)環(huán)境(CodeWarrior和AXD)、實用程序、支持軟件等組成。
2.GUI開發(fā)環(huán)境
ADS GUI開發(fā)環(huán)境包含CodeWarrior和AXD兩種,其中Code Warrior是集成開發(fā)工具,而AXD是調(diào)試工具。
使用匯編語言進(jìn)行編程簡單、方便,適用于初始化硬件代碼、啟動代碼等。匯編語言具有一些相同的基本特征:
1.一條指令一行。
2.使用標(biāo)號(label)給內(nèi)存單元提供名稱,從第一列開始書寫。3.指令必須從第二列或能區(qū)分標(biāo)號的地方開始書寫。4.注釋必須跟在指定的注釋字符后面,一直書寫到行尾。
在ARM匯編程序中,每個段必須以AREA作為段的開始,以碰到下一個AREA作為該段的結(jié)束,段名必須唯一。程序的開始和結(jié)束需以ENTRY和END來標(biāo)識。嵌入式C語言設(shè)計是利用基本的C語言知識,面向嵌入式工程實際應(yīng)用進(jìn)行程序設(shè)計。為了使單獨編譯的C語言程序和匯編程序之間能夠相互調(diào)用,必須為子程序之間的調(diào)用規(guī)定一定的規(guī)則。ATPCS就是ARM程序和Thumb程序中子程序調(diào)用的基本規(guī)則。
四、實驗過程與關(guān)鍵代碼分析
1.創(chuàng)建項目工程
在File菜單中選擇New命令,打開一個新建工程對話框。在Project選項卡下,選擇ARM Executable Image, 然后在Project name文本框里輸入項目名稱,點擊確定。彈出工程窗口。
選擇File菜單中的New命令,選擇File標(biāo)簽頁,在File name文本框中輸入要創(chuàng)建的文件名。匯編程序以.s結(jié)尾,c程序以.c結(jié)尾。在Location文本框中指定文件的存放位置,選中Add to Project,在Targets中選中DebugRel,單擊確定關(guān)閉窗口。
2.用匯編語言設(shè)計程序?qū)崿F(xiàn)10的階乘
AREA EXAMPLE, CODE, READONLY ENTRY start MOV R0, #10 MOV R1, #1 LOOP MUL R0, R0, R1 SUB R0, R0, 1 CMP R0, #1 BHI LOOP END 在這個程序中,我們首先對R0和R1賦值,將R0作為一個變量,而R1作為一個存貯階乘值的寄存器。在每進(jìn)行一次乘法之后,將R0減1。同時在做完減法后進(jìn)行判斷,如果此時R0大于1,則返回繼續(xù)乘法,否則結(jié)束程序,輸出結(jié)果。
3.用調(diào)用子程序的方法實現(xiàn)1!+2!+3!+?+10!,代碼如下: asmp.s
AREA JC, CODE, READONLY
EXPORT JCP
ENTRY JCP
ADD R3, R0, #1
MOV R2, #1
MOV R1, #1 LOOP MUL R0, R1, R2
MOV R1, R0
ADD R2, R2, #1
CMP R2, R3
BNE LOOP
NOP
NOP
MOV PC, LR
END
PROGC.c #include
int main(){ int res=0;int m=10;int i;for(i=1;i<=m;i++)
res=res+JCP(i);printf(“The result =%dn”,res);return 0;} 在這個程序中,主程序由c語言完成作求和,子程序由匯編語言寫成作階乘。
5.實現(xiàn)字符串的逆序復(fù)制TEXT1=“HELLO”=>TEXT2=“OLLEH”
AREA invstring, CODE, READONLY start
ADR R1,TEXT1
ADR R2,TEXT2
MOV R3, #0 LOOP
LDRB R0,[R1], #1
ADD R3,R3,#1
CMP R0,#0
BNE LOOP
SUB R1,R1,#2
LOOP1
LDRB R0,[R1], #-1
STRB R0,[R2], #1
SUB R3,R3, #1
CMP R3,#1
BNE LOOP1
MOV R5,#&55
TEXT1
TEXT2 NOP =“HELLO”,0 ALIGN =“OELLH” END
五、實驗小結(jié)
在這次實驗中,學(xué)會了如何使用匯編程序進(jìn)行編程。對匯編程序編程一些基本的要求有了一定的了解,學(xué)習(xí)了C語言的語法和在其中調(diào)用匯編程序的方法。學(xué)會了利用CodeWarrior IDE開發(fā)C和ARM匯編代碼。學(xué)會了在AXD中進(jìn)行代碼調(diào)試的方法和過程,對AXD的調(diào)試有初步的了解。,實驗二嵌入式Linux交叉開發(fā)環(huán)境的建立
一、實驗?zāi)康?/p>
1、掌握嵌入式Linux交叉開發(fā)環(huán)境的建立方法
2、學(xué)習(xí)和掌握Linux常用命令
3、學(xué)習(xí)和掌握vi編輯器的使用
二、實驗內(nèi)容
1、搭建嵌入式Linux交叉開發(fā)環(huán)境
2、熟悉Linux的常用命令
3、熟悉vi編輯器的常用命令
三、實驗原理
Linux系統(tǒng)是UNIX系統(tǒng)的分支,是UNIX的微機版。Linux具有異常豐富的驅(qū)動程序資源,支持各種主流的硬件設(shè)備與技術(shù)。Linux包含了現(xiàn)代的UNIX操作系統(tǒng)的所有功能特性,這些功能包括多任務(wù)、虛擬內(nèi)存、虛擬文件系統(tǒng)、進(jìn)程間通信、對稱所處理器、多用戶支持等。
Vi編輯器是所有UNIX和Linux下的標(biāo)準(zhǔn)編輯器。它包含3種工作模式。嵌入式系統(tǒng)是專用的計算機系統(tǒng),它對系統(tǒng)的功能、可靠性、成本、體積、功耗等有嚴(yán)格的要求。大部分嵌入式系統(tǒng)沒有大容量存儲設(shè)備,一般不能安裝大型開發(fā)軟件,系統(tǒng)的開發(fā)需要采用交叉開發(fā)模式。
四、實驗過程與關(guān)鍵代碼分析
實驗用的是UP-NetARM2410-S試驗箱,里面配有三星的芯片S3c2410X。打開電腦上VMWare軟件,在Windows系統(tǒng)下啟動虛擬機里的Linux系統(tǒng)。接著需要
1.宿主機的環(huán)境搭建
下載并運行VMWare,根據(jù)向?qū)?chuàng)建一臺新虛擬機并選擇Linux作為客戶操作系統(tǒng),再根據(jù)向?qū)О惭bRedHat Linux 9.0。
2.虛擬機中啟動Linux操作系統(tǒng)
使用root登陸,用戶名為root,密碼為123456。之后對共享文件設(shè)置進(jìn)行調(diào)整:打開settings界面,打開shared folders功能,同時將路徑設(shè)置到有課前下載的軟件的目錄下。
3.開發(fā)工具軟件的安裝(1)安裝gcc 打開Linux后,打開終端窗口,在共享的目錄下找到install.sh并運行,命令如下: ls./ install.sh 安裝程序?qū)⒆詣咏?arm2410s目錄,并將所有的開發(fā)軟件包安裝到/arm2410s 目錄下,同時自動配置編譯環(huán)境,建立合適的符號鏈接。安裝完成后在目錄/opt/host/armv4l/bin/下應(yīng)該能看到主編譯器。(2)配置PATH路徑
vi.bash.profile 將里面PATH變量改為PATH=$PATH:$HOME/bin:/opt/host/armv41/bin/;存盤后執(zhí)行
source.bash_profile 以后armv4l-unknown-linux-gcc將被自動搜索到
4.宿主機上的開發(fā)環(huán)境配置(1)配置IP地址
ifconfig eth0 192.168.0.121 命令配置了宿主機的IP地址。然后打開網(wǎng)絡(luò)配置窗口,重新探測MAC地址。重新激活。(2)關(guān)閉防火墻
單擊“Red”菜單→“系統(tǒng)設(shè)置”→“安全級別”→打開“安全級別配置”窗口,選擇“無防火墻選項?!保?)配置NFS。
單擊“Red”菜單→“系統(tǒng)設(shè)置”→“服務(wù)器設(shè)置”→“服務(wù)”,在“服務(wù)配置”窗口中勾選nfs,單擊“開始”(4)NFS設(shè)置
單擊“Red”菜單→“系統(tǒng)設(shè)置”→“服務(wù)器設(shè)置”→“NFS服務(wù)器”,打開“NFS服務(wù)器配置”窗口,設(shè)置NFS共享。
然后在NFS服務(wù)器中增加主機IP地址的鏈接許可和目錄。完成配置。
5.目標(biāo)機的信息輸出
Windows系統(tǒng)下,“開始”→“所有程序”→“附件”→“通訊”→“超級終端”,新建一個通信終端。區(qū)號、電話號碼隨意輸入。設(shè)置每秒位數(shù)為“115200”,數(shù)據(jù)位為“8”,無奇偶校驗,停止位為“1”,無數(shù)據(jù)流控制。單擊“確定”。
6.程序的運行
打開超級終端,啟動Linux,屏幕顯示:
[/mnt/yaffs] 在超級終端上執(zhí)行掛載命令:
[/mnt] mount –t nfs 192.168.0.121:/arm2410s /mnt/nfs 掛載成功后可執(zhí)行程序。
五、實驗小結(jié)
在這次實驗中,學(xué)會建立Linux交叉開發(fā)環(huán)境,學(xué)會了ls和vi,cd等常用的Linux命令,并掌握了Vi編輯器的使用方法。同時知道了如何在搭建失敗時尋找錯誤進(jìn)行排錯。
實驗三嵌入式Linux環(huán)境下的程序設(shè)計
一、實驗?zāi)康?/p>
1、掌握嵌入式Linux環(huán)境下的程序設(shè)計方法
2、學(xué)會編寫Makefile文件
二、實驗內(nèi)容
1、熟悉嵌入式教學(xué)實驗箱的使用
2、編寫C程序和Makefile文件
3、編譯程序產(chǎn)生可執(zhí)行程序
4、完成主機的掛載和程序的執(zhí)行
三、實驗原理
在嵌入式Linux環(huán)境下的程序設(shè)計方法有一下幾個步驟:
1.編寫源程序
2.編寫Makefile文件 3.編譯程序
4.運行和調(diào)試程序
5.將生產(chǎn)的可執(zhí)行文件加入文件系統(tǒng)。
前三個步驟在宿主機上完成,后面的步驟在目標(biāo)機上完成。
四、實驗過程與關(guān)鍵代碼分析
1.建立工作目錄
mkdir hello cd hello
2.編寫源程序
用vi編輯器編輯Hello.c文件
vi Hello.c 在Vi中輸入源程序如下:
#include
printf(“hello world n”);}
3.編寫Makefile文件
vi Makefile 在vi中編輯Makefile文件如下:
CC= armv4l-unknown-linux-gcc EXEC = hello OBJS = hello.o CFLAGS += LDFLAGS+=-static all: $(EXEC)$(EXEC):(OBJS)$(CC)$(LDFLAGS)–o $@ $(OBJS)clean:
-rm –f $(EXEC)*.elf *.gdb *.o
4.編譯程序
在hello目錄下運行“make”來編譯程序。
make clean
make 編譯成功后,生成可執(zhí)行文件Hello.o。
5.下載調(diào)試
在宿主機上啟動nfs服務(wù),并將/arms2410s設(shè)置為共享目錄。接下來啟動超級終端,建立通訊,掛載。
[/mnt] mount –t nfs 192.168.0.121:/arm2410s /mnt/nfs 掛載成功后,進(jìn)入/mnt/nfs,再進(jìn)入/mnt/nfs/hello,直接運行剛剛編譯生成的可執(zhí)行文件Hello.o,查看運行結(jié)果
cd hello./hello 可以看見“Hello world”
只需要掛載一次便可,只要實驗箱沒有重啟,就可以一直保持連接。反復(fù)修改、編譯、調(diào)試,直至程序調(diào)試通過。
6.可執(zhí)行文件加入文件系統(tǒng)
程序調(diào)試通過后,可以把可執(zhí)行文件拖放到usr/bin目錄下,然后使用mkcramfs制作工具生成新的文件系統(tǒng)。當(dāng)系統(tǒng)啟動后,就可以在相應(yīng)目錄下執(zhí)行可執(zhí)行程序hello.五、實驗小結(jié) 在這次實驗中,學(xué)會了在嵌入式Linux環(huán)境下設(shè)計程序。同時知道了如何對目標(biāo)機進(jìn)行掛載。以及如何在發(fā)現(xiàn)掛載不成功尋找錯誤進(jìn)行修改。另外在編譯文件時需要注意的也都有所了解。
實驗四多線程程序設(shè)計
一、實驗?zāi)康?、2、二、實驗內(nèi)容1、2、3、4、三、實驗原理
四、實驗過程與關(guān)鍵代碼分析
五、實驗小結(jié)
3+
第四篇:ARM學(xué)習(xí)心得
ARM linux學(xué)習(xí)心得(zt)
2008-08-13 13:55
由于很多人總問這個問題,所以這里做一個總結(jié)文檔供大家參考。
這里必須先說明,以下的步驟都是針對Linux系統(tǒng)的,并不面向WinCE。也許你會注意到,現(xiàn)在做嵌入式的人中,做linux研究的人遠(yuǎn)比做WinCE的人多,很多產(chǎn)家提供的資料也是以linux為主。我一直很難理解,其實WinCE的界面比linux的界面好看多了,使用起來也很方便,更為重要的是,WinCE的開發(fā)和Windows下的開發(fā)基本一樣,學(xué)起來簡單得多,但是學(xué)linux或者使用linux做嵌入式的人就是遠(yuǎn)比WinCE多。在和很多工作的人交流時我了解到,他們公司從沒考慮使用WinCE,因為成本高,都是使用linux進(jìn)行開發(fā)。我讀研究生的的實驗室中也沒有使用WinCE的,大都研究linux,也有少部分項目使用vxwork,但是就沒有聽說過使用WinCE的,原因就是開源!當(dāng)然現(xiàn)在WinCE6.0聽說也開源,不過在成本和資源上linux已經(jīng)有了無人能擋的優(yōu)勢。與此相對應(yīng)的是,越來越多的電子廠商已經(jīng)開始使用linux開發(fā)產(chǎn)品。舉個例子,Google近期開發(fā)的智能手機操作系統(tǒng)Android其實就是使用linux-2.6.23內(nèi)核進(jìn)行改進(jìn)得到的。
第一,學(xué)習(xí)基本的裸機編程。
對于學(xué)硬件的人而言,必須先對硬件的基本使用方法有感性的認(rèn)識,更必須深刻認(rèn)識該硬件的控制方式,如果一開始就學(xué)linux系統(tǒng)、學(xué)移植那么只會馬上就陷入一個很深的漩渦。我在剛剛開始學(xué)ARM的時候是選擇ARM7(主意是當(dāng)時ARM9還很貴),學(xué)ARM7的時候還是保持著學(xué)51單片機的思維,使用ADS去編程,第一個實驗就是控制led。學(xué)過一段時間ARM的人都會笑這樣很笨,實際上也不是,我倒是覺得有這個過程會好很多,因為無論做多復(fù)雜的系統(tǒng)最終都會落實到這些最底層的硬件控制,因此對這些硬件的控制有了感性的認(rèn)識就好很多了
學(xué)習(xí)裸機的編程的同時要好好理解這個硬件的構(gòu)架、控制原理,這些我稱他為理解硬件。所謂的理解硬件就是說,理解這個硬件是怎么組織這么多資源的,這些資源又是怎么由cpu、由編程進(jìn)行控制的。比如說,s3c2410中有AD轉(zhuǎn)換器,有GPIO(通用IO口),還有nandflash控制器,這些東西都有一些寄存器來控制,這些寄存器都有一個地址,那么這些地址是什么意思?又怎么通過寄存器來控制這些外圍設(shè)備的運轉(zhuǎn)?還有,norflash內(nèi)部的每一個單元在這個芯片的內(nèi)存中都有一個相應(yīng)的地址單元,那么這些地址與剛剛說的寄存器地址又有什么關(guān)系?他們是一樣的嗎?而與norflash相對應(yīng)的nandflash內(nèi)部的儲存單元并不是線性排放的,那么s3c2410怎么將nandflash的地址映射在內(nèi)存空間上進(jìn)行使用?或者簡單地說應(yīng)該怎么用nandflash?再有,使用ADS進(jìn)對ARM9行編程時都需要使用到一個初始化的匯編文件,這個文件究竟有什么用?他里面的代碼是什么意思?不要這個可以嗎?
諸如此類都是對硬件的理解,理解了這些東西就對硬件有很深的理解了,這對以后更深一步的學(xué)習(xí)將有很大的幫助,如果跳過這一步,我相信越往后學(xué)越會
覺得迷茫,越覺得這寫東西深不可測。因為,你的根基沒打好。
不過先聲明一下,本人并沒有使用ADS對ARM9進(jìn)行編程,我是學(xué)完ARM7后直接就使用ARM9學(xué)linux系統(tǒng)的,因此涉及使用ADS對ARM9進(jìn)行編程的問題我很難回答^_^,自己去研究研究吧。
對于這部分不久將提供一份教程,這個教程中的例程并不是我為我們所代理的板子寫的,是我在我們學(xué)院實驗室拿的,英培特為他們自己的實驗箱寫的,不過很有借鑒意義,可以作為一份有價值的參考。
第二,使用linux系統(tǒng)進(jìn)行一些基本的實驗。
在買一套板子的時候一般會提供一些linux的試驗例程,好好做一段時間這個吧,這個過程也是很有意義的,也是為進(jìn)一步的學(xué)習(xí)積累感性認(rèn)識,你能想象一個從沒有使用過linux系統(tǒng)的人能學(xué)好linux的編程嗎?好好按照手冊上的例程做一做里面的實驗,雖然有點娃娃學(xué)走路,有點弱智,但是我想很多高手都會經(jīng)歷這個過程。
在這方面我們深藍(lán)科技目前沒有計劃提供相應(yīng)的例程,主要是開發(fā)板的提供商會提供很豐富的例程,我們不做重復(fù)工作,只提供他們沒有的、最有價值的東西給大家。
第三,研究完整的linux系統(tǒng)的的運行過程。
所謂完整的linux系統(tǒng)包括哪些部分呢?
三部分:bootloader、linux kernel(linux內(nèi)核)、rootfile(根文件系統(tǒng))。那么這3部分是怎么相互協(xié)作來構(gòu)成這個系統(tǒng)的呢?各自有什么用呢?三者有什么聯(lián)系?怎么聯(lián)系?系統(tǒng)的執(zhí)行流程又是怎么樣的呢?搞清楚這個問題你對整個系統(tǒng)的運行就很清楚了,對于下一步制作這個linux系統(tǒng)就打下了另一個重要的根基。介紹這方面的資料網(wǎng)上可以挖掘到幾噸,自己好好研究吧。第四,開始做系統(tǒng)移植。
上面說到完整的linux有3部分,而且你也知道了他們之間的關(guān)系和作用,那么現(xiàn)在你要做的便是自己動手學(xué)會制作這些東西。
當(dāng)然我不可能叫你編寫這些代碼,這不實現(xiàn)。事實上這個3者都能在網(wǎng)下載到相應(yīng)的源代碼,但是這個源代碼不可能下載編譯后就能在你的系統(tǒng)上運行,需要很多的修改,直到他能運行在你的板子上,這個修改的過程就叫移植。在進(jìn)行移植的過程中你要學(xué)的東西很多,要懂的相關(guān)知識也很多,等你完成了這個過程你會發(fā)現(xiàn)你已經(jīng)算是一個初出茅廬的高手了。
在這個過程中如果你很有研究精神的話你必然會想到看源代碼。很多書介紹你
怎么閱讀linux源代碼,我不提倡無目的地去看linux源代碼,用許三多的話說,這沒有意義。等你在做移植的時候你覺得你必須去看源代碼時再去找基本好書看看,這里我推薦一本好書倪繼利的《linux內(nèi)核的分析與編程》,這是一本針對linux-2.6.11內(nèi)核的書,說得很深,建議先提高自己的C語言編程水平再去看。
至于每個部分的移植網(wǎng)上也可以找到好多噸的資料,自己研究研究吧,不過要提醒的是,很多介紹自己經(jīng)驗的東西都或多或少有所保留,你按照他說的去做總有一些問題,但是他不會告訴你怎么解決,這時就要靠自己,如果自己都靠不住就找我一起研究研究吧,我也不能保證能解決你的問題,因為我未必遇到過你的問題,不過我相信能給你一點建議,也許有助你解決問題。
這一步的最終目的是,從源代碼的官方主頁上(都是外國的,悲哀)下載標(biāo)準(zhǔn)的源代碼包,然后進(jìn)行修改,最終運行在板子上。
盜用阿基米德的一句話:“給我一根網(wǎng)線,我能將linux搞定”。
第五,研究linux驅(qū)動程序的編寫。
移植系統(tǒng)并不是最終的目的,最終的目的是開發(fā)產(chǎn)品,做項目,這些都要進(jìn)行驅(qū)動程序的開發(fā)。
Linux的驅(qū)動程序可以說是五花八門,linux2.4和linux2.6的編寫有相當(dāng)大的區(qū)別,就是同為linux2.6但是不同版本間的驅(qū)動程序也有區(qū)別,因此編寫linux的驅(qū)動程序變都不是那么容易的事情,對于最新版本的驅(qū)動程序的編寫甚至還沒有足夠的參考資料。那么我的建議就是使用、移植一個不算很新的版本內(nèi)核,這樣到時學(xué)驅(qū)動的編程就有足夠的資料了。
這部分的推薦書籍可以參考另一篇文章《推薦幾本學(xué)習(xí)嵌入式linux的書籍》。第六,研究應(yīng)用程序的編寫。
做作品做項目除了編寫驅(qū)動程序,最后還要編寫應(yīng)用程序?,F(xiàn)在的趨勢是圖形應(yīng)用程序的開發(fā),而圖形應(yīng)用程序中用得最多的還是qt/e函數(shù)庫。我一直就使用這個函數(shù)庫來開發(fā)自己的應(yīng)用程序,不過我希望你能使用國產(chǎn)的MiniGUI函數(shù)庫。盜用周杰倫的廣告詞就是“支持國產(chǎn),支持MiniGUI”。MiniGUI的編程比較相似Windows下的VC編程,比較容易上手,效果應(yīng)該說是相當(dāng)不錯的,我曾使用過來開發(fā)ARM7的程序。不過MiniGUI最大的不好就是沒有像qtopia這樣的圖形操作平臺,這大大限制了他的推廣,我曾經(jīng)幻想過與北京飛漫公司(就是MiniGUI的版權(quán)擁有者)合作使用MiniGUI函數(shù)庫開發(fā)像qtopia這樣的圖形操作平臺,不過由于水平有限這只能是幻想了,呵呵。
完成這一步你基本就學(xué)完了嵌入式linux的全部內(nèi)容了。
還有一個小小的經(jīng)驗想和大家分享。我在學(xué)習(xí)嵌入式linux的過程中很少問人,客觀原因是身邊的老師、同學(xué)師兄都沒有這方面的高手,主觀原因是我不喜歡問人,喜歡自己研究解決問題。這樣做有個好處,就是可以提高自己解決問題的能力,因為做這些東西總有很多問題你難以理解,別人也沒有這方面的經(jīng)驗,也不是所有問題都有人給你答案,這時必須要自己解決問題,這樣,個人的解決問題能力就顯得非常關(guān)鍵了。因此我的建議就是一般的問題到網(wǎng)上搜索一下,確實找不到答案了就問問高手,還是不行了就自己去研究,不要一味去等別人幫你解決問題。
記住,問題是學(xué)習(xí)的最好機會。
第五篇:ARM嵌入式基礎(chǔ)教程知識點總結(jié)
1、舉出書本中未提到的嵌入式在每種異常模式下都有一個對統(tǒng):嵌入式μCLinux、Windows 系統(tǒng)的例子:紅綠燈控制,數(shù)字應(yīng)的物理寄存器——程序狀態(tài)CE、VxWorks、μC/OS-II 空調(diào),機頂盒、鍵盤、鼠標(biāo)、掃保存寄存器SPSR。當(dāng)異常出現(xiàn)
18、ARM是什么樣的公司?它是描儀 時,SPSR用于保存CPSR的狀態(tài),一家微處理器行業(yè)的知名企業(yè),2、嵌入式系統(tǒng):嵌入到對象體以便異常返回后恢復(fù)異常發(fā)生該企業(yè)設(shè)計了大量高性能、廉系中的專用專用計算機應(yīng)用系時的工作狀態(tài)。價、耗能低的RISC處理器。特統(tǒng)。特點:嵌入性、內(nèi)含計算機、12、ARM7TDMI 產(chǎn)生異常的條點是只設(shè)計芯片,而不生產(chǎn)。它專用性。件?ARM的異常有哪幾種,各進(jìn)將技術(shù)授權(quán)給世界上許多著名
3、嵌入式處理器:為完成特殊入何種工作模式?他們退出各的半導(dǎo)體、軟件和OEM廠商,并的應(yīng)用而設(shè)計的特殊目的的處采用什么指令? 提供服務(wù)。理器。嵌入式處理器分為三類:答:當(dāng)正常的程序被暫時中止,19、RISC是精簡指令集計算機的1)注重尺寸,能耗,價格2)關(guān)處理器就進(jìn)入異常模式。1)復(fù)縮寫。CISC是復(fù)雜指令集計算機注性能3)關(guān)注全部四個需求。位異常(管理模式);2)未定的縮寫。集體分為四類:嵌入式微處理義指令異常(未定義模式);3)20、ARM處理器核:ARM7系列、器、嵌入式微控制器、嵌入式DSP 軟件中斷異常(管理模式);4)ARM9系列、ARM10系列、ARM1130、寄存器CPSR,SPSR的功能
各是什么?
答:1)CPSR包含條件碼標(biāo)志、中斷禁止位、當(dāng)前處理器模式以及其它狀態(tài)和控制信息。所有處理器模式下都可以訪問當(dāng)前的程序狀態(tài)寄存器CPSR。2)在每種異常模式下都有一個對應(yīng)的物理寄存器——程序狀態(tài)保存寄存器SPSR。當(dāng)異常出現(xiàn)時,SPSR用于保存 CPSR的狀態(tài),以便異常返回后恢復(fù)異常發(fā)生時的工作狀態(tài)。
31、LPC2000系列ARM7微控制器具有哪兩種低耗模式?如何降處理器、嵌入式片上系統(tǒng)
4、嵌入式操作系統(tǒng):是操作系統(tǒng)的一種類型,是在傳統(tǒng)操作系統(tǒng)的基礎(chǔ)上加入符合嵌入式系統(tǒng)要求的發(fā)展而來的。首先,嵌入式實時操作系統(tǒng)提高了系統(tǒng)的可靠性。其次,提高了開發(fā)效率,縮短了開發(fā)周期。再次,嵌入式實時操作系統(tǒng)充分發(fā)揮了 32 位 CPU 的多任務(wù)潛力。
5、ARM7TDMI中的T高密度 16 位的Thumb指令集擴展、D支持片上調(diào)試、M64 位乘法指令、Embedded ICE 硬件仿真功能模塊
6、ARM7TDMI采用三級流水線(取指 譯碼 執(zhí)行)。存儲器編址方式:使用了馮·諾依曼結(jié)構(gòu),指令和數(shù)據(jù)共用一條32 位總線。
7、處理器模式指的是處理器在執(zhí)行程序時在不同時刻所處的不同狀態(tài),處理器狀態(tài)指的是處理器當(dāng)前所執(zhí)行的指令集。
8、ARM的處理器模式:用戶模式(usr)-正常程序執(zhí)行的模式??熘袛嗄J?fiq)-FIQ異常響應(yīng)時進(jìn)入此模式。中斷模式(irq)-IRQ異常響應(yīng)時進(jìn)入此模式。、管理模式(svc)-系統(tǒng)復(fù)位和軟件中斷響應(yīng)時進(jìn)入此模式。中止模式(abt)-用于虛擬存儲及存儲保護(hù)。未定義模式(und)-未定義指令異常響應(yīng)時進(jìn)入此模式。系統(tǒng)模式(sys)-與用戶類似,但有直接切換到其它模式等特權(quán)。狀態(tài):ARM狀態(tài),32 位,這種狀態(tài)下執(zhí)行的是字方式的ARM 指令。Thumb狀態(tài),16 位,這種狀態(tài)下執(zhí)行半字方式的 Thumb 指令。
9、堆棧指針R13(SP):用于保存堆棧的出入口地址,保存待使用寄存器的內(nèi)容。鏈接寄存器R14(LR):當(dāng)使用BL指令調(diào)用子程序時返回地址將自動存入R14中;當(dāng)發(fā)生異常時,將R14對應(yīng)的異常模式版本設(shè)置為異常返回地址,其他時候為通用寄存器。程序計數(shù)器R15(PC):R15總是指向正在“取值”的指令。
10、ARM狀態(tài)和Thumb狀態(tài)的寄存器之間的關(guān)系:1)R0-R7相同;2)CPSR相同,Thumb狀態(tài)無SPSR。Thumb狀態(tài)下不能更新CPSR中的ALU標(biāo)志位。Thumb指令對R8-R15寄存器訪問受限。
11、ARM7TDMI(-S)尋址方式: 1)寄存器尋址2)立即尋址3)寄存器移位尋址4)寄存器間接尋址5)基址尋址6)多寄存器尋址7)堆棧尋址8).相對尋址.寄存器CPSR,SPSR的功能各是什么?答:1)CPSR包含條件碼標(biāo)志、中斷禁止位、當(dāng)前處理器模式以及其它狀態(tài)和控制信息。所有處理器模式下都可以訪問當(dāng)前的程序狀態(tài)寄存器CPSR。2)指令預(yù)取中止異常(中止模式);系列、Intel的XScale系列和5)數(shù)據(jù)訪問中止(中止模式);MPCore系列。6)快速中斷請求(FIQ模式);
21、LPC2000系列器件有幾種常7)外部中斷請求(IRQ模式)。見的封裝形式和其封裝特點?異常返回指令:1)SWI,未定義常見的封裝有64腳封裝,144腳的返回:MOVS PC,R14;2)IRQ,FIQ,封裝,功耗低,有多個32位定預(yù)取中止的返回:SUBS 時器,多達(dá)9個外部中斷,16KPC,R14,#4;3)數(shù)據(jù)中止返回并字節(jié)靜態(tài)RAM,1/128/256k字節(jié)重新存?。篠UBS PC,R14,#8異常片F(xiàn)lash存儲器,128為寬度接中斷的優(yōu)先級:復(fù)位(最高優(yōu)先口加速器,4路10位ADC或8路級)--> 數(shù)據(jù)異常中止--->FIQ 10位ADC(64腳和144腳封裝),---> IRQ--->預(yù)取指異常中止46或76~112個GPIO(64腳和--->SWI---->未定義指令(包括144腳封裝)。缺協(xié)處理器)。
22、簡要說明一下LPC2000系列
13、小端存儲器組織是較高的有器件片內(nèi)存儲器的特點?片內(nèi)效字節(jié)存放在較高的存儲器地存儲器分為片內(nèi)Flash和片內(nèi)靜址,較低的有效字節(jié)存放在較低態(tài)RAM。片內(nèi)Flash通過128位的存儲器地址(同同小)。大端寬度的總線與ARM內(nèi)核相連,具存儲器組織是較高的有效字節(jié)有很高的速度,特有的存儲器加存放在較低的存儲器地址,較低速功能,可以將程序直接放在的有效字節(jié)存放在較高的存儲Flash上運行。SRAM支持8位、器地址(正反大)。16位和32位的讀寫訪問。
14、描述一下LPC2210的PO.14、23、存儲器重映射是為了實現(xiàn)引P1.20、P1.26、BOOT1和BOOT0導(dǎo)塊和異常向量表地址的固定。引腳在芯片復(fù)位時分別有什么重映射引導(dǎo)塊,有利于用戶調(diào)用作用?并簡單說明LPC2000系列其中的某些程序,增加代碼的可ARM7微控制器的復(fù)位處理流程。移植性;異常向量表重映射為了 P0.14的低電平強制片內(nèi)引能讓ARM內(nèi)核通過訪問0x0000~導(dǎo)裝載程序復(fù)位后控制器件的0x003F地址訪問到其他存儲區(qū)操作,即進(jìn)入ISP 狀態(tài)。P1.20域的向量表。的低電平使 P1.25~P1.16復(fù)
24、LPC2000系列ARM7微控制器位后用作跟蹤端口。P1.26的對向量表有什么要求(向量表中低電平使 P1.31~P1.26復(fù)位的保留字)? 后用作一個調(diào)試端口。當(dāng)RESET 向量表中有一個空隙以確保軟為低時,BOOT0 與BOOT1 一同控件能與不同的ARM結(jié)構(gòu)兼容;表制引導(dǎo)和內(nèi)部操作。引腳的內(nèi)部中異常入口地址處放置的是跳上拉確保了引腳未連接時呈現(xiàn)轉(zhuǎn)指令,已轉(zhuǎn)向中斷子程序。FIQ高電平。外部復(fù)位輸入:當(dāng)該引地址要放在向量表的最后。腳為低電平時,器件復(fù)位,I/O25、FLASH是128位寬度的接口,口和外圍功能進(jìn)入默認(rèn)狀態(tài),處通過存儲器加速模塊提高其訪理器從地址0 開始執(zhí)行程序。復(fù)問速度。位信號是具有遲滯作用的TTL
26、FIQ、IRQ有什么不同?向量電平。IRQ和非向量IRQ有什么不同?
15、LDR/STR指令的偏移形式有FIQ是快速中斷,具有最高優(yōu)先哪4種?LDRB和LDRSB有何區(qū)級,中斷處理轉(zhuǎn)入FIQ模式;IRQ別? 是普通中斷,優(yōu)先級低于FIQ,1)零偏移;2)前索引偏移;3)中斷處理轉(zhuǎn)入IRQ模式。向量IRQ程序相對偏移;4)后索引偏移。支持16個向量IRQ中斷,16個LDRB:讀出指定地址的數(shù)據(jù)并存優(yōu)先級,能為每個中斷源設(shè)置服入指定寄存器,LDRSB:讀出指務(wù)程序地址;非向量IRQ支持一定地址的數(shù)據(jù),并高24位用符個非向量IRQ中斷,所有中斷都號位擴展,再存入指定寄存器。共用一個相同的服務(wù)程序入口
16、ARM7TDMI指令集包括1)ARM地址。指令集:指令32位,效率高,27、LPC2000系列芯片共有共有代碼密度低,所有ARM指令都是4個外接中斷輸入,它們既可以可以有條件執(zhí)行的。Thumb指令是IFQ也可以是IRQ。集:指令16位,代碼密度高,28、LPC2000系列芯片常用的開Thumb指令僅有一條指令具備條發(fā)工具:ADS、IAR、JATG、ISP 件執(zhí)行功能保持ARM的大多數(shù)性
29、嵌入式處理器的最小系統(tǒng)是能上的優(yōu)勢,是ARM指令集的子指提供嵌入式處理器運行所必集。須的條件的電路與嵌入式處理
17、廣泛使用的三種類型的操作器共同構(gòu)成的系統(tǒng)。嵌入式處理系統(tǒng):多道批處理操作系統(tǒng)、分器的最小系統(tǒng)的基本電路包含:時操作系統(tǒng)以及實時操作系統(tǒng)。時鐘系統(tǒng)、供電系統(tǒng)、復(fù)位及其常見的4種嵌入式實時操作系配置系統(tǒng)、存儲器系統(tǒng)(可選)、調(diào)試測試系統(tǒng)(可選)。
低系統(tǒng)的功耗?空閑和掉電。目前大多數(shù)電路采用CMOS工藝,靜態(tài)功耗很小,可以忽略,起主要作用的是動態(tài)功耗,因此降低功耗主要從降低動態(tài)功耗入手。低功耗設(shè)計技術(shù):低功耗器件、低功耗電路形式、降低或動態(tài)改變處理器的時鐘頻率、降低持續(xù)工作電流、減少處理器工作時間、采用快速算法。
32、內(nèi)部寄存器特點:ARM7TDMI處理器內(nèi)部有37個用戶可見的寄存器,31個通用32位寄存器,6個狀態(tài)寄存器。這些寄存器不能在同一時間被訪問,究竟何時才能訪問上述寄存器完全取決于處理器狀態(tài)和模式。
33、用戶模式CPSR模式位的值:1000034、系統(tǒng)模式CPSR模式位的值:1111134、列舉異常向量的向量地址。復(fù)位 0x00000000未定義 0x00000004軟件中斷 0x00000008
中止 0x0000000c中止(數(shù)據(jù))0x00000010保留 0x00000014IRQ 0x00000018FIQ0x0000001c35、異常優(yōu)先級順序:復(fù)位數(shù)據(jù)中止FIQIRQ中止未定義 SWI36、最大中斷延時27個周期,最小中斷延時4個周期 N負(fù)標(biāo)志位、運算結(jié)果的第31位值,記錄標(biāo)志設(shè)置的結(jié)果Z零標(biāo)志位、如果標(biāo)志設(shè)置操作的結(jié)果為0,則置位。C進(jìn)位標(biāo)志位、記錄無符號加法溢出,減法無錯位,循環(huán)移位。V溢出標(biāo)志位、記錄標(biāo)志設(shè)置操作的有符號溢出??刂莆唬篒、F、T、M【4:0】中斷禁止位:I、F(I=1:禁止IRQ中斷F=0:禁止FIQ中斷)標(biāo)志位:T反映處理器的運行狀態(tài)。T=1時,程序運行Thumb狀態(tài),否則運行于ARM狀態(tài)。模式控制位:M【4:0】決定了處理器的運行模式
總線就是各種信號線的集合,是計算機各部件之間傳送數(shù)據(jù)、地址和控制信息的公共
路??偩€的主要參數(shù)有:總線的帶寬、總線的位寬、總線的工作時鐘頻率。
預(yù)分頻功能:通過設(shè)置某個常量來控制pclk(定時器的時鐘源)的分頻。匹配功能:當(dāng)定時器值等于預(yù)設(shè)的匹配值時,從引腳輸出特定的信號。捕獲功能:如果輸入信號滿足設(shè)定的要求,將觸發(fā)捕獲動作,將定時器的計數(shù)值保存到捕獲寄存器中。
。除了用戶模式外,其他模式均可視為特權(quán)模式。后五個為異常模式。