第一篇:實(shí)習(xí)總結(jié)-嵌入式ARM
實(shí)訓(xùn)總結(jié)
班級(jí) 卓越1301姓名***
通過(guò)這段時(shí)間的學(xué)習(xí)使我學(xué)到了很多知識(shí),并且了解到ARM的應(yīng)用以及對(duì)開(kāi)發(fā)板的應(yīng)用,為以后的學(xué)習(xí)奠定了一定的基礎(chǔ)。
嵌入式系統(tǒng)一般定義為以應(yīng)用為中心、以計(jì)算機(jī)技術(shù)為基礎(chǔ),軟硬件可裁剪,應(yīng)用系統(tǒng)對(duì)功能、可靠性、成本、體積、功耗和應(yīng)用環(huán)境有特殊要求的專用計(jì)算機(jī)系統(tǒng)。是將應(yīng)用程序、操作系統(tǒng)和計(jì)算機(jī)硬件集成在一起的系統(tǒng)這是從技術(shù)角度。從系統(tǒng)角度上是設(shè)計(jì)完成復(fù)雜功能的硬件和軟件,并使其緊密耦合在一起的計(jì)算機(jī)系統(tǒng)。
廣義上講,凡是帶有微處理器的專用軟硬件系統(tǒng)都可稱為嵌入式系統(tǒng)。如各類單片機(jī)和DSP系統(tǒng)。這些系統(tǒng)在完成較為單一的專業(yè)功能時(shí)具有簡(jiǎn)潔高效的特點(diǎn)。但由于他們沒(méi)有操作系統(tǒng),管理系統(tǒng)硬件核軟件的能力有限,在實(shí)現(xiàn)復(fù)雜多任務(wù)功能時(shí),往往困難重重,甚至無(wú)法實(shí)現(xiàn)。從狹義上講,我們更加強(qiáng)調(diào)那些使用嵌入式微處理器構(gòu)成獨(dú)立系統(tǒng),具有自己操作系統(tǒng),具有特定功能,用于特定場(chǎng)合的嵌入式系統(tǒng)。
嵌入式的應(yīng)用也比較廣泛涉及軍事國(guó)防、工業(yè)控制、消費(fèi)電子和網(wǎng)絡(luò)。在家用方面更是數(shù)字電視、信息家電、智能玩具、手持通訊、存儲(chǔ)設(shè)備的核心。
在ARM指令集中了解到ARM的尋址方式以及它的的特性,具有高效、快速的特點(diǎn),還有Thumb指令集具有靈活、小巧的特點(diǎn)。
在這次實(shí)訓(xùn)中做了兩個(gè)項(xiàng)目,一個(gè)是LED燈,實(shí)現(xiàn)LED燈的點(diǎn)亮是比較簡(jiǎn)單的,通過(guò)查找手冊(cè)可以很快的了解到要使用的寄存器和方法,另一個(gè)項(xiàng)目是DS18B20這個(gè)比較復(fù)雜,除了要掌握對(duì)寄存器的使用,還要對(duì)了解對(duì)串口的初始化,讀寫字節(jié)等等。
感謝這次實(shí)訓(xùn),通過(guò)這次的實(shí)訓(xùn)項(xiàng)目,使我大體了解制作項(xiàng)目的步驟,了解了嵌入式技術(shù)的掌握是需要一個(gè)過(guò)程的。實(shí)事求是的說(shuō),嵌入式技術(shù)的全面掌握是有相當(dāng)難度的,通過(guò)積累和動(dòng)手總會(huì)有收獲的,從實(shí)驗(yàn)中也明白了一個(gè)大的項(xiàng)目并不是一個(gè)人可以完成的,團(tuán)隊(duì)協(xié)作很重要。
姓名:***
年級(jí):卓越1301
2014-7-5
第二篇:ARM嵌入式基礎(chǔ)教程知識(shí)點(diǎn)總結(jié)
1、舉出書(shū)本中未提到的嵌入式在每種異常模式下都有一個(gè)對(duì)統(tǒng):嵌入式μCLinux、Windows 系統(tǒng)的例子:紅綠燈控制,數(shù)字應(yīng)的物理寄存器——程序狀態(tài)CE、VxWorks、μC/OS-II 空調(diào),機(jī)頂盒、鍵盤、鼠標(biāo)、掃保存寄存器SPSR。當(dāng)異常出現(xiàn)
18、ARM是什么樣的公司?它是描儀 時(shí),SPSR用于保存CPSR的狀態(tài),一家微處理器行業(yè)的知名企業(yè),2、嵌入式系統(tǒng):嵌入到對(duì)象體以便異常返回后恢復(fù)異常發(fā)生該企業(yè)設(shè)計(jì)了大量高性能、廉系中的專用專用計(jì)算機(jī)應(yīng)用系時(shí)的工作狀態(tài)。價(jià)、耗能低的RISC處理器。特統(tǒng)。特點(diǎn):嵌入性、內(nèi)含計(jì)算機(jī)、12、ARM7TDMI 產(chǎn)生異常的條點(diǎn)是只設(shè)計(jì)芯片,而不生產(chǎn)。它專用性。件?ARM的異常有哪幾種,各進(jìn)將技術(shù)授權(quán)給世界上許多著名
3、嵌入式處理器:為完成特殊入何種工作模式?他們退出各的半導(dǎo)體、軟件和OEM廠商,并的應(yīng)用而設(shè)計(jì)的特殊目的的處采用什么指令? 提供服務(wù)。理器。嵌入式處理器分為三類:答:當(dāng)正常的程序被暫時(shí)中止,19、RISC是精簡(jiǎn)指令集計(jì)算機(jī)的1)注重尺寸,能耗,價(jià)格2)關(guān)處理器就進(jìn)入異常模式。1)復(fù)縮寫。CISC是復(fù)雜指令集計(jì)算機(jī)注性能3)關(guān)注全部四個(gè)需求。位異常(管理模式);2)未定的縮寫。集體分為四類:嵌入式微處理義指令異常(未定義模式);3)20、ARM處理器核:ARM7系列、器、嵌入式微控制器、嵌入式DSP 軟件中斷異常(管理模式);4)ARM9系列、ARM10系列、ARM1130、寄存器CPSR,SPSR的功能
各是什么?
答:1)CPSR包含條件碼標(biāo)志、中斷禁止位、當(dāng)前處理器模式以及其它狀態(tài)和控制信息。所有處理器模式下都可以訪問(wèn)當(dāng)前的程序狀態(tài)寄存器CPSR。2)在每種異常模式下都有一個(gè)對(duì)應(yīng)的物理寄存器——程序狀態(tài)保存寄存器SPSR。當(dāng)異常出現(xiàn)時(shí),SPSR用于保存 CPSR的狀態(tài),以便異常返回后恢復(fù)異常發(fā)生時(shí)的工作狀態(tài)。
31、LPC2000系列ARM7微控制器具有哪兩種低耗模式?如何降處理器、嵌入式片上系統(tǒng)
4、嵌入式操作系統(tǒng):是操作系統(tǒng)的一種類型,是在傳統(tǒng)操作系統(tǒng)的基礎(chǔ)上加入符合嵌入式系統(tǒng)要求的發(fā)展而來(lái)的。首先,嵌入式實(shí)時(shí)操作系統(tǒng)提高了系統(tǒng)的可靠性。其次,提高了開(kāi)發(fā)效率,縮短了開(kāi)發(fā)周期。再次,嵌入式實(shí)時(shí)操作系統(tǒng)充分發(fā)揮了 32 位 CPU 的多任務(wù)潛力。
5、ARM7TDMI中的T高密度 16 位的Thumb指令集擴(kuò)展、D支持片上調(diào)試、M64 位乘法指令、Embedded ICE 硬件仿真功能模塊
6、ARM7TDMI采用三級(jí)流水線(取指 譯碼 執(zhí)行)。存儲(chǔ)器編址方式:使用了馮·諾依曼結(jié)構(gòu),指令和數(shù)據(jù)共用一條32 位總線。
7、處理器模式指的是處理器在執(zhí)行程序時(shí)在不同時(shí)刻所處的不同狀態(tài),處理器狀態(tài)指的是處理器當(dāng)前所執(zhí)行的指令集。
8、ARM的處理器模式:用戶模式(usr)-正常程序執(zhí)行的模式。快中斷模式(fiq)-FIQ異常響應(yīng)時(shí)進(jìn)入此模式。中斷模式(irq)-IRQ異常響應(yīng)時(shí)進(jìn)入此模式。、管理模式(svc)-系統(tǒng)復(fù)位和軟件中斷響應(yīng)時(shí)進(jìn)入此模式。中止模式(abt)-用于虛擬存儲(chǔ)及存儲(chǔ)保護(hù)。未定義模式(und)-未定義指令異常響應(yīng)時(shí)進(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)用子程序時(shí)返回地址將自動(dòng)存入R14中;當(dāng)發(fā)生異常時(shí),將R14對(duì)應(yīng)的異常模式版本設(shè)置為異常返回地址,其他時(shí)候?yàn)橥ㄓ眉拇嫫?。程序?jì)數(shù)器R15(PC):R15總是指向正在“取值”的指令。
10、ARM狀態(tài)和Thumb狀態(tài)的寄存器之間的關(guān)系:1)R0-R7相同;2)CPSR相同,Thumb狀態(tài)無(wú)SPSR。Thumb狀態(tài)下不能更新CPSR中的ALU標(biāo)志位。Thumb指令對(duì)R8-R15寄存器訪問(wèn)受限。
11、ARM7TDMI(-S)尋址方式: 1)寄存器尋址2)立即尋址3)寄存器移位尋址4)寄存器間接尋址5)基址尋址6)多寄存器尋址7)堆棧尋址8).相對(duì)尋址.寄存器CPSR,SPSR的功能各是什么?答:1)CPSR包含條件碼標(biāo)志、中斷禁止位、當(dāng)前處理器模式以及其它狀態(tài)和控制信息。所有處理器模式下都可以訪問(wèn)當(dāng)前的程序狀態(tài)寄存器CPSR。2)指令預(yù)取中止異常(中止模式);系列、Intel的XScale系列和5)數(shù)據(jù)訪問(wèn)中止(中止模式);MPCore系列。6)快速中斷請(qǐng)求(FIQ模式);
21、LPC2000系列器件有幾種常7)外部中斷請(qǐng)求(IRQ模式)。見(jiàn)的封裝形式和其封裝特點(diǎn)?異常返回指令:1)SWI,未定義常見(jiàn)的封裝有64腳封裝,144腳的返回:MOVS PC,R14;2)IRQ,FIQ,封裝,功耗低,有多個(gè)32位定預(yù)取中止的返回:SUBS 時(shí)器,多達(dá)9個(gè)外部中斷,16KPC,R14,#4;3)數(shù)據(jù)中止返回并字節(jié)靜態(tài)RAM,1/128/256k字節(jié)重新存?。篠UBS PC,R14,#8異常片F(xiàn)lash存儲(chǔ)器,128為寬度接中斷的優(yōu)先級(jí):復(fù)位(最高優(yōu)先口加速器,4路10位ADC或8路級(jí))--> 數(shù)據(jù)異常中止--->FIQ 10位ADC(64腳和144腳封裝),---> IRQ--->預(yù)取指異常中止46或76~112個(gè)GPIO(64腳和--->SWI---->未定義指令(包括144腳封裝)。缺協(xié)處理器)。
22、簡(jiǎn)要說(shuō)明一下LPC2000系列
13、小端存儲(chǔ)器組織是較高的有器件片內(nèi)存儲(chǔ)器的特點(diǎn)?片內(nèi)效字節(jié)存放在較高的存儲(chǔ)器地存儲(chǔ)器分為片內(nèi)Flash和片內(nèi)靜址,較低的有效字節(jié)存放在較低態(tài)RAM。片內(nèi)Flash通過(guò)128位的存儲(chǔ)器地址(同同?。4蠖藢挾鹊目偩€與ARM內(nèi)核相連,具存儲(chǔ)器組織是較高的有效字節(jié)有很高的速度,特有的存儲(chǔ)器加存放在較低的存儲(chǔ)器地址,較低速功能,可以將程序直接放在的有效字節(jié)存放在較高的存儲(chǔ)Flash上運(yùn)行。SRAM支持8位、器地址(正反大)。16位和32位的讀寫訪問(wèn)。
14、描述一下LPC2210的PO.14、23、存儲(chǔ)器重映射是為了實(shí)現(xiàn)引P1.20、P1.26、BOOT1和BOOT0導(dǎo)塊和異常向量表地址的固定。引腳在芯片復(fù)位時(shí)分別有什么重映射引導(dǎo)塊,有利于用戶調(diào)用作用?并簡(jiǎn)單說(shuō)明LPC2000系列其中的某些程序,增加代碼的可ARM7微控制器的復(fù)位處理流程。移植性;異常向量表重映射為了 P0.14的低電平強(qiáng)制片內(nèi)引能讓ARM內(nèi)核通過(guò)訪問(wèn)0x0000~導(dǎo)裝載程序復(fù)位后控制器件的0x003F地址訪問(wèn)到其他存儲(chǔ)區(qū)操作,即進(jìn)入ISP 狀態(tài)。P1.20域的向量表。的低電平使 P1.25~P1.16復(fù)
24、LPC2000系列ARM7微控制器位后用作跟蹤端口。P1.26的對(duì)向量表有什么要求(向量表中低電平使 P1.31~P1.26復(fù)位的保留字)? 后用作一個(gè)調(diào)試端口。當(dāng)RESET 向量表中有一個(gè)空隙以確保軟為低時(shí),BOOT0 與BOOT1 一同控件能與不同的ARM結(jié)構(gòu)兼容;表制引導(dǎo)和內(nèi)部操作。引腳的內(nèi)部中異常入口地址處放置的是跳上拉確保了引腳未連接時(shí)呈現(xiàn)轉(zhuǎn)指令,已轉(zhuǎn)向中斷子程序。FIQ高電平。外部復(fù)位輸入:當(dāng)該引地址要放在向量表的最后。腳為低電平時(shí),器件復(fù)位,I/O25、FLASH是128位寬度的接口,口和外圍功能進(jìn)入默認(rèn)狀態(tài),處通過(guò)存儲(chǔ)器加速模塊提高其訪理器從地址0 開(kāi)始執(zhí)行程序。復(fù)問(wèn)速度。位信號(hào)是具有遲滯作用的TTL
26、FIQ、IRQ有什么不同?向量電平。IRQ和非向量IRQ有什么不同?
15、LDR/STR指令的偏移形式有FIQ是快速中斷,具有最高優(yōu)先哪4種?LDRB和LDRSB有何區(qū)級(jí),中斷處理轉(zhuǎn)入FIQ模式;IRQ別? 是普通中斷,優(yōu)先級(jí)低于FIQ,1)零偏移;2)前索引偏移;3)中斷處理轉(zhuǎn)入IRQ模式。向量IRQ程序相對(duì)偏移;4)后索引偏移。支持16個(gè)向量IRQ中斷,16個(gè)LDRB:讀出指定地址的數(shù)據(jù)并存優(yōu)先級(jí),能為每個(gè)中斷源設(shè)置服入指定寄存器,LDRSB:讀出指務(wù)程序地址;非向量IRQ支持一定地址的數(shù)據(jù),并高24位用符個(gè)非向量IRQ中斷,所有中斷都號(hào)位擴(kuò)展,再存入指定寄存器。共用一個(gè)相同的服務(wù)程序入口
16、ARM7TDMI指令集包括1)ARM地址。指令集:指令32位,效率高,27、LPC2000系列芯片共有共有代碼密度低,所有ARM指令都是4個(gè)外接中斷輸入,它們既可以可以有條件執(zhí)行的。Thumb指令是IFQ也可以是IRQ。集:指令16位,代碼密度高,28、LPC2000系列芯片常用的開(kāi)Thumb指令僅有一條指令具備條發(fā)工具:ADS、IAR、JATG、ISP 件執(zhí)行功能保持ARM的大多數(shù)性
29、嵌入式處理器的最小系統(tǒng)是能上的優(yōu)勢(shì),是ARM指令集的子指提供嵌入式處理器運(yùn)行所必集。須的條件的電路與嵌入式處理
17、廣泛使用的三種類型的操作器共同構(gòu)成的系統(tǒng)。嵌入式處理系統(tǒng):多道批處理操作系統(tǒng)、分器的最小系統(tǒng)的基本電路包含:時(shí)操作系統(tǒng)以及實(shí)時(shí)操作系統(tǒng)。時(shí)鐘系統(tǒng)、供電系統(tǒng)、復(fù)位及其常見(jiàn)的4種嵌入式實(shí)時(shí)操作系配置系統(tǒng)、存儲(chǔ)器系統(tǒng)(可選)、調(diào)試測(cè)試系統(tǒng)(可選)。
低系統(tǒng)的功耗?空閑和掉電。目前大多數(shù)電路采用CMOS工藝,靜態(tài)功耗很小,可以忽略,起主要作用的是動(dòng)態(tài)功耗,因此降低功耗主要從降低動(dòng)態(tài)功耗入手。低功耗設(shè)計(jì)技術(shù):低功耗器件、低功耗電路形式、降低或動(dòng)態(tài)改變處理器的時(shí)鐘頻率、降低持續(xù)工作電流、減少處理器工作時(shí)間、采用快速算法。
32、內(nèi)部寄存器特點(diǎn):ARM7TDMI處理器內(nèi)部有37個(gè)用戶可見(jiàn)的寄存器,31個(gè)通用32位寄存器,6個(gè)狀態(tài)寄存器。這些寄存器不能在同一時(shí)間被訪問(wèn),究竟何時(shí)才能訪問(wèn)上述寄存器完全取決于處理器狀態(tài)和模式。
33、用戶模式CPSR模式位的值:1000034、系統(tǒng)模式CPSR模式位的值:1111134、列舉異常向量的向量地址。復(fù)位 0x00000000未定義 0x00000004軟件中斷 0x00000008
中止 0x0000000c中止(數(shù)據(jù))0x00000010保留 0x00000014IRQ 0x00000018FIQ0x0000001c35、異常優(yōu)先級(jí)順序:復(fù)位數(shù)據(jù)中止FIQIRQ中止未定義 SWI36、最大中斷延時(shí)27個(gè)周期,最小中斷延時(shí)4個(gè)周期 N負(fù)標(biāo)志位、運(yùn)算結(jié)果的第31位值,記錄標(biāo)志設(shè)置的結(jié)果Z零標(biāo)志位、如果標(biāo)志設(shè)置操作的結(jié)果為0,則置位。C進(jìn)位標(biāo)志位、記錄無(wú)符號(hào)加法溢出,減法無(wú)錯(cuò)位,循環(huán)移位。V溢出標(biāo)志位、記錄標(biāo)志設(shè)置操作的有符號(hào)溢出。控制位:I、F、T、M【4:0】中斷禁止位:I、F(I=1:禁止IRQ中斷F=0:禁止FIQ中斷)標(biāo)志位:T反映處理器的運(yùn)行狀態(tài)。T=1時(shí),程序運(yùn)行Thumb狀態(tài),否則運(yùn)行于ARM狀態(tài)。模式控制位:M【4:0】決定了處理器的運(yùn)行模式
總線就是各種信號(hào)線的集合,是計(jì)算機(jī)各部件之間傳送數(shù)據(jù)、地址和控制信息的公共
路??偩€的主要參數(shù)有:總線的帶寬、總線的位寬、總線的工作時(shí)鐘頻率。
預(yù)分頻功能:通過(guò)設(shè)置某個(gè)常量來(lái)控制pclk(定時(shí)器的時(shí)鐘源)的分頻。匹配功能:當(dāng)定時(shí)器值等于預(yù)設(shè)的匹配值時(shí),從引腳輸出特定的信號(hào)。捕獲功能:如果輸入信號(hào)滿足設(shè)定的要求,將觸發(fā)捕獲動(dòng)作,將定時(shí)器的計(jì)數(shù)值保存到捕獲寄存器中。
。除了用戶模式外,其他模式均可視為特權(quán)模式。后五個(gè)為異常模式。
第三篇:ARM嵌入式技術(shù)復(fù)習(xí)總結(jié)
第一章 1.嵌入式系統(tǒng)定義/概念:嵌入式系統(tǒng)就是嵌入到對(duì)象體中的專用計(jì)算機(jī)系統(tǒng)。三要素:嵌入、專用、計(jì)算機(jī)。嵌入性:嵌入到對(duì)象體系中,有對(duì)象環(huán)境要求,專用性:軟、硬件按對(duì)象要求裁減,計(jì)算機(jī):實(shí)現(xiàn)對(duì)象的智能化功能。廣義的講,一個(gè)嵌入式系統(tǒng)就是一個(gè)具有特定功能或用途的計(jì)算機(jī)軟硬件集合體,即以應(yīng)用為中心,以計(jì)算機(jī)技術(shù)為基礎(chǔ),軟硬件可裁剪,適應(yīng)應(yīng)用對(duì)功能??煽啃?、成本、體積、功耗嚴(yán)格要求的專用計(jì)算機(jī)系統(tǒng)。嵌入式系統(tǒng)發(fā)展的最高形式——片上系統(tǒng)(SOC)2.嵌入式系統(tǒng)的特性:a.只執(zhí)行特定功能;b.以微控制器、外圍器件為中心,系統(tǒng)構(gòu)成可大可??;c.有嚴(yán)格的時(shí)序性和穩(wěn)定性要求;d.自動(dòng)操作循環(huán),等待中斷控制;e.程序被燒寫在存儲(chǔ)芯片中。(開(kāi)發(fā)時(shí)應(yīng)注意的a.嵌入式系統(tǒng)是面向具體應(yīng)用的產(chǎn)品b.嵌入式軟件特征:具有實(shí)時(shí)性,高質(zhì)量、高可靠,程序固化c.需要軟硬件開(kāi)發(fā)工具和系統(tǒng)軟件d.需要應(yīng)用專家參與開(kāi)發(fā)e.嵌入式系統(tǒng)分散而不可壟斷)3.嵌入式系統(tǒng)的分類:a.按表現(xiàn)形式分(硬件范疇):芯片級(jí)嵌入(含程序或算法的處理器)、模塊級(jí)嵌入(系統(tǒng)中的某個(gè)核心模塊)、系統(tǒng)級(jí)嵌入(完整系統(tǒng)并有嵌入軟件)b.按實(shí)時(shí)性要求分(軟件范疇):非實(shí)時(shí)系統(tǒng)(PDA)、實(shí)時(shí)系統(tǒng)(軟實(shí)時(shí)系統(tǒng):消費(fèi)類產(chǎn)品。硬實(shí)時(shí)系統(tǒng):工業(yè)和軍工系統(tǒng))4.嵌入式微處理器(發(fā)展趨勢(shì):經(jīng)濟(jì)性、微型化、智能化)主要分類: 微控制器(MCU)(51單片機(jī))、微處理器(MPU)(ARM、PowerPC)、數(shù)字信號(hào)處理器(DSP)(一般用在快速執(zhí)行算法,做控制比較困難)、混合處理器和片上系統(tǒng)(SOC)(結(jié)構(gòu)簡(jiǎn)潔,體積小、功耗低,可靠性高,設(shè)計(jì)生產(chǎn)效率高。Smart XA)、可編程片上系統(tǒng)(SOPC)5.嵌入式系統(tǒng)組成:粗略劃分:嵌入式處理器、外圍設(shè)備、嵌入式操作系統(tǒng)(可選)、嵌入式應(yīng)用軟件。稍細(xì)劃分:嵌入式處理器、外圍設(shè)備、驅(qū)動(dòng)程序、嵌入式操作系統(tǒng)、應(yīng)用接口、嵌入式應(yīng)用軟件。6.嵌入式操作系統(tǒng)簡(jiǎn)介:a.嵌入式操作系統(tǒng)是支持嵌入式系統(tǒng)的操作系統(tǒng),它是嵌入式應(yīng)用軟件的基礎(chǔ)和開(kāi)發(fā)平臺(tái)。b.功能:進(jìn)程調(diào)度、內(nèi)存管理、設(shè)備管理、文件管理、中斷管理、系統(tǒng)功能接口(API調(diào)用,如網(wǎng)絡(luò)功能)、設(shè)備驅(qū)動(dòng)。c.特點(diǎn):系統(tǒng)可裁減、可配置,系統(tǒng)具有實(shí)時(shí)性,系統(tǒng)穩(wěn)定、可靠。d.實(shí)時(shí)系統(tǒng)的定義:能夠?qū)ν獠渴录龀黾皶r(shí)響應(yīng)的系統(tǒng),響應(yīng)時(shí)間要有保證。硬實(shí)時(shí)系統(tǒng):對(duì)系統(tǒng)響應(yīng)時(shí)間有嚴(yán)格的要求,如果系統(tǒng)響應(yīng)時(shí)間不能滿足,就會(huì)引起系統(tǒng)崩潰或致命的錯(cuò)誤。軟實(shí)時(shí)系統(tǒng):對(duì)系統(tǒng)響應(yīng)時(shí)間有要求,但是如果系統(tǒng)響應(yīng)時(shí)間不能滿足,它并不會(huì)導(dǎo)致系統(tǒng)出現(xiàn)致命的錯(cuò)誤或崩潰,只是降低系統(tǒng)的吞吐量。e.幾種主流的嵌入式操作系統(tǒng):μC/OS-II:教學(xué)的免費(fèi)、面向中小型嵌入式系統(tǒng)應(yīng)用。Vxworks:具有可靠、實(shí)時(shí)、可裁減特性。WinCE:它是微軟針對(duì)個(gè)人電腦以外的電腦產(chǎn)品所研發(fā)的嵌入式操作系統(tǒng)。Linux/μCLinux:免費(fèi)、源碼開(kāi)放的操作系統(tǒng),μclinux面向沒(méi)有MMU的硬件平臺(tái)。PalmOS :具有開(kāi)放的操作系統(tǒng)應(yīng)用程序接口(API),可讓用戶靈活方便地定制操作系統(tǒng)。
第二章1.ARM體系的特點(diǎn):a.低功耗、低成本、高性能(3/5級(jí)流水線)。b.采用RISC體系結(jié)構(gòu)。c.使用大量的寄存器(37個(gè)寄存器31個(gè)通用6個(gè)狀態(tài))d.高效的指令系統(tǒng)(Thumb指令與等價(jià)的ARM代碼相比較可節(jié)省30~40%以上的存儲(chǔ)空間)e.在保證高性能的前提下盡量縮小芯片面積、降低功耗;所有的指令都可以根據(jù)前面的執(zhí)行結(jié)果決定是否被執(zhí)行。2.ARM7采用3級(jí)流水線(是把一個(gè)重復(fù)的過(guò)程分解為若干個(gè)子過(guò)程,每個(gè)子過(guò)程可以與其他子過(guò)程同時(shí)進(jìn)行):取指(從程序存儲(chǔ)器中取指令,放入指令流水線,占用存儲(chǔ)器訪問(wèn)操作)、譯碼(指令譯碼,占用譯碼邏輯)、執(zhí)行(執(zhí)行指令/讀寫reg,占用ALU及數(shù)據(jù)路徑)。一條指令有3個(gè)時(shí)鐘周期的執(zhí)行時(shí)間,但吞吐量是每個(gè)周期1條指令。PC 指向處于讀取級(jí)的指令地址,而不是處于執(zhí)行級(jí)的指令地址PC=當(dāng)前執(zhí)行指令地址+8。比較:ARM9是5級(jí)流水線(取指、譯碼、執(zhí)行、存儲(chǔ)器、寫),哈佛架構(gòu),擁有獨(dú)立的指令和數(shù)據(jù)總線;指令和數(shù)據(jù)的讀取可以在同一周期進(jìn)行。3級(jí)流水的ARM7內(nèi)核是指令和數(shù)據(jù)總線復(fù)用的馮.諾依曼架構(gòu),指令和數(shù)據(jù)的讀取不能在同一周期進(jìn)行;5級(jí)流水線設(shè)計(jì)把寄存器讀取、邏輯運(yùn)算、結(jié)果回寫分散在不同的流水當(dāng)中,每一級(jí)流水的操作簡(jiǎn)潔,提升了處理器的主頻。3.ARM微處理器的工作狀態(tài)與模式:兩種工作狀態(tài):ARM狀態(tài),此時(shí)處理器執(zhí)行32位的字對(duì)齊的ARM指令;Thumb狀態(tài),此時(shí)處理器執(zhí)行16位的、半字對(duì)齊的Thumb指令。狀態(tài)切換:ARM?THUMB:當(dāng)操作數(shù)寄存器的狀態(tài)位(位0)為1時(shí),可以采用執(zhí)行BX指令的方法;當(dāng)處理器處于Thumb狀態(tài)時(shí)發(fā)生異常,則異常處理返回時(shí),自動(dòng)切換到Thumb狀態(tài)。THUMB?ARM:當(dāng)操作數(shù)寄存器的狀態(tài)位為0時(shí),執(zhí)行BX指令;在處理器進(jìn)行異常處理時(shí),把PC指針?lè)湃氘惓DJ芥溄蛹拇嫫髦?,并從異常向量地址開(kāi)始執(zhí)行程序,也可使處理器切換到ARM狀態(tài)。模式:用戶模式:ARM處理器正常的程序執(zhí)行狀態(tài),大部分任務(wù)執(zhí)行在這種模式;快速中斷模式:當(dāng)一個(gè)高優(yōu)先級(jí)中斷產(chǎn)生時(shí)將會(huì)進(jìn)入這種模式,用于高速數(shù)據(jù)傳輸或通道處理;外部中斷模式:當(dāng)一個(gè)低優(yōu)先級(jí)中斷產(chǎn)生時(shí)將會(huì)進(jìn)入這種模式,用于通用的中斷處理;管理模式:當(dāng)復(fù)位或軟中斷指令執(zhí)行時(shí)將會(huì)進(jìn)入這種模式,供操作系統(tǒng)使用的一種保護(hù)模式;中止模式:當(dāng)存取異常時(shí)將會(huì)進(jìn)入這種模式,用于虛擬存儲(chǔ)及存儲(chǔ)保護(hù);未定義模式:當(dāng)執(zhí)行未定義指令時(shí)會(huì)進(jìn)入這種模式,軟件仿真硬件協(xié)處理器;系統(tǒng)模式:供需要訪問(wèn)系統(tǒng)資源的操作系統(tǒng)任務(wù)使用,運(yùn)行具有特權(quán)的操作系統(tǒng)任務(wù)。模式特點(diǎn):1)用戶模式特點(diǎn):應(yīng)用程序不能夠訪問(wèn)受操作系統(tǒng)保護(hù)的系統(tǒng)資源;應(yīng)用程序不能進(jìn)行處理器模式的切換。2)系統(tǒng)模式特點(diǎn):不屬于異常模式,不是通過(guò)異常進(jìn)入的。系統(tǒng)模式屬于特權(quán)模式,可以訪問(wèn)所有的系統(tǒng)資源,也可以直接進(jìn)行模式的切換。它主要供操作系統(tǒng)使用。3)特權(quán)模式:除用戶模式之外的工作模式,特點(diǎn):應(yīng)用程序可以訪問(wèn)所有的系統(tǒng)資源;可以任意地進(jìn)行處理器模式的切換 4)異常模式:除用戶模式、系統(tǒng)模式之外的五種模式,特點(diǎn):以各自的中斷或異常方式進(jìn)入,并且處理各自的中斷或異常。模式切換:軟件控制進(jìn)行切換(在特權(quán)模式下通過(guò)改變CPSR中的運(yùn)行模式位[4:0]);通過(guò)外部中斷和異常進(jìn)行切換。4.數(shù)據(jù)類型: 8位、16位(半字對(duì)齊)、32位(字對(duì)齊)的有符號(hào)和無(wú)符號(hào)型。5.存儲(chǔ)字?jǐn)?shù)據(jù):兩種方法(大端、小端格式)。大端格式:字?jǐn)?shù)據(jù)的高字節(jié)存儲(chǔ)在低地址中,而字?jǐn)?shù)據(jù)的低字節(jié)則存放在高地址中;小端格式:與大端存儲(chǔ)格式相反。缺省設(shè)置為小端格式。6.ARM狀態(tài)下寄存器:程序計(jì)數(shù)器PC(R15)(ARM狀態(tài)下,位[1:0]為0,位[31:2]用于保存PC;Thumb狀態(tài)下,位[0]為0,位[31:1]用于保存PC)。R13常用作堆棧指針(SP)。R14也稱作子程序連接寄存器或連接寄存器LR。當(dāng)執(zhí)行BL子程序調(diào)用指令時(shí),可以從R14中得到R15的備份。寄存器R16用作CPSR(當(dāng)前程序狀態(tài)寄存器)。7.ARM/Thumb下寄存器區(qū)別:Thumb狀態(tài)下的寄存器集是ARM狀態(tài)下寄存器集的一個(gè)子集,Thumb和ARM狀態(tài)下的R0~R7、CPSR和所有的SPSR是相同的;Thumb狀態(tài)下的SP對(duì)應(yīng)于ARM狀態(tài)下的R13;Thumb狀態(tài)下的LR對(duì)應(yīng)于R14;Thumb狀態(tài)下的PC對(duì)應(yīng)于R15。8.異常:ARM有7種異常:復(fù)位、未定義指令、軟件中斷、指令預(yù)取中止、數(shù)據(jù)中止、IRQ、FIQ。異常響應(yīng):復(fù)位異常立即中止當(dāng)前指令。其他:保存返回地址(將引起異常指令的下一條指令的地址保存到新的異常模式下的R14);保存當(dāng)前狀態(tài)寄存器CPSR的內(nèi)容(將CPSR的內(nèi)容保存到將要執(zhí)行的異常中斷對(duì)應(yīng)的SPSR中);設(shè)置當(dāng)前狀態(tài)寄存器CPSR中的相應(yīng)位(設(shè)置控制位使進(jìn)入響應(yīng)執(zhí)行模式;禁止FIQ、IRQ);轉(zhuǎn)去執(zhí)行中斷處理程序(取相應(yīng)的中斷向量給程序計(jì)數(shù)器PC)。返回:將返回地址裝入PC ;恢復(fù)CPSR的值 ;清除中斷屏蔽位。9.異常向量地址:復(fù)位-0x00000000(管理模式);未定義-0x00000004(未定義);軟件中斷-08(管理);中止(預(yù)取指令)-0c(中止);中止(數(shù)據(jù))-10(中止);保留-0x00000014;IRQ-18(IRQ);FIQ-1C(FIQ)。10.異常優(yōu)先級(jí):復(fù)位>數(shù)據(jù)中止>FIQ>IRQ>預(yù)取指令中止>未定義中止、SWI
第五章1.編寫應(yīng)用程序都要用到的文件:a.INC目錄下的文件: Def.h(基本數(shù)據(jù)類型重定義頭文件U32,S16等)Option.h(是硬件系統(tǒng)重要設(shè)置頭文件,修改系統(tǒng)的工作頻率,總線寬度,一些重要地址的值)2410addr.h(是2410的寄存器的地址宏定義頭文件)2410lib.h(調(diào)試時(shí)常用函數(shù),還有一些其它的常用函數(shù)的頭文件)b.SRC目錄下的文件: 2410init.s 是2410初始化啟動(dòng)程序,由匯編語(yǔ)言寫成2.ARM的啟動(dòng)過(guò)程—系統(tǒng)的初始化:包括兩個(gè)級(jí)別的操作:系統(tǒng)運(yùn)行環(huán)境初始化、應(yīng)用程序初始化。a.運(yùn)行環(huán)境初始化(對(duì)于嵌入式應(yīng)用系統(tǒng)來(lái)說(shuō),由于沒(méi)有操作系統(tǒng)的支持,存放在ROM的代碼必須進(jìn)行所有的初始化工作):①設(shè)置初始入口點(diǎn)(初始入口點(diǎn)是映象文件運(yùn)行時(shí)的入口點(diǎn),每個(gè)映像文件只有一個(gè)唯一的初始入口點(diǎn),它保存在ELF頭文件中。初始入口點(diǎn)必須位于映像文件的可執(zhí)行區(qū)域;包含初始入口點(diǎn)的可執(zhí)行域不能被覆蓋,它的加載時(shí)地址和運(yùn)行時(shí)地址必須是相同的)②設(shè)置中斷向量表(如果系統(tǒng)運(yùn)行時(shí),地址0x00處為RAM,則系統(tǒng)初始化時(shí)必須重建異常中斷向量表)③初始化存儲(chǔ)系統(tǒng)④初始化數(shù)據(jù)棧指針⑤初始化關(guān)鍵的IO設(shè)備⑥設(shè)置中斷昔日需要的RAM變量⑦使能異常中斷(通過(guò)清除CPSR寄存器的中斷禁止位實(shí)現(xiàn))⑧切換處理器模式(系統(tǒng)還處于特權(quán)模式,如果下面要運(yùn)行的應(yīng)用程序是在用戶模式下運(yùn)行,就需要將處理器切換到用戶模式。)⑨切換程序狀態(tài)(所有的RAM內(nèi)核都是從ARM狀態(tài)開(kāi)始執(zhí)行的)b.應(yīng)用程序初始化①將已經(jīng)初始化的數(shù)據(jù)搬運(yùn)到可寫的數(shù)據(jù)區(qū)(這部分?jǐn)?shù)據(jù)就是映像文件中的RW屬性的數(shù)據(jù))②在可寫存儲(chǔ)區(qū)建立ZI屬性的可寫數(shù)據(jù)區(qū)3.ARM的啟動(dòng)過(guò)程—初始化程序分析:①定義程序入口地址(由AREA偽操作定義: AREA Init,CODE,READONLYENTRY)②建立異常向量以及中斷處理:1)建立中斷向量入口2)建立中斷服務(wù)程序入口地址表3)看門狗與中斷禁止(當(dāng)系統(tǒng)復(fù)位后,看門狗與中斷要被首先禁止與被初始化,否則,當(dāng)看門狗溢出產(chǎn)生的系統(tǒng)復(fù)位,引起中斷,其它中斷源產(chǎn)生中斷時(shí),CPU會(huì)進(jìn)入一個(gè)未知的狀態(tài),出現(xiàn)程序跑飛等現(xiàn)象)4)系統(tǒng)時(shí)鐘初始化5)電源低功耗模式6)內(nèi)存控制器初始化(接口時(shí)序優(yōu)化)7)模式的堆棧初始化地址(對(duì)程序中需要用到的每一種模式都要給SP定義一個(gè)堆棧地址)8)初始化用戶執(zhí)行環(huán)境(應(yīng)用程序執(zhí)行環(huán)境的初始化,就是完成必要的從ROM到RAM的數(shù)據(jù)傳輸和內(nèi)容清零)9)呼叫主應(yīng)用程序(IMPORT main或B main)4.ARM映像文件:arm映像文件其實(shí)就是可執(zhí)行文件,包括bin或hex兩種格式,可以直接燒到rom里執(zhí)行。映像文件一般由域組成。域最多由三個(gè)輸出段組成(RO、RW、ZI)組成,輸出段又由輸入段(代碼和數(shù)據(jù))組成。5.中斷(☆注:異常包含5種模式:管理(復(fù)位、軟件中斷SWI)、中止(指令預(yù)取中止、數(shù)據(jù)中止)、未定義、快速中斷FIQ、外部中斷IRQ。中斷分兩類:SWI、硬件(FIQ、IRQ)。異常包含中斷,中斷都屬于異常)中斷仲裁:決定中斷的優(yōu)先級(jí),當(dāng)中斷控制器接收到多個(gè)中斷請(qǐng)求時(shí),其內(nèi)的優(yōu)先級(jí)仲裁器裁決后向CPU發(fā)出優(yōu)先級(jí)最高的中斷請(qǐng)求信號(hào)或快速中斷請(qǐng)求信號(hào),中斷系統(tǒng)有6個(gè)分仲裁器和1個(gè)總仲裁器,每一個(gè)仲裁器可以處理6路中斷。在編寫中斷服務(wù)程序時(shí)需要滿足如下要求:(1)不能向中斷服務(wù)程序傳遞參數(shù);(2)中斷服務(wù)程序沒(méi)有返回值;(3)中斷服務(wù)程序應(yīng)要盡可能短,來(lái)減少中斷服務(wù)程序的處理時(shí)間,保證實(shí)時(shí)系統(tǒng)的性能。使用中斷的步驟:(1)在使用中斷前先設(shè)置好相應(yīng)模式下的堆棧。如當(dāng)發(fā)生快速中斷FIQ 時(shí),CPU進(jìn)入“快中斷模式”,這時(shí)使用“快中斷模式”下的堆棧。(2)對(duì)于“Request sources”中的中斷,將INTSUBMSK 寄存器中相應(yīng)位設(shè)為0。(3)將INTMSK 寄存器中相應(yīng)位設(shè)為O。(4)確定使用的方式:是FIQ 還是IRQ。如果是FIQ,則在INTMOD 寄存器設(shè)置相應(yīng)位為1。如果是IRQ,則在PRIORITY 寄存器中設(shè)置優(yōu)先
級(jí)(5)準(zhǔn)備好中斷處理函數(shù):①中斷向量:在中斷向量設(shè)置好當(dāng)FIQ 或IRQ 被觸發(fā)時(shí)的跳轉(zhuǎn)函數(shù)。②對(duì)于IRQ,在跳轉(zhuǎn)函數(shù)中讀取INTPND 寄存器或INTOFFSET 寄存器的值來(lái)確定中斷源,然后調(diào)用具體的處理函數(shù)。③對(duì)于FIQ,因?yàn)橹挥幸粋€(gè)中斷可以設(shè)為FIQ,無(wú)須判斷中斷源。④中斷處理函數(shù)進(jìn)入和返回。(6)設(shè)置CPSR 寄存器中的F位對(duì)于FIQ,或I位對(duì)于IRQ,其值為0時(shí),表示開(kāi)中斷。
第六章1.Nor Flash與Nand Flash比較:Nor flash:讀速度高,而擦、寫速度低,容量小,價(jià)格高。Nand flash:讀速度不如Nor flash,但擦、寫速度高,容量大,價(jià)格低。有取代磁盤的趨勢(shì)?,F(xiàn)在不少用戶從Nand flash啟動(dòng)和引導(dǎo)系統(tǒng)(開(kāi)始 4KB代碼,BANK0中,自動(dòng)復(fù)制到內(nèi)部SRAM中,利用這4KB的代碼把更多的代碼從Nand flash中讀到SDRAM中),而在SDRAM上執(zhí)行主程序代碼。2.串口介紹:(1)UART(通用異步串行口):有三個(gè)獨(dú)立的異步串行I/O 端口,每個(gè)串口(11個(gè)專用寄存器,共39個(gè))都可以在中斷和DMA 兩種模式下進(jìn)行收發(fā)。UART支持的最高波特率達(dá)230.4kbps。每個(gè)UART 包含:波特率發(fā)生器(以PCLK或UCLK為時(shí)鐘源)、接收器、發(fā)送器和控制單元。發(fā)送器和接收器各包含1個(gè)16 字節(jié)的FIFO 寄存器和移位寄存器。工作原理:(FIFO模式)當(dāng)發(fā)送數(shù)據(jù)的時(shí)候,數(shù)據(jù)先寫到FIFO 然后拷貝到發(fā)送移位寄存器,然后從數(shù)據(jù)輸出端口(TxDn)依次被移位輸出。被接收的數(shù)據(jù)也同樣從接收端口(RxDn)移位輸入到移位寄存器,然后拷貝到FIFO 中。使用FIFO與不使用FIFO的比較:前者是通過(guò)對(duì)FIFO狀態(tài)寄存器UFSTATn的查詢,確定進(jìn)行收發(fā),后者是通過(guò)對(duì)收/發(fā)狀態(tài)寄存器UTRSTATn的查詢,確定進(jìn)行收發(fā)。中斷或DMA請(qǐng)求: 7種中斷請(qǐng)求事件是:溢出錯(cuò)誤、奇偶校驗(yàn)錯(cuò)誤、幀格式錯(cuò)誤、傳輸中斷信號(hào)、接收緩沖器數(shù)據(jù)就緒、發(fā)送緩沖器空、發(fā)送移位器空。分成3類:錯(cuò)誤中斷請(qǐng)求、接收中斷請(qǐng)求、發(fā)送中斷請(qǐng)求。RS232:全雙工,采用負(fù)邏輯,單端傳送,適合短距離傳輸;RS422:?jiǎn)喂げ罘郑瑑蓷l線相對(duì)電壓傳送,至少需要四條線傳輸;RS485:半雙工,單工差分,差分異步傳輸,適合遠(yuǎn)距離傳輸。(2)USB接口(通用串行總線)(49個(gè)reg):主要用于PC與外圍設(shè)備互連,數(shù)據(jù)傳輸速度為:低速1.5Mb/s,全速12Mb/s,高速480Mb/s。主要由5部分組成:USB芯片及協(xié)議程序(固件)、控制器(控制USB芯片)、控制器程序、USB設(shè)備驅(qū)動(dòng)程序、USB設(shè)備。USB總線主要特點(diǎn):USB端口不區(qū)分設(shè)備,即插即用、可熱插拔,傳輸速度高,易擴(kuò)展、可擴(kuò)展到127個(gè)USB設(shè)備,對(duì)設(shè)備提供電源,成本低等。(3)I2C串行總線接口:(4個(gè)reg)總線信號(hào)為兩線,一個(gè)能夠雙向傳輸?shù)臄?shù)據(jù)線SDA、另一個(gè)能夠雙向傳輸?shù)臅r(shí)鐘線SCL。是信號(hào)線
2最少的串行總線。總線的特點(diǎn):a.有一個(gè)IC總線接口。b.I2C總線的速度:可以標(biāo)準(zhǔn)速度傳輸(100kb/s),也可以高速傳輸(高達(dá)400kb/s)。c.可以查詢方式
和中斷方式工作。d.可以主設(shè)備身份傳輸,也可以從設(shè)備身份傳輸,因此共有4種操作模式(主機(jī)、從機(jī)發(fā)送、接收)。主要有5部分構(gòu)成:數(shù)據(jù)收發(fā)寄存器、數(shù)據(jù)移位寄存器、地址寄存器、時(shí)鐘發(fā)生器、控制邏輯等部分。系統(tǒng)要求:a.各個(gè)節(jié)點(diǎn)設(shè)備必須具有I2C接口功能;b.各個(gè)節(jié)點(diǎn)設(shè)備必須共地;c.兩個(gè)信號(hào)線必須接上拉電阻。(4)I2S串行總線接口:a.1通道音頻I2S總線接口,可基于 DMA方式工作;b.串行,每通道 8/16 位數(shù)據(jù)傳輸;c.發(fā)送和接收具備 128 字節(jié)(64 字節(jié)加64 字節(jié))FIFO;d.支持 IIS 格式和 MSB-justified數(shù)據(jù)格式。(5)網(wǎng)絡(luò)接口:支持8位、16位的微處理器,可以工作在I/0方式或Memory方式。片內(nèi)集成了雙工SA總線接口,可以直接和有雙工SA總線的微處理器系統(tǒng)無(wú)縫連接。(6)JTAG接口:硬件仿真器可以通過(guò)JTAG接口對(duì)開(kāi)發(fā)板進(jìn)行在線仿真調(diào)試,也可以使用sjf2410等燒寫工具通過(guò)JTAG接口對(duì)其擴(kuò)展的Flash存儲(chǔ)器進(jìn)行編程。(7)SPI 接口:a.兼容 2 通道 SPI 協(xié)議 2.11版;b.發(fā)送和接收具有 2×8 位的22移位寄存器;c.可以基于 DMA或中斷模式工作3.串口總結(jié):芯片級(jí)(IC、IS、SPI、USB),系統(tǒng)級(jí)(網(wǎng)絡(luò)接口、JTAG接口、USB、UAR T :RS232/485/422)。URAT
傳輸距離:RS232<485(差分)<光纜。4.看門狗:看門狗是一種電路,具有監(jiān)視并恢復(fù)程序正常運(yùn)行的功能,是一個(gè)定時(shí)器電路。基本原理:設(shè)一系統(tǒng)程序完整運(yùn)行一周期的時(shí)間是Tp,看門狗的定時(shí)周期為Ti,要求Ti>Tp。在程序運(yùn)行一周期后,修改定時(shí)器的計(jì)數(shù)值,只要程序正常運(yùn)行,定時(shí)器就不會(huì)溢出。若由于干擾等原因使系統(tǒng)不能在Tp 時(shí)刻修改定時(shí)器的計(jì)數(shù)值,定時(shí)器將在Ti 時(shí)刻溢出,引發(fā)系統(tǒng)復(fù)位,使系統(tǒng)得以重新運(yùn)行,從而起到監(jiān)控作用。功能:定時(shí)器功能、復(fù)位功能。構(gòu)成:時(shí)鐘、看門狗計(jì)時(shí)器、看門狗數(shù)據(jù)寄存器、復(fù)位信號(hào)發(fā)生器、控制邏輯等。5.補(bǔ)充:(1)I/O端口寄存器:引腳配置寄存器、數(shù)據(jù)reg、引腳上拉reg、保留reg。(2)LCD(液晶顯示器):是一種數(shù)字顯示技術(shù),可以通過(guò)液晶和彩色過(guò)濾器過(guò)濾光源,在平面面板上產(chǎn)生圖象。組成:LCD顯示屏、顯示控制器、緩沖存儲(chǔ)器。
第七章1.Linux系統(tǒng)及特點(diǎn):Linux是一套免費(fèi)使用和自由傳播的類Unix操作系統(tǒng)。特點(diǎn):自由軟件,開(kāi)放源代碼;真正的多用戶、多任務(wù)操作系統(tǒng);可靈活裁剪配置;支持多種硬件平臺(tái);提供強(qiáng)大的管理功能;完全符合POSIX標(biāo)準(zhǔn);具有豐富的圖形界面;具有強(qiáng)大的網(wǎng)絡(luò)功能。2.Linux組成:①Linux內(nèi)核,功能是:進(jìn)程管理(負(fù)責(zé)創(chuàng)建和撤銷進(jìn)程以及處理他們和外部世界的連接)、內(nèi)存管理(內(nèi)核在有限的可用資源上為每個(gè)進(jìn)程都創(chuàng)建了一個(gè)虛擬尋址空間)、文件系統(tǒng)(內(nèi)核在沒(méi)有結(jié)構(gòu)硬件上構(gòu)造結(jié)構(gòu)化的文件系統(tǒng))、設(shè)備控制(內(nèi)核必須為系統(tǒng)中的每件外設(shè)嵌入相應(yīng)的驅(qū)動(dòng)程序)、網(wǎng)絡(luò)功能(處理路由和地址解析問(wèn)題)。②Linux Shell:常用的有:Bourne Shell(sh,最初始的Shell,并且在每種Unix上都可以使用),C-Shelll(csh),Korn Shell(ksh),Bourne Again Shell(bash,大多數(shù)Linux系統(tǒng)的默認(rèn)Shell)。③Linux文件結(jié)構(gòu):文件結(jié)構(gòu)是文件存放在磁盤等存儲(chǔ)設(shè)備上的組織方法,主要體現(xiàn)在對(duì)文件和目錄的組織上,目錄提供了管理文件的一個(gè)方便而有效的途徑。Linux目錄采用多級(jí)樹(shù)形結(jié)構(gòu),用戶可以瀏覽整個(gè)系統(tǒng),可以進(jìn)入任何一個(gè)已授權(quán)進(jìn)入的目錄,訪問(wèn)那里的文件,目錄樹(shù)只有一個(gè),不管OS管理幾個(gè)磁盤分區(qū)。④Linux實(shí)用工具,分三類:編輯器:用于編輯文件;過(guò)濾器:用于接收數(shù)據(jù)并過(guò)濾數(shù)據(jù);交互程序:允許用戶發(fā)送信息或接收來(lái)自其他用戶的信息。
第八章1.交叉編譯環(huán)境的軟件工具1)Binutils:Binutils是一組針對(duì)目標(biāo)系統(tǒng)的二進(jìn)制開(kāi)發(fā)工具,包括連接器、匯編器和其他用于目標(biāo)文件和檔案的工具。2)GCC:編譯器,gcc不但能夠支持C/C++語(yǔ)言的編譯,而且能夠支持FORTRAN JAVA ADA等編程語(yǔ)言。3)Glibc:Glibc庫(kù)是提供系統(tǒng)調(diào)用和基本函數(shù)的C庫(kù),可以編譯生成靜態(tài)庫(kù)和動(dòng)態(tài)庫(kù)。4)GDB:GDB可以調(diào)試C和C++語(yǔ)言程序,功能:a.啟動(dòng)被調(diào)試程序。b.讓被調(diào)試的程序在指定的位置停住。c.當(dāng)程序被停住時(shí),可以檢查程序狀態(tài)(如變量值)。5)Crosstool:實(shí)際上是一個(gè)腳本,用于編譯和測(cè)試大多數(shù)體系結(jié)構(gòu)的各gcc和glibc的版本組合。2.Linux開(kāi)發(fā)環(huán)境組建:可分別建立以LINUX為操作系統(tǒng)的開(kāi)發(fā)環(huán)境或者在Windows下安裝模擬Linux環(huán)境的軟件。幾種組建方案:① Windows+ Linux +目標(biāo)系統(tǒng)(可以解決開(kāi)發(fā)環(huán)境問(wèn)題,但同時(shí)用兩個(gè)操作系統(tǒng),來(lái)回切換,浪費(fèi)時(shí)間)、②Windows+cygwin+目標(biāo)系統(tǒng)(cygwin是運(yùn)行于windows下的linux模擬運(yùn)行環(huán)境,但是在使用某些特殊功能時(shí),需要添加一些補(bǔ)?。?、③Windows+虛擬機(jī)(Linux)+目標(biāo)系統(tǒng)(在不破壞原有操作系統(tǒng)的基礎(chǔ)上,虛擬一臺(tái)‘真實(shí)’計(jì)算機(jī),在它上面安裝linux和操作真實(shí)的linux一樣)、④Windows+Linux服務(wù)器 +目標(biāo)系統(tǒng)(只需要一臺(tái)linux服務(wù)器即可,對(duì)客戶機(jī)和服務(wù)器的硬件要求沒(méi)什么特別需求)。3.用戶、Shell、Linux之間關(guān)系:Shell作為操作系統(tǒng)的外殼,為用戶提供使用操作系統(tǒng)的接口。它是命令語(yǔ)言、命令解釋程序及程序設(shè)計(jì)語(yǔ)言的統(tǒng)稱。Shell是用戶和操作系統(tǒng)之間最主要接口。通過(guò)Shell,可以同時(shí)在后臺(tái)運(yùn)行多個(gè)應(yīng)用程序,并且在把需要與用戶交互的程序放在前臺(tái)運(yùn)行。4.makefile文件的作用:使用make 工具,可以將大型的開(kāi)發(fā)項(xiàng)目分解成為多個(gè)易于管理的模塊,make在執(zhí)行時(shí),需要一個(gè)命名為Makefile的文件。Makefile文件描述了整個(gè)工程的編譯,連接等規(guī)則。Makefile說(shuō)明了組成程序的各模塊間的相互關(guān)系及更新模塊時(shí)必須進(jìn)行的動(dòng)作,make按照這些說(shuō)明自動(dòng)地維護(hù)這些模塊。在makefile(Makefile)中,自頂向下說(shuō)明各模塊之間的依賴關(guān)系及實(shí)現(xiàn)方法。
第九章1.BootLoader概念:系統(tǒng)上電之后,需要一段程序來(lái)進(jìn)行初始化,如果它能將操作系統(tǒng)內(nèi)核(從本地Flash或通過(guò)網(wǎng)絡(luò))復(fù)制到內(nèi)存中運(yùn)行,就稱這段程序?yàn)锽ootloader。其作用是,在系統(tǒng)上電時(shí)開(kāi)始執(zhí)行,初始化硬件設(shè)備、準(zhǔn)備好軟件環(huán)境,最后調(diào)用操作系統(tǒng)內(nèi)核。2.兩種操作模式:①啟動(dòng)加載模式,即Bootloader從目標(biāo)機(jī)上的某個(gè)固態(tài)存儲(chǔ)設(shè)備上將操作系統(tǒng)加載到RAM中運(yùn)行,整個(gè)過(guò)程并沒(méi)有用戶的介入;②下載模式,目標(biāo)機(jī)上的Bootloader將通過(guò)串口連接或網(wǎng)絡(luò)連接等通信手段從主機(jī)下載文件,這種模式通常在第一次安裝內(nèi)核與根文件系統(tǒng)時(shí)被使用,以后的系統(tǒng)更新也會(huì)使用Bootloader的這種工作模式。3.啟動(dòng)方式:①網(wǎng)絡(luò)啟動(dòng)方式,使用這種啟動(dòng)方式之前,需要把Bootloader安裝到板上的EPROM或者Flash中。Bootloader通過(guò)以太網(wǎng)接口遠(yuǎn)程下載Linux內(nèi)核映像或者文件系統(tǒng)。②磁盤啟動(dòng)方式,傳統(tǒng)的Linux系統(tǒng)運(yùn)行在臺(tái)式機(jī)或者服務(wù)器上,這些計(jì)算機(jī)一般都使用BIOS引導(dǎo),并且使用磁盤作為存儲(chǔ)介質(zhì),在硬盤的主引導(dǎo)區(qū),需要一個(gè)Bootloader可以從磁盤文件系統(tǒng)中把操作系統(tǒng)引導(dǎo)起來(lái)。③Flash啟動(dòng)方式,Bootloader的入口位于處理器上電執(zhí)行第一條指令的位置,Bootloader引導(dǎo)Linux內(nèi)核,就是要把內(nèi)核映像解壓到RAM中去,然后跳轉(zhuǎn)到內(nèi)核映像入口執(zhí)行,從而實(shí)現(xiàn)自舉啟動(dòng),與磁盤啟動(dòng)相似。4.種類與特點(diǎn):Bootloader種類繁多,比如x86上有LILO、GRUB等;對(duì)于ARM架構(gòu)的CPU,有U-Boot、Vivi等。特點(diǎn):LILO是Linux磁盤引導(dǎo)程序,GRUB是GNU的LILO替代程序;ViVi支持串口下載功能,代碼量??;U-boot通用引導(dǎo)程序,支持串口、網(wǎng)絡(luò)下載功能,代碼量大;Redboot支持串口、網(wǎng)絡(luò)下載功能,代碼量最大;Blob:支持串口、網(wǎng)絡(luò)下載功能,代碼量小5.基本原理:①操作模式:? ②通信:目標(biāo)機(jī)上的Bootloader一般可通過(guò)串口與主機(jī)之間進(jìn)行文件傳輸,也可以通過(guò)以太網(wǎng)連接并借助TFTP協(xié)議來(lái)下載文件,這樣傳輸更快; ③Bootloader 的功能與結(jié)構(gòu):由于Bootloader的實(shí)現(xiàn)依賴于CPU的體系結(jié)構(gòu),大多數(shù)Bootloader都分為stage1和 stage2兩大部分。stage1通常包括以下工作:硬件設(shè)備初始化、為加載Bootloader的stage2準(zhǔn)備RAM空間、拷貝Bootloader的stage2到RAM空間中、設(shè)置堆棧、跳轉(zhuǎn)到stage2的C入口點(diǎn)。stage2的代碼通常用C語(yǔ)言來(lái)實(shí)現(xiàn),stage2 執(zhí)行映像的入口點(diǎn)是用匯編語(yǔ)言寫一段trampoline小程序,用這段trampoline小程序來(lái)作為main()函數(shù)的外部包裹。
補(bǔ)充:1.LCD屏的主要技術(shù)參數(shù):(1)像素:顯示屏上所能控制的最小單位(2)分辨率:分辨率指 LCD 上象素的數(shù)目3)色深:在某一分辨率下,每一個(gè)像點(diǎn)可以有多少種色彩來(lái)描述,單位是“bit”,色深和分辨率之積決定了顯示緩存區(qū)的大?。?)刷新頻率:圖像在屏幕上更新的速度,也即屏幕上的圖像每秒鐘出現(xiàn)的次數(shù),單位是赫茲(5)物理尺寸:LCD的外觀尺寸對(duì)角線長(zhǎng)度,單位為英寸
2.分散裝載技術(shù):ARM的連接器提供了一種分散加載機(jī)制,在連接時(shí)可以根據(jù)分散加載文件中指定的存儲(chǔ)器分配方案,將可執(zhí)行鏡像文件分成指定的分區(qū)并定位于指定的存儲(chǔ)器物理地址,當(dāng)嵌入式系統(tǒng)在復(fù)位或重新上電時(shí),在對(duì)CPU相應(yīng)寄存器進(jìn)行初始化后,首先執(zhí)行ROM存儲(chǔ)器的Bootloader代碼,根據(jù)連接時(shí)的存儲(chǔ)器分配方案,將相應(yīng)代碼和數(shù)據(jù)由加載地址拷貝到運(yùn)行地址,定位在RAM存儲(chǔ)器的代碼和數(shù)據(jù)就在RAM存儲(chǔ)器中運(yùn)行,而不再?gòu)腞OM存儲(chǔ)器中取數(shù)據(jù)或取指令,從而大大提高了CPU的運(yùn)行速率和效率。最常用的2種情況:(1)把中斷程序作為一個(gè)單獨(dú)的運(yùn)行域,放在32位的RAM,(2)將啟動(dòng)代碼以外的所有代碼都復(fù)制到RAM中運(yùn)行。
3.PWM:只對(duì)一方波序列信號(hào)的占空比按照要求進(jìn)行調(diào)制,而不改變方波信號(hào)的其它參數(shù),即不改變幅度和周期,因此脈寬調(diào)制信號(hào)的產(chǎn)生和傳輸,都是數(shù)字式的。只要帶寬足夠(頻率足夠高或周期足夠短),任何模擬信號(hào)都可以使用PWM 來(lái)實(shí)現(xiàn)。應(yīng)用:借助于微處理器,使用脈寬調(diào)制方法實(shí)現(xiàn)模擬信號(hào)是一種非常有效的技術(shù),廣泛應(yīng)用在從測(cè)量、通信到功率控制與變換的許多領(lǐng)域中。
第四篇:嵌入式系統(tǒng)ARM實(shí)驗(yàn)報(bào)告
南京郵電大學(xué)通信與信息工程學(xué)院
實(shí)驗(yàn)報(bào)告
實(shí)驗(yàn)名稱:實(shí)驗(yàn)一基于ADS開(kāi)發(fā)環(huán)境的設(shè)計(jì)
實(shí)驗(yàn)二嵌入式Linux交叉開(kāi)發(fā)環(huán)境的建立 實(shí)驗(yàn)三嵌入式Linux環(huán)境下的程序設(shè)計(jì)
課程名稱嵌入式系統(tǒng)B
班級(jí)學(xué)號(hào)B13010711 姓名馬俊民
開(kāi)課時(shí)間 2015/2016學(xué)年第1學(xué)期
實(shí)驗(yàn)一基于ADS開(kāi)發(fā)環(huán)境的程序設(shè)計(jì)
一、實(shí)驗(yàn)?zāi)康?/p>
1、學(xué)習(xí)ADS開(kāi)發(fā)環(huán)境的使用;
2、學(xué)習(xí)和掌握ADS環(huán)境下的匯編語(yǔ)言及C語(yǔ)言程序設(shè)計(jì);
3、學(xué)習(xí)和掌握匯編語(yǔ)言及C語(yǔ)言的混合編程方法。
二、實(shí)驗(yàn)內(nèi)容
1、編寫和調(diào)試匯編語(yǔ)言程序;
2、編寫和調(diào)試C語(yǔ)言程序;
3、編寫和調(diào)試匯編語(yǔ)言及C語(yǔ)言的混合程序;
4、編寫程序測(cè)試多寄存器傳送指令的用法。
三、實(shí)驗(yàn)原理
ADS全稱為ARM Developer Suite,是ARM公司推出的新一代ARM集成開(kāi)發(fā)工具?,F(xiàn)在常用的ADS版本是ADS1.2,它取代了早期的ADS1.1和ADS1.0。
ADS用于無(wú)操作系統(tǒng)的ARM系統(tǒng)開(kāi)發(fā),是對(duì)裸機(jī)(可理解成一個(gè)高級(jí)單片機(jī))的開(kāi)發(fā)。ADS具有極佳的測(cè)試環(huán)境和良好的偵錯(cuò)功能,它可使硬件開(kāi)發(fā)工作者更深入地從底層去理解ARM處理器的工作原理和操作方法,為日后自行設(shè)計(jì)打基礎(chǔ),為BootLoader的編寫和調(diào)試打基礎(chǔ)。
1.ADS軟件的組成
ADS由命令行開(kāi)發(fā)工具、ARM運(yùn)行時(shí)庫(kù)、GUI開(kāi)發(fā)環(huán)境(CodeWarrior和AXD)、實(shí)用程序、支持軟件等組成。
2.GUI開(kāi)發(fā)環(huán)境
ADS GUI開(kāi)發(fā)環(huán)境包含CodeWarrior和AXD兩種,其中Code Warrior是集成開(kāi)發(fā)工具,而AXD是調(diào)試工具。
使用匯編語(yǔ)言進(jìn)行編程簡(jiǎn)單、方便,適用于初始化硬件代碼、啟動(dòng)代碼等。匯編語(yǔ)言具有一些相同的基本特征:
1.一條指令一行。
2.使用標(biāo)號(hào)(label)給內(nèi)存單元提供名稱,從第一列開(kāi)始書(shū)寫。3.指令必須從第二列或能區(qū)分標(biāo)號(hào)的地方開(kāi)始書(shū)寫。4.注釋必須跟在指定的注釋字符后面,一直書(shū)寫到行尾。
在ARM匯編程序中,每個(gè)段必須以AREA作為段的開(kāi)始,以碰到下一個(gè)AREA作為該段的結(jié)束,段名必須唯一。程序的開(kāi)始和結(jié)束需以ENTRY和END來(lái)標(biāo)識(shí)。嵌入式C語(yǔ)言設(shè)計(jì)是利用基本的C語(yǔ)言知識(shí),面向嵌入式工程實(shí)際應(yīng)用進(jìn)行程序設(shè)計(jì)。為了使單獨(dú)編譯的C語(yǔ)言程序和匯編程序之間能夠相互調(diào)用,必須為子程序之間的調(diào)用規(guī)定一定的規(guī)則。ATPCS就是ARM程序和Thumb程序中子程序調(diào)用的基本規(guī)則。
四、實(shí)驗(yàn)過(guò)程與關(guān)鍵代碼分析
1.創(chuàng)建項(xiàng)目工程
在File菜單中選擇New命令,打開(kāi)一個(gè)新建工程對(duì)話框。在Project選項(xiàng)卡下,選擇ARM Executable Image, 然后在Project name文本框里輸入項(xiàng)目名稱,點(diǎn)擊確定。彈出工程窗口。
選擇File菜單中的New命令,選擇File標(biāo)簽頁(yè),在File name文本框中輸入要?jiǎng)?chuàng)建的文件名。匯編程序以.s結(jié)尾,c程序以.c結(jié)尾。在Location文本框中指定文件的存放位置,選中Add to Project,在Targets中選中DebugRel,單擊確定關(guān)閉窗口。
2.用匯編語(yǔ)言設(shè)計(jì)程序?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 在這個(gè)程序中,我們首先對(duì)R0和R1賦值,將R0作為一個(gè)變量,而R1作為一個(gè)存貯階乘值的寄存器。在每進(jìn)行一次乘法之后,將R0減1。同時(shí)在做完減法后進(jìn)行判斷,如果此時(shí)R0大于1,則返回繼續(xù)乘法,否則結(jié)束程序,輸出結(jié)果。
3.用調(diào)用子程序的方法實(shí)現(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;} 在這個(gè)程序中,主程序由c語(yǔ)言完成作求和,子程序由匯編語(yǔ)言寫成作階乘。
5.實(shí)現(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
五、實(shí)驗(yàn)小結(jié)
在這次實(shí)驗(yàn)中,學(xué)會(huì)了如何使用匯編程序進(jìn)行編程。對(duì)匯編程序編程一些基本的要求有了一定的了解,學(xué)習(xí)了C語(yǔ)言的語(yǔ)法和在其中調(diào)用匯編程序的方法。學(xué)會(huì)了利用CodeWarrior IDE開(kāi)發(fā)C和ARM匯編代碼。學(xué)會(huì)了在AXD中進(jìn)行代碼調(diào)試的方法和過(guò)程,對(duì)AXD的調(diào)試有初步的了解。,實(shí)驗(yàn)二嵌入式Linux交叉開(kāi)發(fā)環(huán)境的建立
一、實(shí)驗(yàn)?zāi)康?/p>
1、掌握嵌入式Linux交叉開(kāi)發(fā)環(huán)境的建立方法
2、學(xué)習(xí)和掌握Linux常用命令
3、學(xué)習(xí)和掌握vi編輯器的使用
二、實(shí)驗(yàn)內(nèi)容
1、搭建嵌入式Linux交叉開(kāi)發(fā)環(huán)境
2、熟悉Linux的常用命令
3、熟悉vi編輯器的常用命令
三、實(shí)驗(yàn)原理
Linux系統(tǒng)是UNIX系統(tǒng)的分支,是UNIX的微機(jī)版。Linux具有異常豐富的驅(qū)動(dòng)程序資源,支持各種主流的硬件設(shè)備與技術(shù)。Linux包含了現(xiàn)代的UNIX操作系統(tǒng)的所有功能特性,這些功能包括多任務(wù)、虛擬內(nèi)存、虛擬文件系統(tǒng)、進(jìn)程間通信、對(duì)稱所處理器、多用戶支持等。
Vi編輯器是所有UNIX和Linux下的標(biāo)準(zhǔn)編輯器。它包含3種工作模式。嵌入式系統(tǒng)是專用的計(jì)算機(jī)系統(tǒng),它對(duì)系統(tǒng)的功能、可靠性、成本、體積、功耗等有嚴(yán)格的要求。大部分嵌入式系統(tǒng)沒(méi)有大容量存儲(chǔ)設(shè)備,一般不能安裝大型開(kāi)發(fā)軟件,系統(tǒng)的開(kāi)發(fā)需要采用交叉開(kāi)發(fā)模式。
四、實(shí)驗(yàn)過(guò)程與關(guān)鍵代碼分析
實(shí)驗(yàn)用的是UP-NetARM2410-S試驗(yàn)箱,里面配有三星的芯片S3c2410X。打開(kāi)電腦上VMWare軟件,在Windows系統(tǒng)下啟動(dòng)虛擬機(jī)里的Linux系統(tǒng)。接著需要
1.宿主機(jī)的環(huán)境搭建
下載并運(yùn)行VMWare,根據(jù)向?qū)?chuàng)建一臺(tái)新虛擬機(jī)并選擇Linux作為客戶操作系統(tǒng),再根據(jù)向?qū)О惭bRedHat Linux 9.0。
2.虛擬機(jī)中啟動(dòng)Linux操作系統(tǒng)
使用root登陸,用戶名為root,密碼為123456。之后對(duì)共享文件設(shè)置進(jìn)行調(diào)整:打開(kāi)settings界面,打開(kāi)shared folders功能,同時(shí)將路徑設(shè)置到有課前下載的軟件的目錄下。
3.開(kāi)發(fā)工具軟件的安裝(1)安裝gcc 打開(kāi)Linux后,打開(kāi)終端窗口,在共享的目錄下找到install.sh并運(yùn)行,命令如下: ls./ install.sh 安裝程序?qū)⒆詣?dòng)建立/arm2410s目錄,并將所有的開(kāi)發(fā)軟件包安裝到/arm2410s 目錄下,同時(shí)自動(dòng)配置編譯環(huán)境,建立合適的符號(hào)鏈接。安裝完成后在目錄/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將被自動(dòng)搜索到
4.宿主機(jī)上的開(kāi)發(fā)環(huán)境配置(1)配置IP地址
ifconfig eth0 192.168.0.121 命令配置了宿主機(jī)的IP地址。然后打開(kāi)網(wǎng)絡(luò)配置窗口,重新探測(cè)MAC地址。重新激活。(2)關(guān)閉防火墻
單擊“Red”菜單→“系統(tǒng)設(shè)置”→“安全級(jí)別”→打開(kāi)“安全級(jí)別配置”窗口,選擇“無(wú)防火墻選項(xiàng)?!保?)配置NFS。
單擊“Red”菜單→“系統(tǒng)設(shè)置”→“服務(wù)器設(shè)置”→“服務(wù)”,在“服務(wù)配置”窗口中勾選nfs,單擊“開(kāi)始”(4)NFS設(shè)置
單擊“Red”菜單→“系統(tǒng)設(shè)置”→“服務(wù)器設(shè)置”→“NFS服務(wù)器”,打開(kāi)“NFS服務(wù)器配置”窗口,設(shè)置NFS共享。
然后在NFS服務(wù)器中增加主機(jī)IP地址的鏈接許可和目錄。完成配置。
5.目標(biāo)機(jī)的信息輸出
Windows系統(tǒng)下,“開(kāi)始”→“所有程序”→“附件”→“通訊”→“超級(jí)終端”,新建一個(gè)通信終端。區(qū)號(hào)、電話號(hào)碼隨意輸入。設(shè)置每秒位數(shù)為“115200”,數(shù)據(jù)位為“8”,無(wú)奇偶校驗(yàn),停止位為“1”,無(wú)數(shù)據(jù)流控制。單擊“確定”。
6.程序的運(yùn)行
打開(kāi)超級(jí)終端,啟動(dòng)Linux,屏幕顯示:
[/mnt/yaffs] 在超級(jí)終端上執(zhí)行掛載命令:
[/mnt] mount –t nfs 192.168.0.121:/arm2410s /mnt/nfs 掛載成功后可執(zhí)行程序。
五、實(shí)驗(yàn)小結(jié)
在這次實(shí)驗(yàn)中,學(xué)會(huì)建立Linux交叉開(kāi)發(fā)環(huán)境,學(xué)會(huì)了ls和vi,cd等常用的Linux命令,并掌握了Vi編輯器的使用方法。同時(shí)知道了如何在搭建失敗時(shí)尋找錯(cuò)誤進(jìn)行排錯(cuò)。
實(shí)驗(yàn)三嵌入式Linux環(huán)境下的程序設(shè)計(jì)
一、實(shí)驗(yàn)?zāi)康?/p>
1、掌握嵌入式Linux環(huán)境下的程序設(shè)計(jì)方法
2、學(xué)會(huì)編寫Makefile文件
二、實(shí)驗(yàn)內(nèi)容
1、熟悉嵌入式教學(xué)實(shí)驗(yàn)箱的使用
2、編寫C程序和Makefile文件
3、編譯程序產(chǎn)生可執(zhí)行程序
4、完成主機(jī)的掛載和程序的執(zhí)行
三、實(shí)驗(yàn)原理
在嵌入式Linux環(huán)境下的程序設(shè)計(jì)方法有一下幾個(gè)步驟:
1.編寫源程序
2.編寫Makefile文件 3.編譯程序
4.運(yùn)行和調(diào)試程序
5.將生產(chǎn)的可執(zhí)行文件加入文件系統(tǒng)。
前三個(gè)步驟在宿主機(jī)上完成,后面的步驟在目標(biāo)機(jī)上完成。
四、實(shí)驗(yàn)過(guò)程與關(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目錄下運(yùn)行“make”來(lái)編譯程序。
make clean
make 編譯成功后,生成可執(zhí)行文件Hello.o。
5.下載調(diào)試
在宿主機(jī)上啟動(dòng)nfs服務(wù),并將/arms2410s設(shè)置為共享目錄。接下來(lái)啟動(dòng)超級(jí)終端,建立通訊,掛載。
[/mnt] mount –t nfs 192.168.0.121:/arm2410s /mnt/nfs 掛載成功后,進(jìn)入/mnt/nfs,再進(jìn)入/mnt/nfs/hello,直接運(yùn)行剛剛編譯生成的可執(zhí)行文件Hello.o,查看運(yùn)行結(jié)果
cd hello./hello 可以看見(jiàn)“Hello world”
只需要掛載一次便可,只要實(shí)驗(yàn)箱沒(méi)有重啟,就可以一直保持連接。反復(fù)修改、編譯、調(diào)試,直至程序調(diào)試通過(guò)。
6.可執(zhí)行文件加入文件系統(tǒng)
程序調(diào)試通過(guò)后,可以把可執(zhí)行文件拖放到usr/bin目錄下,然后使用mkcramfs制作工具生成新的文件系統(tǒng)。當(dāng)系統(tǒng)啟動(dòng)后,就可以在相應(yīng)目錄下執(zhí)行可執(zhí)行程序hello.五、實(shí)驗(yàn)小結(jié) 在這次實(shí)驗(yàn)中,學(xué)會(huì)了在嵌入式Linux環(huán)境下設(shè)計(jì)程序。同時(shí)知道了如何對(duì)目標(biāo)機(jī)進(jìn)行掛載。以及如何在發(fā)現(xiàn)掛載不成功尋找錯(cuò)誤進(jìn)行修改。另外在編譯文件時(shí)需要注意的也都有所了解。
實(shí)驗(yàn)四多線程程序設(shè)計(jì)
一、實(shí)驗(yàn)?zāi)康?、2、二、實(shí)驗(yàn)內(nèi)容1、2、3、4、三、實(shí)驗(yàn)原理
四、實(shí)驗(yàn)過(guò)程與關(guān)鍵代碼分析
五、實(shí)驗(yàn)小結(jié)
3+
第五篇:ARM與嵌入式實(shí)驗(yàn)報(bào)告
ARM與嵌入式技術(shù)
實(shí)驗(yàn)報(bào)告
專業(yè)班級(jí):通信工程
姓名:**** 學(xué)號(hào):******
實(shí)驗(yàn)日期:2012年6月7日 指導(dǎo)老師:*****
一、實(shí)驗(yàn)?zāi)康?/p>
1.學(xué)習(xí)使用Embest IDE開(kāi)發(fā)環(huán)境及ARM 軟件模擬器;
2.掌握簡(jiǎn)單ARM 匯編指令,進(jìn)一步加強(qiáng)對(duì)嵌入式的熟悉和了解。
二、實(shí)驗(yàn)設(shè)備
硬件:PC 機(jī)
軟件:Embest IDE 開(kāi)發(fā)環(huán)境
三、實(shí)驗(yàn)內(nèi)容
例3:實(shí)現(xiàn)64位加法運(yùn)算,要求【R1:R0】+【R3:R2】,結(jié)果放回【R1:R0】中; 例2:編寫程序?qū)2的高8位傳送到R3的低8位(不考慮R3的其它位); 例7:編寫一段程序計(jì)算10?。?/p>
例8:串拷貝(R1指向源數(shù)據(jù)串的首地址,R0指向目的數(shù)據(jù)串的首地址)。
四、實(shí)驗(yàn)步驟
1)新建工程:
運(yùn)行Embest IDE 集成開(kāi)發(fā)環(huán)境,選擇菜單項(xiàng)File → New Workspace,如圖一,系統(tǒng)彈出一個(gè)對(duì)話框,鍵入文件名“沈”,如圖二,點(diǎn)擊OK 按鈕。將創(chuàng)建一個(gè)新工程,并同時(shí)創(chuàng)建一個(gè)與工程名相同的工作區(qū)。此時(shí)在工作區(qū)窗口將打開(kāi)該工作區(qū)和工程.。
2)建立源文件:
點(diǎn)擊菜單項(xiàng)File → New,如圖三,系統(tǒng)彈出一個(gè)新的文本編輯窗,輸入源文件代碼。編輯完后,保存文件“沈.s”后綴,如圖四。
3)添加源文件:
選擇菜單項(xiàng)Project → Add To Project → Files,在工程目錄下選擇剛才建立的源文件.s后綴文件,如圖五,圖六。
4)基本配置:
選擇菜單項(xiàng)Project → Settings,彈出工程設(shè)置對(duì)話框。在工程設(shè)置對(duì)話框中。① 選擇Processor 設(shè)置對(duì)話框,按照?qǐng)D七所示,進(jìn)行配置:
圖七
② 選擇Remote設(shè)置對(duì)話框,按照下圖八所示,進(jìn)行配置:
圖八 ③ 選擇最右邊一個(gè)進(jìn)行編譯,顯示如圖九,則編譯成功。
圖九
④ 選擇Project → Settings → Debug設(shè)置對(duì)話框,按照?qǐng)D十所示,進(jìn)行配置:
圖十 ⑤
選擇
5)選擇菜單項(xiàng)Debug →Remote Connect 進(jìn)行連接軟件仿真器,將存儲(chǔ)器地址改為0x1000,如圖十一,執(zhí)行Debug →Download 命令下載程序,并打開(kāi)寄存器窗口。打開(kāi)memory 窗口,按F10進(jìn)行單步跟蹤,觀察寄存器的數(shù)據(jù)變化并分析。最右邊一個(gè)進(jìn)行編譯,顯示如圖九,則編譯成功。
圖十一
五、各實(shí)驗(yàn)的參考程序及運(yùn)行結(jié)果
實(shí)驗(yàn)一:(例3)實(shí)現(xiàn)64位加法運(yùn)算,要求【R1:R0】+【R3:R2】,結(jié)果放回【R1:R0】中; 1.程序代碼如下:
.global _start
.text _start:
mov R0,#11
/*R0=11*/ mov R1,#22
/*R1=22*/ mov R2,#33
/*R2=33*/ mov R3,#44
/*R3=44*/ ADDS R0,R0,R2
/*R0等于低32位相加,并影響標(biāo)志位*/
ADC R1,R1,R3
/*R1等于高32位相加,并加上低位進(jìn)位*/ stop:
b stop.end
2.分析調(diào)試:
①download下載:
② 讀入數(shù)據(jù):
③ r0+r2→r0(低32位):
④ r1+r3→r1(帶進(jìn)位的加法):
實(shí)驗(yàn)二:(例2)編寫程序?qū)2高8位傳送到R3的低8位(不考慮R3的其它位);
1.程序代碼如下:
.global _start _start: ldr r2,=0x23453401 ldr r3,=0xabcd1200 and r2,r2,#0xff000000 /*保留R2的高8位,屏蔽低24位*/ and r3,r3,#0xffffff00 /*保留R3的高24位,屏蔽低8位*/
orr r3,r3,r2,lsr #24
/*將R2的高8位傳送到R3的低8位*/ stop:
b stop.end
2.分析調(diào)試:
①download下載:
②保留r2的高8位,屏蔽低24位:
③保留r3的高24位,屏蔽低8位:
④將R2的高8位傳送到R3的低8位:
實(shí)驗(yàn)三:(例7)編寫一段程序計(jì)算10!
1.程序代碼如下:
.global _start.text.equ num,10 _start: mov r0,#num mov r1,r0 s1: subs r1,r1,#1
/*把r1-1放入r1*/ mul r0,r1,r0
/*r0*r1放入r0*/ cmp r1,#1
/*比較R1與1的大小*/ beq stop
bne s1 stop: b stop.end
2.分析調(diào)試:
① download下載:
② 第一次執(zhí)行S1,r1=10-1=9,10*9=90,換成16進(jìn)制是5a。
③ 第二次執(zhí)行S1,r1=9-1=8,10*9*8=720,換成16進(jìn)制是2d0。
④ 依次執(zhí)行S1,到r1=1,停止,10*9*8??*1=3628800,換成16進(jìn)制是375f00。
實(shí)驗(yàn)四:(例8)串拷貝(R1指向源數(shù)據(jù)串首地址,R0指向目的數(shù)據(jù)串的首地址)。1.程序代碼如下:.global _start.text.EQU NUM,8 _start:
LDR R0,=srcstr
/*指向源數(shù)據(jù)串R0*/
LDR R1,=dststr
/*指向目標(biāo)數(shù)據(jù)串R1*/
mov R3,#NUM
/*R3=8*/
mov LR,PC
/*返回*/
B strcopy
/*調(diào)用串拷貝子程序*/ stop: b stop
strcopy:
LDRB R2,[R0],#1
/*裝載字節(jié)同時(shí)更新地址*/
STRB R2,[R1],#1
/*存儲(chǔ)字節(jié)同時(shí)更新地址*/
SUBS R3,R3,#1
CMP R3,#0
/*判斷是否結(jié)束*/
BNE strcopy
/*不是,則繼續(xù)*/
MOV PC,LR
/*返回*/.data
srcstr:.long 1,2,3,4,5,6,7,0
/*定義源數(shù)據(jù)串*/
dststr:.long 5,3,2,1,4,6,8,0
/*定義目的字符串*/
2.分析調(diào)試:
①單步跟蹤后的結(jié)果及存儲(chǔ)器的結(jié)果顯示:
②寄存器的結(jié)果顯示:
六、實(shí)驗(yàn)心得
今天在實(shí)驗(yàn)室里,學(xué)習(xí)使用Embest IDE開(kāi)發(fā)環(huán)境及ARM 軟件模擬器,掌握簡(jiǎn)單ARM 匯編指令,進(jìn)一步加強(qiáng)了對(duì)嵌入式的熟悉和了解。鄭老師在兢兢業(yè)業(yè)的向我們傳授實(shí)踐知識(shí)的同時(shí)也向我們提問(wèn)相關(guān)理論問(wèn)題,讓我們?cè)趯W(xué)習(xí)的過(guò)程加深對(duì)實(shí)踐和理論兩者之間的聯(lián)系,知道每一個(gè)步驟的發(fā)生的原因及產(chǎn)生相應(yīng)的結(jié)果,即對(duì)實(shí)驗(yàn)的來(lái)龍去脈有了更清楚的認(rèn)識(shí),為今后的學(xué)習(xí)打下了一定的基礎(chǔ)。相信在接下來(lái)的實(shí)驗(yàn)中,我們會(huì)在鄭老師的引導(dǎo)下,做起實(shí)驗(yàn)來(lái)更能得心應(yīng)手,輕車熟駕!