arm嵌入式期末復習_第1頁
arm嵌入式期末復習_第2頁
arm嵌入式期末復習_第3頁
arm嵌入式期末復習_第4頁
arm嵌入式期末復習_第5頁
已閱讀5頁,還剩41頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

arm嵌入式期末復習第一頁,共46頁。何為嵌入式系統(tǒng)嵌入式系統(tǒng)三要素:嵌入性:嵌入到對象體系中,有對象環(huán)境要求,如物理環(huán)境(小型)、電氣/環(huán)境(可靠)、成本(價廉)等要求。專用性:軟、硬件按對象要求裁減。計算機:實現(xiàn)對象的智能化功能。第二頁,共46頁。專用性強低功耗、高可靠性、高穩(wěn)定性各學科結合的產(chǎn)物實時性要求具有較長的生命周期軟件固化在存儲器芯片中專門開發(fā)工具的支持嵌入式系統(tǒng)的特點第三頁,共46頁。硬件抽象層嵌入式系統(tǒng)組成應用軟件第四頁,共46頁。嵌入式操作系統(tǒng)LinuxRT-LinuxWindowsCEμC/OS-ⅡPalmOSVxWorks等第五頁,共46頁。嵌入式Linux是最為流行的一款開放源代碼的操作系統(tǒng)資源豐富,而且免費內核小、效率高,更新速度快支持多種操作平臺,如ARM、PowerPC、MIPS等提供了強大的應用程序開發(fā)環(huán)境第六頁,共46頁。嵌入式系統(tǒng)的應用嵌入式系統(tǒng)的應用按照市場領域劃分,可以分為以下幾類:消費電子如移動電話,數(shù)碼相機等

通信網(wǎng)絡工業(yè)控制機器人汽車電子軍事國防

醫(yī)療儀器所有的電子設備都屬于嵌入式設備?第七頁,共46頁。RISC和CISC指

標RISCCISC指令集指令長度固定

指令長度不固定尋址方式簡單多種靈活尋址方式寄存器更多通用寄存器用于特定目的的專用寄存器Load/Store結構對內存的訪問只能通過Load/Store指令來實現(xiàn)

處理器能夠直接處理存儲器中的數(shù)據(jù)。CISC將被RISC所取代?第八頁,共46頁。ARM處理器模式ARM微處理器支持7種運行模式,分別為:系統(tǒng)模式(sys)用戶模式(usr)

快速中斷模式(fiq)外部中斷模式(irq)管理模式(svc)數(shù)據(jù)訪問終止模式(abt)

未定義指令中止模式(und)不同的工作模式下,算術運算及邏輯運算等操作所使用的通用寄存器組不同第九頁,共46頁。處理器模式異常模式

未定義(und)

中止(abt)

管理(svc)

中斷(irq)

快中斷(fiq)除了系統(tǒng)和用戶模式外這五種模式稱為異常模式。它們除了可以通過程序切換進入外,也可以由特定的異常進入。每種異常模式都有一些獨立的寄存器,以避免異常退出時用戶模式的狀態(tài)不可靠。第十頁,共46頁。大端存儲和小端存儲大端模式:較高的有效字節(jié)存放在較低的存儲器地址,較低的有效字節(jié)存放在較高的存儲器地址。小端模式:較高的有效字節(jié)存放在較高的存儲器地址,較低的有效字節(jié)存放在較低的存儲器地址。第十一頁,共46頁。通用寄存器通用寄存器用于保存數(shù)據(jù)或地址,可分成未分組寄存器、分組寄存器及程序計數(shù)器三種。未分組寄存器分組寄存器程序計數(shù)器第十二頁,共46頁。R13寄存器在ARM指令中常用作堆棧指針,又稱為SPR14寄存器可用作子程序連接寄存器或鏈接寄存器LR當ARM9處理器執(zhí)行帶鏈接的分支指令BL時,R14中保存R15(程序計數(shù)器PC)的備份。當發(fā)生中斷或異常時,對應的分組寄存器R14_fiq、R14_irq、R14_svc、R14_abt、R14_und用于保存R15的返回值。通用寄存器第十三頁,共46頁。程序狀態(tài)寄存器由于用戶模式和系統(tǒng)模式不屬于異常模式,它們沒有SPSR。在這兩種情況下訪問SPSR,結果是未知的。第十四頁,共46頁。ARM微處理器:程序狀態(tài)寄存器置0表示執(zhí)行32bit的ARM指令置1表示執(zhí)行16bit的Thumb指令NegativeZeroCarryOverflowIRQ中斷的響應:置1:禁止響應置0:允許響應FIQ中斷的響應:置1:禁止響應置0:允許響應條件標志模式控制位ARM/Thumb控制標志中斷標志第十五頁,共46頁。異常的優(yōu)先級當某時刻同時出現(xiàn)多個異常時,ARM處理器按優(yōu)先級的高低順序處理。16第十六頁,共46頁。異常異常名稱對應模式復位管理(svc)未定義指令未定義(und)軟件中斷(SWI)管理(svc)指令預取中止中止(abt)數(shù)據(jù)中止中止(abt)IRQ(中斷)IRQ(irq)FIQ(快速中斷)FIQ(fiq)17第十七頁,共46頁。ARM指令分類及格式數(shù)據(jù)處理指令:數(shù)據(jù)傳輸指令,算術指令,邏輯指令,比較指令,乘法指令,前導零計數(shù)程序狀態(tài)訪問指令:MRS和MSR分支指令:B、BL和BX訪存指令:單數(shù)據(jù)訪存指令,多數(shù)據(jù)訪存指令,數(shù)據(jù)交換指令18第十八頁,共46頁。<opcode>{<cond>}{S}<Rd>,<Rn>{,<operand2>}{<;注釋>}ARM數(shù)據(jù)處理指令cond00XOpcodeSRnRdOperand2011121516192021242527283178條件碼助記符含義標志1000HI無符號數(shù)大于C=1且Z=01001LS無符號數(shù)小于或等于C=0或Z=1第十九頁,共46頁。ARM指令尋址方式尋址方式分類尋址方式:就是處理器根據(jù)指令中給出的地址信息來尋找操作數(shù)物理地址的方式。ARM處理器具有9種基本尋址方式。1.寄存器尋址; 2.立即尋址;3.寄存器移位尋址; 4.寄存器間接尋址;5.基址尋址; 6.多寄存器尋址;7.堆棧尋址; 8.塊拷貝尋址;9.相對尋址。20第二十頁,共46頁。練習指出下述各指令為何種尋址方式:LDR

R0,[R1]

,#4STMIA

R0!,{R1,R2,R3,R4}STR

R0,[R1]BL

NEXTADD

R0,R0,#0x3fMOVR0,R1,LSL5基址變址尋址(后變址)立即(數(shù))尋址寄存器間接尋址寄存器移位尋址相對尋址多寄存器尋址第二十一頁,共46頁。助記符說明操作數(shù)據(jù)傳送Rd←operand2數(shù)據(jù)傳送指令MOV{cond}{S}Rd,operand2MOV指令可完成從另一個寄存器、被移位的寄存器或將一個8位圖立即數(shù)加載到目的寄存器。MOV指令舉例如下:

MOV R1,#0x10 ;R1=0x10

MOV R0,R1 ;R0=R1

MOV R3,R0,LSL#2 ;R3=R0×4

MOV PC,LR ;PC=LR,子程序返回

第二十二頁,共46頁。算術運算指令助記符說明操作加法運算指令Rd←Rn+operand2減法運算指令Rd←Rn-operand2ADD{cond}{S}Rd,Rn,operand2SUB{cond}{S}Rd,Rn,operand2第二十三頁,共46頁。邏輯運算指令助記符說明操作BIC{cond}{S}Rd,Rn,operand2位清除指令Rd←Rn&(~operand2)BICR1,R1,#0x0F;將R1的低4位清零,其它位不變第二十四頁,共46頁。比較指令——CMP指令將寄存器Rn的值減去operand2的值,根據(jù)操作的結果更新CPSR中的相應條件標志位,以便后面的指令根據(jù)相應的條件標志來判斷是否執(zhí)行。應用示例:

CMP R1,#10 ;R1與10比較,設置相關標志位

CMP R1,R2 ;R1與R2比較,設置相關標志位比較指令CMP{cond} Rn,operand2注意:CMP指令與SUBS指令的區(qū)別在于CMP指令不保存運算結果。在進行兩個數(shù)據(jù)的大小判斷時,常用CMP指令及相應的條件碼來操作。第二十五頁,共46頁。

程序狀態(tài)訪問指令cpsr/spsr不是通用寄存器,不能使用mov指令來讀寫。當需要修改cpsr/spsr的內容時,首先要讀取它的值到一個通用寄存器,然后修改某些位,最后將數(shù)據(jù)寫回到狀態(tài)寄存器,即:修改狀態(tài)寄存器一般是通過“讀?。薷模瓕懟亍比齻€步驟的操作來實現(xiàn)。在ARM處理器中,只有mrs指令可以讀取cpsr/spsr;只有msr可以寫cpsr/spsr。助記符說明操作MRS{cond}Rd,psr讀狀態(tài)寄存器指令Rd←psr,psr為CPSR或SPSRMSR{cond}psr_fields,Rd/#immed_8r寫狀態(tài)寄存器指令psr_fields←Rd/#immed_8r,psr為CPSR或SPSR26第二十六頁,共46頁。(1)(2)(3)(4)

應用示例1:;子程序:使能FIQ中斷ENABLE_IRQMRSR0,CPSRBICR0,R0,#0x40MSRCPSR_c,R0MOVPC,LR

應用示例2:;子程序:禁能FIQ中斷DISABLE_IRQMRSR0,CPSRORRR0,R0,#0x40MSRCPSR_c,R0MOVPC,LR

1.將CPSR寄存器內容讀出到R0;2.修改對應于CPSR中的I控制位;3.將修改后的值寫回CPSR寄存器的對應控制域;4.返回上一層函數(shù);程序狀態(tài)寄存器處理指令313029282726…876543210NZCV(保留)IFTM4M3M2M1M0第二十七頁,共46頁。注意:T控制位的修改問題:程序中不能通過MSR指令,直接修改CPSR中的T控制位來實現(xiàn)ARM狀態(tài)/Thumb狀態(tài)的切換,必須使用BX指令完成處理器狀態(tài)的切換。程序狀態(tài)寄存器處理指令28第二十八頁,共46頁。零偏移。如:LDRRd,[Rn]前索引偏移。如:LDRRd,[Rn,#0x04]!后索引偏移。如:LDRRd,[Rn],#0x04LDR和STR——字和無符號字節(jié)加載/存儲指令單寄存器操作指令29第二十九頁,共46頁。LDRR1,[R2,#0x04]!前索引偏移單寄存器操作指令R2=1000H,(1000H)=0x35,(1004H)=0xA2執(zhí)行指令R1?R2?第三十頁,共46頁。分支指令助記符說明操作條件碼位置Blabel分支指令PC←labelB{cond}BLlabel帶鏈接的分支指令LR←PC-4,PC←labelBL{cond}BXRm帶狀態(tài)切換的分支指令PC←label,切換處理器狀態(tài)BX{cond}31第三十一頁,共46頁?!纠?-2】實現(xiàn)1+2+……+N。

NEQU5 ;常量的定義AREAExample,CODE,READONLY ;定義段名屬性等

ENTRY ;程序入口CODE32 ;ARM代碼START ;行標定義LDRR0,=N ;R0賦值MOVR2,R0 ;R2充當計數(shù)器

MOVR0,#0 ;R0←0

MOVR1,#0 ;R1←0LOOP ;行標

CMPR1,R2 ;比較R1R2

BHIADD_END ;如果R1>R2跳轉到

ADD_END ;分支的實現(xiàn)ADDR0,R0,R1 ;R0←R0+R1ADDR1,R1,#1 ;R1←R1+1BLOOP ;無條件跳轉至LOOP ;循環(huán)的實現(xiàn)ADD_END ;行標定義BADD_END ;無條件跳轉ADD_END

END ;代碼結束

ARM匯編語言程序設計舉例

第三十二頁,共46頁。

匯編語言與C語言的混合編程

如果匯編代碼比較簡單,則可以直接利用內嵌匯編的方式進行混合編程;如果匯編代碼比較復雜,則可以將匯編程序和C程序分別以文件的形式加到一個工程里,通過ATPCS標準來完成匯編程序和C程序之間的調用。第三十三頁,共46頁。參數(shù)的傳遞規(guī)則參數(shù)不超過4個時,使用寄存器R0~R3來進行參數(shù)傳遞當參數(shù)超過4個時,可以使用數(shù)據(jù)棧來傳遞參數(shù)。應盡可能使函數(shù)的參數(shù)控制在4個以下ATPCS過程調用規(guī)范第三十四頁,共46頁。NANDFlash和NORFlash比較NORflash:讀速度高,擦寫速度低,容量小,價格高。NAND

flash:讀速度不如Norflash(NAND

flash串行讀寫),擦寫速度高,容量大,價格低。35第三十五頁,共46頁。2023/4/1536DMA傳送過程HOLD和HLDA用于DMA方式請求和響應,DMAC(DMA控制器)是DMA傳送的核心電路。DMA傳送過程如下

I/O接口電路向DMA控制器發(fā)出DMA請求;

DMA控制器向總線仲裁器發(fā)出總線請求;

總線仲裁器向DMA控制器回答總線應答信號;

DMA控制器向I/O接口電路回答DMA應答信號;

DMA傳輸開始,完畢引起中斷。第三十六頁,共46頁。RS-232CRS-232C是由美國電子工業(yè)協(xié)會(EIA)于1969年制定的一種異步串行通信接口標準

EIA標準規(guī)定了RS-232C串口電器規(guī)格,它是一套負邏輯定義:-3V--25V之間的電平表示邏輯“1”;3V-25V之間的電平表示邏輯“0”;第三十七頁,共46頁。ULCONn位描述復位值保留70紅外模式6指示是否使用紅外模式。0:正常操作模式1:紅外接收發(fā)送模式0校驗模式5:3指示UART發(fā)送和接收操作中校驗位的產(chǎn)生和校驗類型。0xx:不進行校驗

100:奇校驗101:偶校驗

110:強制為’1’111:強制為’0’000停止位數(shù)目2指示幀結束的停止位有幾位。0:每幀一位

1:每幀兩位0WordLength1:0指示每幀發(fā)送和接收的數(shù)據(jù)位有多少位。00:5位

01:6位10:7位

11:8位00ULCON:線路控制寄存器規(guī)定傳輸幀的格式第三十八頁,共46頁。波特率產(chǎn)生UBRDIVn位描述UBRDIV15:0波特率分頻系數(shù)UBRDIVn>0UART波特率分頻系數(shù)寄存器(UBRDIV0,UBRDIV1和UBRDIV2):用于計算波特率的大小計算公式如下:

UBRDIVn=(int)(PCLK/(bpsx16))-1

例如:系統(tǒng)時鐘為40MHz,當波特率為11520時,

UBRDIVn=(int)(40000000/(115200x16))-1=(int)(21.7)–1=21-1=20第三十九頁,共46頁。程序、進程程序:是為了完成某種任務而設計的軟件,比如vi是程序。進程:一個進程是一個程序的一次執(zhí)行的過程;

溫馨提示

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

評論

0/150

提交評論