




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
ARM體系結(jié)構(gòu)與編程大連交通大學(xué)軟件學(xué)院嵌入式教研室授課教師:岳洋email:haizhix@163.辦公電話:86223625qq:497998601ARM體系結(jié)構(gòu)與編程---章備份共131頁(yè),您現(xiàn)在瀏覽的是第1頁(yè)!這門課主要講的是什么?ARMAdvancedRISCMachine1、ARM基礎(chǔ)知識(shí)(第1、2章)2、ARM匯編(第3、4、8章)3、ARM存儲(chǔ)系統(tǒng)MMU(第5章)MemoryManagementUnit4、異常中斷處理(第9章)2ARM體系結(jié)構(gòu)與編程---章備份共131頁(yè),您現(xiàn)在瀏覽的是第2頁(yè)!學(xué)習(xí)這門課的目的是什么?3ARM體系結(jié)構(gòu)與編程---章備份共131頁(yè),您現(xiàn)在瀏覽的是第3頁(yè)!幾本書利用互聯(lián)網(wǎng)ADS1.2的幫助文檔onlinebooks4ARM體系結(jié)構(gòu)與編程---章備份共131頁(yè),您現(xiàn)在瀏覽的是第4頁(yè)!嵌入式系統(tǒng)簡(jiǎn)介嵌入式系統(tǒng)的歷史與現(xiàn)狀從1946年電子計(jì)算機(jī)的誕生,發(fā)展到今天在許多場(chǎng)合要求將微型機(jī)嵌入到一個(gè)對(duì)象體系中,實(shí)現(xiàn)對(duì)象體系的智能化控制。為了區(qū)別于通用計(jì)算機(jī)系統(tǒng),把嵌入到對(duì)象體系中,實(shí)現(xiàn)對(duì)象體系智能化控制的計(jì)算機(jī),稱作嵌入式計(jì)算機(jī)系統(tǒng)。5ARM體系結(jié)構(gòu)與編程---章備份共131頁(yè),您現(xiàn)在瀏覽的是第5頁(yè)!2嵌入式系統(tǒng)的定義6ARM體系結(jié)構(gòu)與編程---章備份共131頁(yè),您現(xiàn)在瀏覽的是第6頁(yè)!嵌入式系統(tǒng)組成ESOFTWARE嵌入式軟件嵌入式操作系統(tǒng)處理器(內(nèi)核)ARMMIPSPowerPCSparc—嵌入式微處理器配置硬件補(bǔ)平硬件差異為軟件搭建平臺(tái),如linux、wince提供功能應(yīng)用7ARM體系結(jié)構(gòu)與編程---章備份共131頁(yè),您現(xiàn)在瀏覽的是第7頁(yè)!現(xiàn)實(shí)生活中的嵌入式系統(tǒng)實(shí)例家庭環(huán)境8ARM體系結(jié)構(gòu)與編程---章備份共131頁(yè),您現(xiàn)在瀏覽的是第8頁(yè)!現(xiàn)實(shí)生活中的嵌入式系統(tǒng)實(shí)例工業(yè)自動(dòng)化領(lǐng)域9ARM體系結(jié)構(gòu)與編程---章備份共131頁(yè),您現(xiàn)在瀏覽的是第9頁(yè)!現(xiàn)實(shí)生活中的嵌入式系統(tǒng)實(shí)例交通領(lǐng)域10ARM體系結(jié)構(gòu)與編程---章備份共131頁(yè),您現(xiàn)在瀏覽的是第10頁(yè)!現(xiàn)實(shí)生活中的嵌入式系統(tǒng)實(shí)例醫(yī)療系統(tǒng)11ARM體系結(jié)構(gòu)與編程---章備份共131頁(yè),您現(xiàn)在瀏覽的是第11頁(yè)!第1章目錄8.異常9.復(fù)位10.存儲(chǔ)器及存儲(chǔ)器映射I/O11.尋址方式簡(jiǎn)介12.ARM7指令簡(jiǎn)介13.協(xié)處理器接口14.調(diào)試接口簡(jiǎn)介1.簡(jiǎn)介2.ARM7三級(jí)流水線3.處理器狀態(tài)4.處理器模式5.內(nèi)部寄存器6.程序狀態(tài)寄存器7.體系結(jié)構(gòu)直接支持的數(shù)據(jù)類型12ARM體系結(jié)構(gòu)與編程---章備份共131頁(yè),您現(xiàn)在瀏覽的是第12頁(yè)!1.1ARM簡(jiǎn)介ARM公司簡(jiǎn)介將技術(shù)授權(quán)給芯片廠商形成各具特色的ARM芯片...13ARM體系結(jié)構(gòu)與編程---章備份共131頁(yè),您現(xiàn)在瀏覽的是第13頁(yè)!1.1ARM簡(jiǎn)介一點(diǎn)啟示學(xué)習(xí)ARM核時(shí),涉及具體管腳和功能寄存器的設(shè)置不多。在學(xué)習(xí)51系列單片機(jī)時(shí),能學(xué)會(huì)控制定時(shí)器/計(jì)數(shù)器,學(xué)會(huì)串口的使用,知道每個(gè)引腳的作用。但學(xué)習(xí)ARM核時(shí),還未大范圍涉及這些內(nèi)容。但使用具體芯片就會(huì)用到arm核的知識(shí),來(lái)使用管腳實(shí)現(xiàn)功能。應(yīng)該牢記,學(xué)會(huì)ARM核以后,就大致掌握了所有以ARM為核的單片機(jī)。無(wú)論這個(gè)單片機(jī)結(jié)構(gòu)多么復(fù)雜,功能多么強(qiáng)大,也無(wú)論它來(lái)自哪個(gè)廠家。14ARM體系結(jié)構(gòu)與編程---章備份共131頁(yè),您現(xiàn)在瀏覽的是第14頁(yè)!1、在同一條數(shù)據(jù)處理指令中包含算術(shù)邏輯處理和移位處理。如:ADDR0,R1,R1,LSL#3;R0=R1+R1*82、使用地址自動(dòng)增加(減少)來(lái)優(yōu)化程序中的循環(huán)。如:LDRR0,[R1]#4;先R0[R1],然后自動(dòng)使R1+43、Load/Store指令可以批量傳輸數(shù)據(jù),效率很高。一條指令就可以完成入棧或出棧操作。如:STMFDR13,{R4-R6};將R4-R6的內(nèi)容放入以R13為?;返倪B續(xù)3個(gè)單元中4、所有指令都可以根據(jù)前面指令的執(zhí)行結(jié)果,決定是否執(zhí)行。如:CMPR2,R3;R2與R3相等跳到loop,不等則執(zhí)行MOVR1,R0語(yǔ)句BEQloopMOVR1,R015ARM體系結(jié)構(gòu)與編程---章備份共131頁(yè),您現(xiàn)在瀏覽的是第15頁(yè)!1.1ARM簡(jiǎn)介各ARM體系結(jié)構(gòu)版本——V1該版本的ARM體系結(jié)構(gòu),只有26位的尋址空間,如今現(xiàn)在已經(jīng)廢棄不再使用,沒(méi)有商業(yè)化,其特點(diǎn)為:基本的數(shù)據(jù)處理指令(加,減,與,或,非,比較)(這個(gè)版本不包括乘法);字節(jié)、字和半字加載/存儲(chǔ)指令;具有分支指令,包括在子程序調(diào)用中使用的分支和鏈接指令;在操作系統(tǒng)調(diào)用中使用的軟件中斷指令(SWI)。16ARM體系結(jié)構(gòu)與編程---章備份共131頁(yè),您現(xiàn)在瀏覽的是第16頁(yè)!1.1ARM簡(jiǎn)介各ARM體系結(jié)構(gòu)版本——V3
尋址范圍擴(kuò)展到32位:增加了程序狀態(tài)保護(hù)寄存器SPSR;增加了兩種處理器模式(ARM和THUMB);修改了v3以前用于異常返回指令的功能;教材有更詳細(xì)的介紹17ARM體系結(jié)構(gòu)與編程---章備份共131頁(yè),您現(xiàn)在瀏覽的是第17頁(yè)!1.1ARM簡(jiǎn)介各ARM體系結(jié)構(gòu)版本——V5在V4版本的基礎(chǔ)上,對(duì)現(xiàn)在指令的定義進(jìn)行了必要的修正,對(duì)V4版本的體系結(jié)構(gòu)進(jìn)行了擴(kuò)展并增加了指令,具體如下:改進(jìn)了ARM/Thumb狀態(tài)之間的切換效率;允許T變種(支持Thumb指令集)和非T變種一樣,使用相同的代碼生成技術(shù);增加前導(dǎo)零計(jì)數(shù)(最高有效位前0的個(gè)數(shù))指令CLZ和軟件斷點(diǎn)指令BKPT;對(duì)乘法指令如何設(shè)置標(biāo)志作了嚴(yán)格的定義。18ARM體系結(jié)構(gòu)與編程---章備份共131頁(yè),您現(xiàn)在瀏覽的是第18頁(yè)!1.1ARM簡(jiǎn)介ARM處理器核簡(jiǎn)介ARM公司開發(fā)了很多系列的ARM處理器核,目前最新的系列已經(jīng)是ARM11了,而ARM6核以及更早的系列已經(jīng)很罕見(jiàn)了。目前應(yīng)用比較廣泛的系列是:ARM7ARM9ARM9EARM10SecurCoreXscaleStrongARMARM11E19ARM體系結(jié)構(gòu)與編程---章備份共131頁(yè),您現(xiàn)在瀏覽的是第19頁(yè)!1.1ARM簡(jiǎn)介ARM處理器核簡(jiǎn)介——ARM7特點(diǎn)低功耗0.9MIPS/MHz(mips指每秒百萬(wàn)條指令)的3級(jí)流水線結(jié)構(gòu)32位ARM指令集和16位的Thumb指令集主頻最高可達(dá)130MIPS典型芯片ATMEL公司AT91M40800/55800A;Samsung公司的S3C44B0/4510B20ARM體系結(jié)構(gòu)與編程---章備份共131頁(yè),您現(xiàn)在瀏覽的是第20頁(yè)!1.2ARM7TDMI簡(jiǎn)介ARM7TDMI支持32位尋址范圍,使用了馮·諾依曼(VonNeumann)結(jié)構(gòu),指令和數(shù)據(jù)共用一條32位總線。
ARM7TDMI的后綴意義為:支持高密度16位的Thumb指令集;支持片上調(diào)試;支持64位乘法;支持EmbededICE(調(diào)試接口)觀察硬件;ARM7TDMI21ARM體系結(jié)構(gòu)與編程---章備份共131頁(yè),您現(xiàn)在瀏覽的是第21頁(yè)!1.1MIPS/MHz的哈佛結(jié)構(gòu)(見(jiàn)備注),5級(jí)流水線32位ARM指令集和16位Thumb指令集全性能的MMU(存儲(chǔ)器管理單元),支持WindowsCE、Linux、PalmOS等多種主流嵌入式操作系統(tǒng)支持?jǐn)?shù)據(jù)Cache和指令Cache,具有更高的指令和數(shù)據(jù)處理能力1.1ARM簡(jiǎn)介ARM處理器核簡(jiǎn)介——ARM9特點(diǎn)
典型芯片
ATMEL公司AT91RM9200;
Samsung公司的S3C2410
22ARM體系結(jié)構(gòu)與編程---章備份共131頁(yè),您現(xiàn)在瀏覽的是第22頁(yè)!支持DSP指令集,適合于需要高速數(shù)字信號(hào)處理的場(chǎng)合。6級(jí)流水線,指令執(zhí)行效率更高。支持32位ARM指令集和16位Thumb指令集。支持64位的高速AMBA總線接口。支持VFP10浮點(diǎn)處理協(xié)處理器。全性能的MMU,支持WindowsCE、Linux、PalmOS等多種主流嵌入式操作系統(tǒng)。支持?jǐn)?shù)據(jù)Cache和指令Cache,具有更高的指令和數(shù)據(jù)處理能力主頻最高可達(dá)400MIPS。內(nèi)嵌并行讀/寫操作部件。1.1ARM簡(jiǎn)介ARM處理器核簡(jiǎn)介——ARM10特點(diǎn)23ARM體系結(jié)構(gòu)與編程---章備份共131頁(yè),您現(xiàn)在瀏覽的是第23頁(yè)!1.1ARM簡(jiǎn)介ARM處理器核簡(jiǎn)介——SecurCore該系列處理器主要針對(duì)新興的安全市場(chǎng),以一種全新的安全處理器設(shè)計(jì)為智能卡和其它安全I(xiàn)C(集成電路)開發(fā)提供獨(dú)特的32位系統(tǒng)設(shè)計(jì),并具有特定反偽造方法,從而有助于防止對(duì)硬件和軟件的盜版。24ARM體系結(jié)構(gòu)與編程---章備份共131頁(yè),您現(xiàn)在瀏覽的是第24頁(yè)!Xscale蘋果iPhone手機(jī)25ARM體系結(jié)構(gòu)與編程---章備份共131頁(yè),您現(xiàn)在瀏覽的是第25頁(yè)!第1章目錄8.異常9.復(fù)位10.存儲(chǔ)器及存儲(chǔ)器映射I/O11.尋址方式簡(jiǎn)介12.ARM7指令簡(jiǎn)介13.協(xié)處理器接口14.調(diào)試接口簡(jiǎn)介1.簡(jiǎn)介2.ARM7三級(jí)流水線3.處理器狀態(tài)4.處理器模式5.內(nèi)部寄存器6.程序狀態(tài)寄存器7.體系結(jié)構(gòu)直接支持的數(shù)據(jù)類型26ARM體系結(jié)構(gòu)與編程---章備份共131頁(yè),您現(xiàn)在瀏覽的是第26頁(yè)!取指譯碼執(zhí)行從程序存儲(chǔ)器中取出指令送到處理器內(nèi)核指令譯碼(指明處理器的操作)執(zhí)行這些操作取指譯碼執(zhí)行取指譯碼執(zhí)行取指譯碼執(zhí)行t指令指令1指令2指令33級(jí)流水線功能段劃分PC為某個(gè)正在取址指令所在的地址,確切地說(shuō)是該指令最低字節(jié)的地址。PC指針?PC-8指令1指令2指令3PC指針-->取指譯碼執(zhí)行PC-4PC-4-->PC-8-->高地址低地址27ARM體系結(jié)構(gòu)與編程---章備份共131頁(yè),您現(xiàn)在瀏覽的是第27頁(yè)!第1章目錄1.簡(jiǎn)介2.ARM7三級(jí)流水線3.處理器狀態(tài)4.處理器模式5.內(nèi)部寄存器6.程序狀態(tài)寄存器7.體系結(jié)構(gòu)直接支持的數(shù)據(jù)類型8.異常9.復(fù)位10.存儲(chǔ)器及存儲(chǔ)器映射I/O11.尋址方式簡(jiǎn)介12.ARM7指令簡(jiǎn)介13.協(xié)處理器接口14.調(diào)試接口簡(jiǎn)介28ARM體系結(jié)構(gòu)與編程---章備份共131頁(yè),您現(xiàn)在瀏覽的是第28頁(yè)!第1章目錄8.異常9.復(fù)位10.存儲(chǔ)器及存儲(chǔ)器映射I/O11.尋址方式簡(jiǎn)介12.ARM7指令簡(jiǎn)介13.協(xié)處理器接口14.調(diào)試接口簡(jiǎn)介1.簡(jiǎn)介2.ARM7三級(jí)流水線3.處理器狀態(tài)4.處理器模式5.內(nèi)部寄存器6.程序狀態(tài)寄存器7.體系結(jié)構(gòu)直接支持的數(shù)據(jù)類型29ARM體系結(jié)構(gòu)與編程---章備份共131頁(yè),您現(xiàn)在瀏覽的是第29頁(yè)!處理器模式說(shuō)明備注用戶(usr)user正常程序工作模式不能直接切換到其它模式系統(tǒng)(sys)system用于支持操作系統(tǒng)與用戶模式類似,但具有可以直接切換到其它模式等特權(quán)快速中斷(fiq)fastinterruptrequest支持高速數(shù)據(jù)傳輸及通道處理FIQ異常響應(yīng)時(shí)(引腳低電平有效)進(jìn)入此模式中斷(irq)interruptrequest用于通用中斷處理引腳低電平有效,IRQ異常響應(yīng)時(shí)進(jìn)入此模式管理(svc)supervisor操作系統(tǒng)使用的保護(hù)模式(復(fù)位后執(zhí)行bootloader,可以設(shè)置引導(dǎo)某個(gè)操作系統(tǒng))系統(tǒng)復(fù)位和軟件中斷(執(zhí)行SWI指令)響應(yīng)時(shí)進(jìn)入此模式數(shù)據(jù)訪問(wèn)中止(abt)abort用于支持虛擬存儲(chǔ)或存儲(chǔ)器保護(hù)當(dāng)存取異常時(shí)進(jìn)入此模式未定義(und)undefined支持軟件仿真硬件的協(xié)處理器執(zhí)行未定義指令時(shí),會(huì)將該指令送到協(xié)處理器,如果協(xié)處理器都處理不了該指令,就產(chǎn)生未定義指令異常中斷,進(jìn)入此模式1.4處理器模式30ARM體系結(jié)構(gòu)與編程---章備份共131頁(yè),您現(xiàn)在瀏覽的是第30頁(yè)!1.4處理器模式異常模式處理器模式說(shuō)明備注用戶(usr)正常程序工作模式不能直接切換到其它模式系統(tǒng)(sys)用于支持操作系統(tǒng)的特權(quán)任務(wù)等與用戶模式類似,但具有可以直接切換到其它模式等特權(quán)快中斷(fiq)支持高速數(shù)據(jù)傳輸及通道處理FIQ異常響應(yīng)時(shí)進(jìn)入此模式中斷(irq)用于通用中斷處理IRQ異常響應(yīng)時(shí)進(jìn)入此模式管理(svc)操作系統(tǒng)保護(hù)代碼系統(tǒng)復(fù)位和軟件中斷響應(yīng)時(shí)進(jìn)入此模式中止(abt)用于支持虛擬內(nèi)存和/或存儲(chǔ)器保護(hù)在ARM7TDMI沒(méi)有大用處未定義(und)支持硬件協(xié)處理器的軟件仿真未定義指令異常響應(yīng)時(shí)進(jìn)入此模式未定義(und)中止(abt)管理(svc)中斷(irq)快中斷(fiq)這五種模式稱為異常模式。它們除了可以通過(guò)程序(修改CPSR)切換進(jìn)入外,也可以由特定的異常進(jìn)入。當(dāng)特定的異常出現(xiàn)時(shí),處理器進(jìn)入相應(yīng)的模式。每種異常模式都有一些獨(dú)立的寄存器,供異常處理使用。31ARM體系結(jié)構(gòu)與編程---章備份共131頁(yè),您現(xiàn)在瀏覽的是第31頁(yè)!第3章目錄8.異常9.復(fù)位10.存儲(chǔ)器及存儲(chǔ)器映射I/O11.尋址方式簡(jiǎn)介12.ARM7指令簡(jiǎn)介13.協(xié)處理器接口14.調(diào)試接口簡(jiǎn)介1.簡(jiǎn)介2.ARM7三級(jí)流水線3.處理器狀態(tài)4.處理器模式5.內(nèi)部寄存器6.程序狀態(tài)寄存器7.體系結(jié)構(gòu)直接支持的數(shù)據(jù)類型32ARM體系結(jié)構(gòu)與編程---章備份共131頁(yè),您現(xiàn)在瀏覽的是第32頁(yè)!寄存器類別寄存器在匯編中的名稱各模式下實(shí)際訪問(wèn)的寄存器用戶系統(tǒng)管理中止未定義中斷快中斷通用寄存器和程序計(jì)數(shù)器R0(a1)R0R1(a2)R1R2(a3)R2R3(a4)R3R4(v1)R4R5(v2)R5R6(v3)R6R7(v4)R7R8(v5)R8R8_fiqR9(SB,v6)R9R9_fiqR10(SL,v7)R10R10_fiqR11(FP,v8)R11R11_fiqR12(IP)R12R12_fiqR13(SP)StackPointerR13R13_svcR13_abtR13_undR13_irqR13_fiqR14(LR)LinkRegisterR14R14_svcR14_abtR14_undR14_irqR14_fiqR15(PC)ProgramCounterR15狀態(tài)寄存器CPSRCurrentProgramStatusRegisterCPSRSPSRSavedProgramStatusRegister無(wú)SPSR_abtSPSR_abtSPSR_undSPSR_irqSPSR_fiq33ARM體系結(jié)構(gòu)與編程---章備份共131頁(yè),您現(xiàn)在瀏覽的是第33頁(yè)!寄存器類別寄存器在匯編中的名稱各模式下實(shí)際訪問(wèn)的寄存器用戶系統(tǒng)管理中止未定義中斷快中斷通用寄存器和程序計(jì)數(shù)器R0(a1)R0R1(a2)R1R2(a3)R2R3(a4)R3R4(v1)R4R5(v2)R5R6(v3)R6R7(v4)R7R8(v5)R8R8_fiqR9(SB,v6)R9R9_fiqR10(SL,v7)R10R10_fiqR11(FP,v8)R11R11_fiqR12(IP)R12R12_fiqR13(SP)R13R13_svcR13_abtR13_undR13_irqR13_fiqR14(LR)R14R14_svcR14_abtR14_undR14_irqR14_fiqR15(PC)R15狀態(tài)寄存器CPSRCPSRSPSR無(wú)SPSR_svcSPSR_abtSPSR_undSPSR_irqSPSR_fiq無(wú)CPSRR15R14R13R12R11R10R9R8R7R6R5R4R3R2R1R0用戶無(wú)CPSRR15R14R13R12R11R10R9R8R7R6R5R4R3R2R1R0系統(tǒng)SPSR_svcCPSRR15R14_svcR13_svcR12R11R10R9R8R7R6R5R4R3R2R1R0管理SPSR_abtCPSRR15R14_abtR13_abtR12R11R10R9R8R7R6R5R4R3R2R1R0中止SPSR_undCPSRR15R14_undR13_undR12R11R10R9R8R7R6R5R4R3R2R1R0未定義SPSR_irqCPSRR15R14_irqR13_irqR12R11R10R9R8R7R6R5R4R3R2R1R0中斷SPSR_fiqCPSRR15R14_fiqR13_fiqR12_fiqR11_fiqR10_fiqR9_fiqR8_fiqR7R6R5R4R3R2R1R0快中斷ARM狀態(tài)各模式下可以訪問(wèn)的寄存器34ARM體系結(jié)構(gòu)與編程---章備份共131頁(yè),您現(xiàn)在瀏覽的是第34頁(yè)!寄存器類別寄存器在匯編中的名稱各模式下實(shí)際訪問(wèn)的寄存器用戶系統(tǒng)管理中止未定義中斷快中斷通用寄存器和程序計(jì)數(shù)器R0(a1)R0R1(a2)R1R2(a3)R2R3(a4)R3R4(v1)R4R5(v2)R5R6(v3)R6R7(v4)R7R8(v5)R8R8_fiqR9(SB,v6)R9R9_fiqR10(SL,v7)R10R10_fiqR11(FP,v8)R11R11_fiqR12(IP)R12R12_fiqR13(SP)R13R13_svcR13_abtR13_undR13_irqR13_fiqR14(LR)R14R14_svcR14_abtR14_undR14_irqR14_fiqR15(PC)R15狀態(tài)寄存器CPSRCPSRSPSR無(wú)SPSR_svcSPSR_abtSPSR_undSPSR_irqSPSR_fiq一般的通用寄存器R13_fiqR13_irqR13_undR13_abtR13_svcR13R12_fiqR12R11_fiqR11R10_fiqR10R9_fiqR9R8_fiqR8R7R6R5R4R3R2R1R0R7R6R5R4R3R2R1R0其中R0~R7為未分組(未備份)的寄存器,對(duì)于任何處理器模式,都使用相同的同一組物理寄存器。35ARM體系結(jié)構(gòu)與編程---章備份共131頁(yè),您現(xiàn)在瀏覽的是第35頁(yè)!寄存器類別寄存器在匯編中的名稱各模式下實(shí)際訪問(wèn)的寄存器用戶系統(tǒng)管理中止未定義中斷快中斷通用寄存器和程序計(jì)數(shù)器R0(a1)R0R1(a2)R1R2(a3)R2R3(a4)R3R4(v1)R4R5(v2)R5R6(v3)R6R7(v4)R7R8(v5)R8R8_fiqR9(SB,v6)R9R9_fiqR10(SL,v7)R10R10_fiqR11(FP,v8)R11R11_fiqR12(IP)R12R12_fiqR13(SP)R13R13_svcR13_abtR13_undR13_irqR13_fiqR14(LR)R14R14_svcR14_abtR14_undR14_irqR14_fiqR15(PC)R15狀態(tài)寄存器CPSRCPSRSPSR無(wú)SPSR_svcSPSR_abtSPSR_undSPSR_irqSPSR_fiq一般的通用寄存器R12_fiqR12R11_fiqR11R10_fiqR10R9_fiqR9R8_fiqR8
寄存器R8~R12有兩個(gè)分組的物理寄存器。一個(gè)用于除FIQ模式之外的所有模式,另一個(gè)用于FIQ模式。這樣在發(fā)生FIQ中斷后,可以不必執(zhí)行保存和恢復(fù)(R8-R12)的指令,從而加速FIQ的處理速度。36ARM體系結(jié)構(gòu)與編程---章備份共131頁(yè),您現(xiàn)在瀏覽的是第36頁(yè)!寄存器類別寄存器在匯編中的名稱各模式下實(shí)際訪問(wèn)的寄存器用戶系統(tǒng)管理中止未定義中斷快中斷通用寄存器和程序計(jì)數(shù)器R0(a1)R0R1(a2)R1R2(a3)R2R3(a4)R3R4(v1)R4R5(v2)R5R6(v3)R6R7(v4)R7R8(v5)R8R8_fiqR9(SB,v6)R9R9_fiqR10(SL,v7)R10R10_fiqR11(FP,v8)R11R11_fiqR12(IP)R12R12_fiqR13(SP)R13R13_svcR13_abtR13_undR13_irqR13_fiqR14(LR)R14R14_svcR14_abtR14_undR14_irqR14_fiqR15(PC)R15狀態(tài)寄存器CPSRCPSRSPSR無(wú)SPSR_svcSPSR_abtSPSR_undSPSR_irqSPSR_fiq堆棧指針寄存器R13(SP)寄存器R13常作為堆棧指針(SPStackPointer)。在ARM指令集當(dāng)中,使用R13作為棧指針,只是習(xí)慣的用法。但是在Thumb指令集中存在指令強(qiáng)制地使用R13作為堆棧指針。37ARM體系結(jié)構(gòu)與編程---章備份共131頁(yè),您現(xiàn)在瀏覽的是第37頁(yè)!寄存器類別寄存器在匯編中的名稱各模式下實(shí)際訪問(wèn)的寄存器用戶系統(tǒng)管理中止未定義中斷快中斷通用寄存器和程序計(jì)數(shù)器R0(a1)R0R1(a2)R1R2(a3)R2R3(a4)R3R4(v1)R4R5(v2)R5R6(v3)R6R7(v4)R7R8(v5)R8R8_fiqR9(SB,v6)R9R9_fiqR10(SL,v7)R10R10_fiqR11(FP,v8)R11R11_fiqR12(IP)R12R12_fiqR13(SP)R13R13_svcR13_abtR13_undR13_irqR13_fiqR14(LR)R14R14_svcR14_abtR14_undR14_irqR14_fiqR15(PC)R15狀態(tài)寄存器CPSRCPSRSPSR無(wú)SPSR_svcSPSR_abtSPSR_undSPSR_irqSPSR_fiq鏈接寄存器R14(LR)R14為鏈接寄存器(LRLinkRegister),有兩個(gè)功能:每一種模式自己的R14中存放當(dāng)前子程序返回地址;當(dāng)發(fā)生異常中斷時(shí),該模式的R14存放異常中斷的返回地址。38ARM體系結(jié)構(gòu)與編程---章備份共131頁(yè),您現(xiàn)在瀏覽的是第38頁(yè)!1.5內(nèi)部寄存器R14寄存器引申在出現(xiàn)子程序的嵌套(BL、BLX)或中斷的嵌套時(shí),R14保存的是最后一次調(diào)用的返回地址。39ARM體系結(jié)構(gòu)與編程---章備份共131頁(yè),您現(xiàn)在瀏覽的是第39頁(yè)!1.5內(nèi)部寄存器R14寄存器注意要點(diǎn)R14R14_irq用戶模式下的程序第一次IRQ的程序AaB...XA返回用戶模式地址1.執(zhí)行用戶模式下的程序;2.發(fā)生IRQ中斷,硬件將某個(gè)地址存入IRQ模式下的R14_irq寄存器,用戶模式下的R14沒(méi)有被破壞;3.IRQ服務(wù)程序A執(zhí)行完畢,將R14_irq寄存器的內(nèi)容減去某個(gè)常量后存入PC,返回之前被中斷的程序;未被破壞第二次IRQ程序BareturnB...XA返回到次IRQ4.如果在次IRQ處理程序中,再次發(fā)生第二次IRQ中斷(或調(diào)用子程序);5.硬件將返回次irq的地址保存在R14_irq寄存器中,原來(lái)保存的返回用戶模式的地址將被覆蓋;被破壞6.這樣,在程序B返回到程序A,程序A將不能正確返回到用戶模式returnreturn解決辦法:在發(fā)生第二次irq中斷時(shí),將R14_irq保存到某個(gè)寄存器,(如R1,保存返回用戶模式的地址);在程序A返回時(shí),使用movpc,r140ARM體系結(jié)構(gòu)與編程---章備份共131頁(yè),您現(xiàn)在瀏覽的是第40頁(yè)!1.5內(nèi)部寄存器寫R15正常操作時(shí),寫入R15(PC)的值被當(dāng)作一個(gè)指令地址,程序從這個(gè)地址處繼續(xù)執(zhí)行(相當(dāng)于執(zhí)行一次無(wú)條件跳轉(zhuǎn))。LDRPC,=START ;跳轉(zhuǎn)到START地址標(biāo)號(hào)的指令處MOVPC,LR ;跳轉(zhuǎn)到LR指向的位置
41ARM體系結(jié)構(gòu)與編程---章備份共131頁(yè),您現(xiàn)在瀏覽的是第41頁(yè)!SUB R1,PC,#4 ;R1下面STR指令的地址STR PC,[R0] ;將STR指令(當(dāng)前指令)地址+偏移量(8 ;或12)放入R0指向的地址單元,LDR R0,[R0] ;把STR指令地址+偏移量的值放入R0SUB R0,R0,R1 ;計(jì)算偏移量R0=R0-R1結(jié)合教材p14頁(yè)1.5內(nèi)部寄存器讀R15的限制計(jì)算具體芯片偏移量程序代碼:R15(PC)的值是處理器正在取指指令的地址,即當(dāng)前正在執(zhí)行指令的地址加上842ARM體系結(jié)構(gòu)與編程---章備份共131頁(yè),您現(xiàn)在瀏覽的是第42頁(yè)!第3章目錄8.異常9.復(fù)位10.存儲(chǔ)器及存儲(chǔ)器映射I/O11.尋址方式簡(jiǎn)介12.ARM7指令簡(jiǎn)介13.協(xié)處理器接口14.調(diào)試接口簡(jiǎn)介1.簡(jiǎn)介2.ARM7三級(jí)流水線3.處理器狀態(tài)4.處理器模式5.內(nèi)部寄存器6.
程序狀態(tài)寄存器7.體系結(jié)構(gòu)直接支持的數(shù)據(jù)類型43ARM體系結(jié)構(gòu)與編程---章備份共131頁(yè),您現(xiàn)在瀏覽的是第43頁(yè)!1.6程序狀態(tài)寄存器簡(jiǎn)介ARM內(nèi)核包含1個(gè)CPSR和5個(gè)供異常處理程序使用的SPSR。CPSR反映了當(dāng)前處理器的狀態(tài),其包含:4個(gè)條件代碼標(biāo)志(符號(hào)(N)、零(Z)、進(jìn)位(C)和溢出(V));2個(gè)中斷禁止位(F/I),分別控制一種類型的中斷;5個(gè)對(duì)當(dāng)前處理器模式進(jìn)行編碼的位M[4:0];1個(gè)用于指示當(dāng)前執(zhí)行指令(ARM還是Thumb)的T位。44ARM體系結(jié)構(gòu)與編程---章備份共131頁(yè),您現(xiàn)在瀏覽的是第44頁(yè)!1.6程序狀態(tài)寄存器條件代碼標(biāo)志各標(biāo)志位的含義如下:N(Negative)正、負(fù)標(biāo)志,運(yùn)算結(jié)果的最高位bit[31]反映在該標(biāo)志位。結(jié)果為負(fù)數(shù)時(shí)N=1,結(jié)果為正數(shù)或零時(shí)N=0;Z(Zero)零標(biāo)志,指令執(zhí)行結(jié)果為0時(shí)Z=1(通常表示比較結(jié)果“相等”),否則Z=0;C(Carry)進(jìn)、借位標(biāo)志,當(dāng)進(jìn)行加法運(yùn)算并且最高位產(chǎn)生進(jìn)位時(shí)C=1,否則C=0。當(dāng)進(jìn)行減法運(yùn)算并且最高位產(chǎn)生借位時(shí)C=0,否則C=1。對(duì)于結(jié)合移位操作的非加法/減法指令(指單純的移位操作時(shí)),C為從最高位最后移出的值,其它指令C通常不變;V(oVerflow)
當(dāng)進(jìn)行加法/減法運(yùn)算,并且發(fā)生有符號(hào)溢出時(shí)V=1,否則V=0,其它指令V通常不變。45ARM體系結(jié)構(gòu)與編程---章備份共131頁(yè),您現(xiàn)在瀏覽的是第45頁(yè)!1.6程序狀態(tài)寄存器控制位中斷禁止位包括I和F位:當(dāng)I位置位時(shí),IRQ中斷被禁止;當(dāng)F位置位時(shí),F(xiàn)IQ中斷被禁止。V4以及更高版本的T體系列T位反映了正在操作的狀態(tài):當(dāng)T位置位時(shí),處理器正在Thumb狀態(tài)下運(yùn)行;當(dāng)T位清零時(shí),處理器正在ARM狀態(tài)下運(yùn)行。V5以及更高的版本非T系列,見(jiàn)教材16頁(yè)模式位包括M4、M3、M2、M1和M0,在特權(quán)模式下(除用戶模式),可以設(shè)置CPSR中的這些位進(jìn)行模式切換。M[4:0]模式0b10000用戶0b10001FIQ0b10010IRQ0b10011管理0b10111中止0b11011未定義0b11111系統(tǒng)46ARM體系結(jié)構(gòu)與編程---章備份共131頁(yè),您現(xiàn)在瀏覽的是第46頁(yè)!1.6程序狀態(tài)寄存器CPSR中的其他位(保留位)CPSR中的保留位被保留將來(lái)使用。為了提高程序的可移植性,當(dāng)改變CPSR標(biāo)志和控制位時(shí),請(qǐng)不要改變這些保留位。另外,請(qǐng)確保您程序的運(yùn)行不受保留位的值影響,因?yàn)閷?lái)的處理器可能會(huì)將這些位設(shè)置為1或者0。47ARM體系結(jié)構(gòu)與編程---章備份共131頁(yè),您現(xiàn)在瀏覽的是第47頁(yè)!1.7體系結(jié)構(gòu)直接支持的數(shù)據(jù)類型字、半字、字節(jié)ARM處理器支持下列數(shù)據(jù)類型:字節(jié)(Byte)8位半字(Half-Word)16位=2個(gè)字節(jié)字(Word)32位=4個(gè)字節(jié)1112342字對(duì)齊:四字節(jié)對(duì)齊(為4的倍數(shù),如0bXX…XX100與0bXX…XX000是字對(duì)齊)半字對(duì)齊:兩字節(jié)對(duì)齊(為2的倍數(shù),如0bXX…XX10與0bXX…XX00是半字對(duì)齊)48ARM體系結(jié)構(gòu)與編程---章備份共131頁(yè),您現(xiàn)在瀏覽的是第48頁(yè)!ARM體系結(jié)構(gòu)的存儲(chǔ)器格式(1)ARM體系結(jié)構(gòu)所支持的最大尋址空間為4GB(232字節(jié))
大端格式(BigEndian)字?jǐn)?shù)據(jù)的高字節(jié)存儲(chǔ)在低地址中,而字?jǐn)?shù)據(jù)的低字節(jié)則存放在高地址中。
小端格式(LittleEndian)低地址中存放的是字?jǐn)?shù)據(jù)的低位,高位存放的是字?jǐn)?shù)據(jù)的高字節(jié)。ARM缺省設(shè)置是小端格式1.7體系結(jié)構(gòu)直接支持的數(shù)據(jù)類型49ARM體系結(jié)構(gòu)與編程---章備份共131頁(yè),您現(xiàn)在瀏覽的是第49頁(yè)!ARM體系結(jié)構(gòu)的存儲(chǔ)器格式(3)r0=0x11223344STRr0,[r1]LDRBr2,[r1]r1=0x100Memory32100123ByteLane312423161587011223344312423161587044332211312423161587011223344312423161587000000044312423161587000000011LittleendianBigendianr2=0x44r2=0x11存儲(chǔ)字?jǐn)?shù)據(jù)加載字節(jié)數(shù)據(jù)r1=0x100r1=0x10050ARM體系結(jié)構(gòu)與編程---章備份共131頁(yè),您現(xiàn)在瀏覽的是第50頁(yè)!1.8異常簡(jiǎn)介只要正常的程序流被暫時(shí)中止,處理器就進(jìn)入異常模式。例如響應(yīng)一個(gè)來(lái)自外設(shè)的中斷。在處理異常之前,ARM內(nèi)核保存當(dāng)前的處理器狀態(tài)CPSR(這樣當(dāng)處理程序結(jié)束時(shí),可以恢復(fù)執(zhí)行原來(lái)的程序),然后轉(zhuǎn)去處理異常。如果同時(shí)發(fā)生兩個(gè)或更多異常,那么將按中斷優(yōu)先級(jí)的順序來(lái)處理異常。51ARM體系結(jié)構(gòu)與編程---章備份共131頁(yè),您現(xiàn)在瀏覽的是第51頁(yè)!1.8異常 當(dāng)處理器的快速中斷請(qǐng)求引腳有效,且CPSR中的F位為0(允許fiq)時(shí),產(chǎn)生FIQ異常。FIQ(快速中斷請(qǐng)求) 當(dāng)處理器的外部中斷請(qǐng)求引腳有效,且CPSR中的I位為0(允許irq)時(shí),產(chǎn)生IRQ異常。系統(tǒng)的外設(shè)可通過(guò)該異常請(qǐng)求中斷服務(wù)。IRQ(外部中斷請(qǐng)求) 若處理器數(shù)據(jù)訪問(wèn)指令的地址不存在,或該地址不允許當(dāng)前指令訪問(wèn)時(shí),產(chǎn)生數(shù)據(jù)中止異常。數(shù)據(jù)中止 若處理器預(yù)取指令的地址不存在,或該地址不允許當(dāng)前指令訪問(wèn),存儲(chǔ)器會(huì)向處理器發(fā)出中止信號(hào),當(dāng)預(yù)取的指令被執(zhí)行時(shí),才會(huì)產(chǎn)生指令預(yù)取中止異常。指令預(yù)取中止 該異常由執(zhí)行SWI指令產(chǎn)生,可用于用戶模式下的程序調(diào)用特權(quán)操作指令。可使用該異常機(jī)制實(shí)現(xiàn)系統(tǒng)功能調(diào)用。軟件中斷 當(dāng)ARM處理器或協(xié)處理器遇到不能處理的指令時(shí),產(chǎn)生未定義指令異常??墒褂迷摦惓C(jī)制進(jìn)行軟件仿真。未定義指令 當(dāng)處理器的復(fù)位電平有效時(shí),產(chǎn)生復(fù)位異常,程序跳轉(zhuǎn)到復(fù)位異常處理程序處執(zhí)行。復(fù)位具體含義異常類型52ARM體系結(jié)構(gòu)與編程---章備份共131頁(yè),您現(xiàn)在瀏覽的是第52頁(yè)!1.8異常從異常中斷處理程序中返回 恢復(fù)被中斷的程序的處理器狀態(tài),即將SPSR_mode寄存器內(nèi)容復(fù)制到CPSR。 返回到發(fā)生異常中斷的指令的下一條或中斷處
(此處教材19頁(yè)第1段不全面,參考269頁(yè)倒數(shù)第3段)指令處執(zhí)行,即將LR_mode寄存器的內(nèi)容復(fù)制到程序計(jì)數(shù)器PC。mode根據(jù)情況為fiq,svc,abt,irq,und53ARM體系結(jié)構(gòu)與編程---章備份共131頁(yè),您現(xiàn)在瀏覽的是第53頁(yè)!1.9復(fù)位復(fù)位當(dāng)nRESET信號(hào)被拉低時(shí)(一般外部復(fù)位引腳電平的變化和芯片的其它復(fù)位源會(huì)改變這個(gè)內(nèi)核信號(hào)),ARM處理器放棄正在執(zhí)行的指令。在復(fù)位后,除PC和CPSR之外的所有寄存器的值都不確定。54ARM體系結(jié)構(gòu)與編程---章備份共131頁(yè),您現(xiàn)在瀏覽的是第54頁(yè)!第1章目錄8.異常9.復(fù)位10.尋址方式簡(jiǎn)介11.ARM7指令簡(jiǎn)介12.協(xié)處理器接口13.調(diào)試接口簡(jiǎn)介1.簡(jiǎn)介2.ARM7三級(jí)流水線3.處理器狀態(tài)4.處理器模式5.內(nèi)部寄存器6.程序狀態(tài)寄存器7.體系結(jié)構(gòu)直接支持的數(shù)據(jù)類型55ARM體系結(jié)構(gòu)與編程---章備份共131頁(yè),您現(xiàn)在瀏覽的是第55頁(yè)!
ARM結(jié)構(gòu)通常希望所有的存儲(chǔ)器訪問(wèn)都合理的對(duì)齊。具體來(lái)說(shuō)就是字訪問(wèn)的地址通常是字對(duì)齊的,而半字訪問(wèn)使用的地址是半字對(duì)齊的。不按這種方式對(duì)齊的存儲(chǔ)器訪問(wèn)稱為非對(duì)齊的存儲(chǔ)器訪問(wèn)。1.10存儲(chǔ)器及存儲(chǔ)器映射I/O未對(duì)齊的存儲(chǔ)器訪問(wèn)56ARM體系結(jié)構(gòu)與編程---章備份共131頁(yè),您現(xiàn)在瀏覽的是第56頁(yè)!
1.10存儲(chǔ)器及存儲(chǔ)器映射I/O未對(duì)齊的數(shù)據(jù)訪問(wèn)操作對(duì)于load/store操作,如果是非對(duì)齊的數(shù)據(jù)訪問(wèn)操作,系統(tǒng)定義了下面3種可能結(jié)果。執(zhí)行的結(jié)果不可預(yù)知忽略字單元地址的低兩位的值,即訪問(wèn)地址為(addressand0xfffffffc)的字單元;忽略半字單元地址的最低位的值,即訪問(wèn)地址為(addressand0xfffffffe)的半字單元由存儲(chǔ)系統(tǒng)實(shí)現(xiàn)忽略字單元地址的低兩位的值;忽略半字單元地址的最低位的值,這時(shí)該地址值原封不動(dòng)地送到存儲(chǔ)系統(tǒng)。57ARM體系結(jié)構(gòu)與編程---章備份共131頁(yè),您現(xiàn)在瀏覽的是第57頁(yè)!當(dāng)讀取PC時(shí),得到的指令地址比正在執(zhí)行指令的地址落后兩條指令:對(duì)于ARM指令,得到的地址是它自身地址+8;對(duì)于Thumb指令,得到的地址是它自身地址+4;1.10存儲(chǔ)器及存儲(chǔ)器映射I/O指令的預(yù)取和自修改代碼58ARM體系結(jié)構(gòu)與編程---章備份共131頁(yè),您現(xiàn)在瀏覽的是第58頁(yè)!LDR R0,AddInstrSTR R0,NextInstrNextInstrSUBR1,R1,#1...AddInstrADDR1,R1,#1(1)(2)(4)(3)但有可能不按照上面所說(shuō)的執(zhí)行:因?yàn)槿绻凇癝UB”指令預(yù)取之后,執(zhí)行之前,發(fā)生中斷,那么預(yù)取的“SUB”指令將被丟棄,而重新預(yù)取,此次預(yù)取的是ADD指令。如果ARM處理器或存儲(chǔ)器系統(tǒng)允許對(duì)預(yù)取指令進(jìn)行備份,并使用這些備份而不是重新預(yù)取,那么以后執(zhí)行這段代碼,仍將執(zhí)行“SUB”指令。1.10存儲(chǔ)器及存儲(chǔ)器映射I/O預(yù)取可能存在的問(wèn)題提示:因?yàn)樽孕薷拇a有許多問(wèn)題需要考慮,建議盡量避免使用。59ARM體系結(jié)構(gòu)與編程---章備份共131頁(yè),您現(xiàn)在瀏覽的是第59頁(yè)!基于ARM內(nèi)核的芯片具有許多的外設(shè),這些外設(shè)訪問(wèn)的標(biāo)準(zhǔn)方法是使用存儲(chǔ)器映射的I/O,為外設(shè)的每個(gè)寄存器都分配一個(gè)地址。通常,從這些地址裝載數(shù)據(jù)用于讀入,向這些地址保存數(shù)據(jù)用于輸出。有些地址的裝載和保存用于外設(shè)的控制功能,而不是輸入或輸出功能。1.10存儲(chǔ)器及存儲(chǔ)器映射I/O存儲(chǔ)器映射的I/O60ARM體系結(jié)構(gòu)與編程---章備份共131頁(yè),您現(xiàn)在瀏覽的是第60頁(yè)!尋址方式是處理器執(zhí)行指令時(shí)尋找真實(shí)操作數(shù)地址的方式。ARM處理器支持9種基本尋址方式:1.11尋址方式簡(jiǎn)介尋址方式分類寄存器尋址;立即尋址;寄存器移位尋址(ARM特有);寄存器間接尋址;多寄存器尋址;堆棧尋址;基址尋址;相對(duì)尋址;61ARM體系結(jié)構(gòu)與編程---章備份共131頁(yè),您現(xiàn)在瀏覽的是第61頁(yè)!ARM7TDMI處理器有兩個(gè)指令集,每種指令集都有自己的優(yōu)缺點(diǎn):32位ARM指令集:對(duì)ARM核的特性提供最大的支持,具有高效、快速的特點(diǎn);16位Thumb指令集:它是ARM指令的子集,具有更高的代碼密度,非常適合存儲(chǔ)器帶寬和空間都受限制的嵌入式應(yīng)用場(chǎng)合。1.12AMR7指令集簡(jiǎn)介簡(jiǎn)介62ARM體系結(jié)構(gòu)與編程---章備份共131頁(yè),您現(xiàn)在瀏覽的是第62頁(yè)!Thumb指令集可分為4大類指令:分支指令;數(shù)據(jù)處理指令;寄存器加載和存儲(chǔ)指令;異常產(chǎn)生指令。1.12AMR7指令集簡(jiǎn)介Thumb指令集63ARM體系結(jié)構(gòu)與編程---章備份共131頁(yè),您現(xiàn)在瀏覽的是第63頁(yè)! 協(xié)處理器專門用于進(jìn)行輔助運(yùn)算的芯片,其本身除了運(yùn)算功能外沒(méi)有其他功能,因此不能獨(dú)立工作,必須和CPU一起工作。 ARM7TDMI處理器指令集使您可以通過(guò)協(xié)處理器來(lái)實(shí)現(xiàn)特殊的附加指令。這些協(xié)處理器是與ARM7TDMI內(nèi)核相結(jié)合的單獨(dú)的處理單元。一個(gè)典型的協(xié)處理器包括:指令流水線;指令譯碼邏輯;寄存器分組;帶獨(dú)立數(shù)據(jù)通路的特殊處理邏輯。1.13協(xié)處理器接口64ARM體系結(jié)構(gòu)與編程---章備份共131頁(yè),您現(xiàn)在瀏覽的是第64頁(yè)!1.13協(xié)處理器接口ARM指令集——協(xié)處理器指令 ARM的協(xié)處理器指令主要用于ARM處理器初始化ARM協(xié)處理器的數(shù)據(jù)處理操作,以及在ARM處理器的寄存器和協(xié)處理器的寄存器之間傳送數(shù)據(jù),和在ARM協(xié)處理器的寄存器和存儲(chǔ)器之間傳送數(shù)據(jù)。ARM協(xié)處理器指令包括以下5條:CDP
協(xié)處理器數(shù)據(jù)操作指令LDC
協(xié)處理器數(shù)據(jù)加載指令STC
協(xié)處理器數(shù)據(jù)存儲(chǔ)指令MCR
ARM處理器寄存器到協(xié)處理器寄存器的數(shù)據(jù)傳送指令MRC
協(xié)處理器寄存器到ARM處理器寄存器的數(shù)據(jù)傳送指令65ARM體系結(jié)構(gòu)與編程---章備份共131頁(yè),您現(xiàn)在瀏覽的是第65頁(yè)!第1章目錄8.異常9.復(fù)位10.存儲(chǔ)器及存儲(chǔ)器映射I/O11.尋址方式簡(jiǎn)介12.ARM7指令簡(jiǎn)介13.協(xié)處理器接口14.調(diào)試接口簡(jiǎn)介1.簡(jiǎn)介2.ARM7三級(jí)流水線3.處理器狀態(tài)4.處理器模式5.內(nèi)部寄存器6.程序狀態(tài)寄存器7.體系結(jié)構(gòu)直接支持的數(shù)據(jù)類型66ARM體系結(jié)構(gòu)與編程---章備份共131頁(yè),您現(xiàn)在瀏覽的是第66頁(yè)!EmbeddedICE-RT模塊67ARM體系結(jié)構(gòu)與編程---章備份共131頁(yè),您現(xiàn)在瀏覽的是第67頁(yè)!前言了解嵌入式系統(tǒng)概述1嵌入式系統(tǒng)簡(jiǎn)介2嵌入式系統(tǒng)的定義3嵌入式系統(tǒng)的特點(diǎn)4嵌入式系統(tǒng)的組成5嵌入式系統(tǒng)的應(yīng)用68ARM體系結(jié)構(gòu)與編程---章備份共131頁(yè),您現(xiàn)在瀏覽的是第68頁(yè)!嵌入式系統(tǒng)簡(jiǎn)介現(xiàn)代計(jì)算機(jī)技術(shù)的兩大分支標(biāo)志計(jì)算機(jī)進(jìn)入了通用計(jì)算機(jī)與嵌入式計(jì)算機(jī)兩大分支并行發(fā)展時(shí)代。通用計(jì)算機(jī)側(cè)重的發(fā)展方向:高速、海量的數(shù)值計(jì)算、總線速度提升,擴(kuò)大存儲(chǔ)容量。而嵌入式計(jì)算機(jī)對(duì)體積、功耗、功能、可靠性、專用性有較高要求。69ARM體系結(jié)構(gòu)與編程---章備份共131頁(yè),您現(xiàn)在瀏覽的是第69頁(yè)!嵌入式系統(tǒng)的定義參考IEEE(國(guó)際電氣和電子工程師協(xié)會(huì))的定義:
嵌入式系統(tǒng)是“用于控制、監(jiān)視或者輔助操作機(jī)器和設(shè)備的裝置”嵌入式系統(tǒng):以計(jì)算機(jī)技術(shù)為基礎(chǔ)、軟件硬件可裁剪、面向應(yīng)用,對(duì)功能、可靠性、成本、體積、功耗嚴(yán)格要求的專用計(jì)算機(jī)系統(tǒng)。70ARM體系結(jié)構(gòu)與編程---章備份共131頁(yè),您現(xiàn)在瀏覽的是第70頁(yè)!嵌入式系統(tǒng)的應(yīng)用消費(fèi)電子嵌入式應(yīng)用信息家電智能玩具軍事電子通信設(shè)備移動(dòng)存貯工控設(shè)備智能儀表汽車電子網(wǎng)絡(luò)設(shè)備工業(yè)軍事國(guó)防電子商務(wù)網(wǎng)絡(luò)71ARM體系結(jié)構(gòu)與編程---章備份共131頁(yè),您現(xiàn)在瀏覽的是第71頁(yè)!現(xiàn)實(shí)生活中的嵌入式系統(tǒng)實(shí)例辦公室環(huán)境72ARM體系結(jié)構(gòu)與編程---章備份共131頁(yè),您現(xiàn)在瀏覽的是第72頁(yè)!現(xiàn)實(shí)生活中的嵌入式系統(tǒng)實(shí)例國(guó)防領(lǐng)域73ARM體系結(jié)構(gòu)與編程---章備份共131頁(yè),您現(xiàn)在瀏覽的是第73頁(yè)!現(xiàn)實(shí)生活中的嵌入式系統(tǒng)實(shí)例航空領(lǐng)域74ARM體系結(jié)構(gòu)與編程---章備份共131頁(yè),您現(xiàn)在瀏覽的是第74頁(yè)!第1章ARM概述及其基本編程模型75ARM體系結(jié)構(gòu)與編程---章備份共131頁(yè),您現(xiàn)在瀏覽的是第75頁(yè)!1.1ARM簡(jiǎn)介ARM公司簡(jiǎn)介ARM是AdvancedRISCMachines的縮寫,它是英國(guó)一家微處理器行業(yè)的知名企業(yè),該企業(yè)設(shè)計(jì)了大量高性能、廉價(jià)、耗能低的RISC(精簡(jiǎn)指令集)處理器。公司的特點(diǎn)是只設(shè)計(jì)芯片,而不生產(chǎn)。它將技術(shù)授權(quán)給世界上許多著名的半導(dǎo)體、軟件和OEM廠商,并提供服務(wù)。76ARM體系結(jié)構(gòu)與編程---章備份共131頁(yè),您現(xiàn)在瀏覽的是第76頁(yè)!1.1ARM簡(jiǎn)介ARM有三種含義:一個(gè)公司的名稱;一類處理器的通稱;一種技術(shù)的名稱。ARM不是完整的單片機(jī),它只是一個(gè)單片機(jī)的內(nèi)核。所謂以ARM為核的單片機(jī),就是把ARM作為中央處理器(核),根據(jù)需要設(shè)計(jì)出外圍功能模塊,用總線把這些功能模塊和ARM核連接在一起,組成一個(gè)單片機(jī)。這個(gè)單片機(jī)由ARM核控制。77ARM體系結(jié)構(gòu)與編程---章備份共131頁(yè),您現(xiàn)在瀏覽的是第77頁(yè)!1.1ARM簡(jiǎn)介ARM體系結(jié)構(gòu)
ARM處理器為RISC(reduceinstructionsetputing)芯片,其簡(jiǎn)單的結(jié)構(gòu)使ARM內(nèi)核非常小,這使得器件的功耗也非常低。它具有經(jīng)典而先進(jìn)的RISC特點(diǎn):數(shù)據(jù)處理操作絕大多數(shù)只針對(duì)寄存器(暫時(shí)存儲(chǔ)數(shù)據(jù),在CPU內(nèi)部,離cpu最近,速度最快)的內(nèi)容,而不直接對(duì)存儲(chǔ)器(內(nèi)存和外存,在CPU外部,存儲(chǔ)器能夠保存的數(shù)據(jù)量大)進(jìn)行操作;通過(guò)load/store指令在寄存器和存儲(chǔ)器之間傳遞數(shù)據(jù)。簡(jiǎn)單的尋址模式;統(tǒng)一和固定長(zhǎng)度的指令域(32位)簡(jiǎn)化了指令的譯碼。具有大量的寄存器ARM體系還采用一些特別技術(shù),見(jiàn)教材第2頁(yè)78ARM體系結(jié)構(gòu)與編程---章備份共131頁(yè),您現(xiàn)在瀏覽的是第78頁(yè)!1.1ARM簡(jiǎn)介各ARM體系結(jié)構(gòu)版本(這里主要指指令集)目前ARM公司定義了6種主要的ARM指令集體系結(jié)構(gòu)版本,以版本號(hào)V1~V6表示。擁有相同指令集版本的ARM芯片,雖然出自不同的生產(chǎn)廠商,但它們使用的指令和應(yīng)用軟件是相互兼容的。79ARM體系結(jié)構(gòu)與編程---章備份共131頁(yè),您現(xiàn)在瀏覽的是第79頁(yè)!1.1ARM簡(jiǎn)介各ARM體系結(jié)構(gòu)版本——V2同樣為26位尋址空間,如今現(xiàn)在已經(jīng)廢棄不再使用,它相對(duì)V1版本有以下改進(jìn):具有乘法和乘加指令;支持協(xié)處理器(專門用于進(jìn)行輔助運(yùn)算的芯片,其本身除了運(yùn)算功能外沒(méi)有其他功能,因此不能獨(dú)立工作,必須和CPU一起工作);快速中斷模式(FIQ)中,提供兩個(gè)額外備份寄存器;原子性(不可分割)加載/存儲(chǔ)指令SWP和SWPB(見(jiàn)備注)。80ARM體系結(jié)構(gòu)與編程---章備份共131頁(yè),您現(xiàn)在瀏覽的是第80頁(yè)!1.1ARM簡(jiǎn)介各ARM體系結(jié)構(gòu)版本——V4 目前大多使用的arm核,使用的是V4t,v5te版本,它相對(duì)V3版本作了以下的改進(jìn):增加了半字加載(LDRH)/存儲(chǔ)(STRH)指令;增加了字節(jié)(LDRSB/STRSB)和半字的加載和符號(hào)擴(kuò)展指令(LDRSH/STRSH);增加了T變種,具有可以轉(zhuǎn)換到Thumb狀態(tài)的指令;增加了新的特權(quán)處理器模式。81ARM體系結(jié)構(gòu)與編程---章備份共131頁(yè),您現(xiàn)在瀏覽的是第81頁(yè)!1.1ARM簡(jiǎn)介各ARM體系結(jié)構(gòu)版本——V6ARM體系版本6是2001年發(fā)布的。其主要特點(diǎn)是增加了SIMD(SingleInstructionMultipleData,單指令多數(shù)據(jù)流)功能擴(kuò)展。它適合使用電池供電的高性能的便攜式設(shè)備,便攜式設(shè)備一方面需要處理器提供高性能,另一方面又需要低功耗。ARM體系版本6首先在2002年春季發(fā)布的ARM11處理器中使用。82ARM體系結(jié)構(gòu)與編程---章備份共131頁(yè),您現(xiàn)在瀏覽的是第82頁(yè)!1.1ARM簡(jiǎn)介ARM處理器核簡(jiǎn)介——ARM7該系列包括ARM7TDMI和擴(kuò)充了Jazelle(Java加速器)的ARM7EJ-S等等。高檔的單片機(jī),除了ARM720T外,都缺少mmu(memorymanagementunit)不能運(yùn)行真正的操作系統(tǒng)。ARM7系列廣泛應(yīng)用于多媒體和嵌入式設(shè)備,包括Internet設(shè)備、網(wǎng)絡(luò)和調(diào)制解調(diào)器設(shè)備,以及移動(dòng)電話、PDA等無(wú)線設(shè)備。83ARM體系結(jié)構(gòu)與編程---章備份共131頁(yè),您現(xiàn)在瀏覽的是第83頁(yè)!1.2ARM7簡(jiǎn)介ARM7基于ARM體系結(jié)構(gòu)V4版本,是目前低端的ARM核。具有廣泛的應(yīng)用,其最顯著的應(yīng)用為數(shù)字移動(dòng)電話。注意:“ARM核”并不是芯片,ARM核與其它部件如RAM、ROM、片內(nèi)外設(shè)、GPIO(GeneralPurposeI/O通用的輸入輸出端口)組合在一起才能構(gòu)成現(xiàn)實(shí)的芯片。84ARM體系結(jié)構(gòu)與編程---章備份共131頁(yè),您現(xiàn)在瀏覽的是第84頁(yè)!1.1ARM簡(jiǎn)介ARM處理器核簡(jiǎn)介——ARM9該系列包括ARM9TDMI、ARM920T、ARM940T。除了兼容ARM7系列,而且能夠更加靈活的設(shè)計(jì)。ARM9系列主要應(yīng)用于無(wú)線通信、儀器儀表、安全系統(tǒng)和機(jī)頂盒等領(lǐng)域。85ARM體系結(jié)構(gòu)與編程---章備份共131頁(yè),您現(xiàn)在瀏覽的是第85頁(yè)!1.1ARM簡(jiǎn)介ARM處理器核簡(jiǎn)介——ARM10該系列包括ARM1020E和ARM1022E處理器核,其核心在于使用向量浮點(diǎn)(VFP)單元VFP10提供高性能的浮點(diǎn)解決方案,從而極大提高了處理器的整型和浮點(diǎn)運(yùn)算性能。可以用于視頻游戲機(jī)和高性能打印機(jī)等場(chǎng)合。86ARM體系結(jié)構(gòu)與編程---章備份共131頁(yè),您現(xiàn)在瀏覽的是第86頁(yè)!
ARM公司在2003年4月29日宣布了其下一代ARM架構(gòu)的CPU-ARM11(又名Jaguar美洲虎),基于ARM11的微處理器具有更強(qiáng)的性能,尤其是多媒體處理能力。ARM11微處理器采用0.13微米工藝,低端產(chǎn)品運(yùn)行在350MHz~500MHz,高端產(chǎn)品運(yùn)行在533~750MHz,如果將加工工藝減小到0.10微米,那么芯片速度將達(dá)1GHz。1.1ARM簡(jiǎn)介ARM處理器核簡(jiǎn)介——ARM11E87ARM體系結(jié)構(gòu)與編程---章備份共131頁(yè),您現(xiàn)在瀏覽的是第87頁(yè)!1.1ARM簡(jiǎn)介ARM處理器核簡(jiǎn)介——XscaleIntelXscale微控制器(ARMv5TE)"核",操作系統(tǒng)包括linux,WindowsCE,SymbianOS,和其他一些RTOS.提供全性能、高性價(jià)比、低功耗的解決方案,支持16位Thumb指令并集成數(shù)字信號(hào)處理(DSP)指令。
Xscale處理器是Intel目前主要推廣的一款A(yù)RM微處理器。 典型芯片:
PXA250/255/270/27288ARM體系結(jié)構(gòu)與編程---章備份共131頁(yè),您現(xiàn)在瀏覽的是第88頁(yè)!ARM體系結(jié)構(gòu)更新89ARM體系結(jié)構(gòu)與編程---章備份共131頁(yè),您現(xiàn)在瀏覽的是第89頁(yè)!1.2ARM7流水線技術(shù)三級(jí)流水線
有一種方法可以明顯改善硬件資源的使用率和處理器的吞吐量,這就是當(dāng)前一條指令結(jié)束之前就開始后面的指令,就是通常所說(shuō)的流水線技術(shù)。這樣可使幾個(gè)操作同時(shí)進(jìn)行。ARM7的流水線分3級(jí),分別為:取指譯碼執(zhí)行90ARM體系結(jié)構(gòu)與編程---章備份共131頁(yè),您現(xiàn)在瀏覽的是第90頁(yè)!1.2ARM7三級(jí)流水線技術(shù)雖然ARM9和ARM10為5、6級(jí)流水線(流水線級(jí)數(shù)越多,說(shuō)明單位時(shí)間內(nèi)執(zhí)行的指令條數(shù)可能就越多),但它們都使用了與ARM7相同的流水線機(jī)制(它們完全仿真3級(jí)流水線的行為),因此ARM7上的代碼也可以在ARM9和ARM10上運(yùn)行。91ARM體系結(jié)構(gòu)與編程---章備份共131頁(yè),您現(xiàn)在瀏覽的是第91頁(yè)!1.7處理器狀態(tài)處理器狀態(tài)ARM處理器有兩種操作狀態(tài):ARM狀態(tài):執(zhí)行32位的ARM指令Thumb狀態(tài):16位Thumb指令92ARM體系結(jié)構(gòu)與編程---章備份共131頁(yè),您現(xiàn)在瀏覽的是第92頁(yè)!1.4處理器模式簡(jiǎn)介ARM體系結(jié)構(gòu)支持7種處理器模式,分別為:用戶模式(usr)、快中斷模式(fiq)、中斷模式(irq)、管理模式(svc)、中止模式(abt)、未定義模式(und)、系統(tǒng)模式(sys)。如下表所示。這樣的好處是可以更好的支持操作系統(tǒng)并提高工作效率。93ARM體系結(jié)構(gòu)與編程---章備份共131頁(yè),您現(xiàn)在瀏覽的是第93頁(yè)!1.4處理器模式特權(quán)模式處理器模式說(shuō)明備注用戶(usr)正常程序工作模式不能直接切換到其它模式系統(tǒng)(sys)用于支持操作系統(tǒng)的特權(quán)任務(wù)等與用戶模式類似,但具有可以直接切換到其它模式等特權(quán)快中斷(fiq)支持高速數(shù)據(jù)傳輸及通道處理FIQ異常響應(yīng)時(shí)進(jìn)入此模式中斷(irq)用于通用中斷處理IRQ異常響應(yīng)時(shí)進(jìn)入此模式管理(svc)操作系統(tǒng)保護(hù)代碼系統(tǒng)復(fù)位和軟件中斷響應(yīng)時(shí)進(jìn)入此模式中止(abt)用于支持虛擬內(nèi)存和/或存儲(chǔ)器保護(hù)在ARM7TDMI沒(méi)有大用處未定義(und)支持硬件協(xié)處理器的軟件仿真未定義指令異常響應(yīng)時(shí)進(jìn)入此模式
除用戶模式外,其它6種模式均為特權(quán)模式。特權(quán)模式下,可以訪問(wèn)所有系統(tǒng)資源。此外,特權(quán)模式可以自由的切換處理器模式,而用戶模式不能直接切換到別的模式,當(dāng)用戶模式需要進(jìn)行處理器模式切換時(shí),應(yīng)用程序可以產(chǎn)生異常處理,在異常處理過(guò)程中進(jìn)行處理模式的切換。未定義(und)中止(abt)管理(svc)中斷(irq)快中斷(fiq)系統(tǒng)(sys)94ARM體系結(jié)構(gòu)與編程---章備份共131頁(yè),您現(xiàn)在瀏覽的是第94頁(yè)!1.4處理器模式用戶和系統(tǒng)模式處理器模式說(shuō)明備注用戶(usr)正常程序工作模式不能直接切換到其它模式系統(tǒng)(sys)用于支持操作系統(tǒng)的特權(quán)任務(wù)等與用戶模式類似,但具有可以直接切換到其它模式等特權(quán)快中斷(fiq)支持高速數(shù)據(jù)傳輸及通道處理FIQ異常響應(yīng)時(shí)進(jìn)入此模式中斷(irq)用于通用中斷處理IRQ異常響應(yīng)時(shí)進(jìn)入此模式管理(svc)操作系統(tǒng)保護(hù)代碼系統(tǒng)復(fù)位和軟件中斷響應(yīng)時(shí)進(jìn)入此模式中止(abt)用于支持虛擬內(nèi)存和/或存儲(chǔ)器保護(hù)在ARM7TDMI沒(méi)有大用處未定義(und)支持硬件協(xié)處理器的軟件仿真未定義指令異常響應(yīng)時(shí)進(jìn)入此模式這兩種模式使用完全相同的寄存器組。系統(tǒng)模式是特權(quán)模式,該模式為操作系統(tǒng)提供可以訪問(wèn)所有資源的權(quán)限,并可以通過(guò)指令(mrs/msr)對(duì)CPSR設(shè)置,直接進(jìn)行模式切換。系統(tǒng)(sys)用戶(usr)95ARM體系結(jié)構(gòu)與編程---章備份共131頁(yè),您現(xiàn)在瀏覽的是第95頁(yè)!1.5內(nèi)部寄存器簡(jiǎn)介在ARM處理器內(nèi)部有37個(gè)用戶可見(jiàn)的通用寄存器。在不同的工作模式和處理器狀態(tài)下,程序員可以訪問(wèn)的寄存器也不同。96ARM體系結(jié)構(gòu)與編程---章備份共131頁(yè),您現(xiàn)在瀏覽的是第96頁(yè)!寄存器類別寄存器在匯編中的名稱各模式下實(shí)際訪問(wèn)的寄存器用戶系統(tǒng)管理中止未定義中斷快中斷通用寄存器和程序計(jì)數(shù)器R0(a1)R0R1(a2)R1R2(a3)R2R3(a4)R3R4(v1)R4R5(v2)R5R6(v3)R6R7(v4)R7R8(v5)R8R8_fiqR9(SB,v6)R9R9_fiqR10(SL,v7)R10R10_fiqR11(FP,v8)R11R11_fiqR12(IP)R12R12_fiqR13(SP)R13R13_svcR13_abtR13_undR13_irqR13_fiqR14(LR)R14R14_svcR14_abtR14_undR14_irqR14_fiqR15(PC)R15狀態(tài)寄存器CPSRCPSRSPSR無(wú)SPSR_svcSPSR_abtSPSR_undSPSR_irqSPSR_fiqARM狀態(tài)各模式下的寄存器SPSR_fiqSPSR_irqSPSR_undSPSR_abtSPSR_svcCPSRR15R14_fiqR14_irqR14_undR14_abtR14_svcR14R13_fiqR13_irqR13_undR13_abtR13_svcR13R12_fiq R12R11_fiq R11R10_fiq R10R9_fiq R9R8_fiq R8 R7 R6 R5 R4 R3 R2 R1 R0所有的37個(gè)寄存器,分成兩大類:綠色區(qū):31個(gè)通用寄存器,每個(gè)32位。黃色區(qū):6個(gè)狀態(tài)寄存器,每個(gè)32位,但目前僅使用其中12位。97ARM體系結(jié)構(gòu)與編程---章備份共131頁(yè),您現(xiàn)在瀏覽的是第97頁(yè)!寄存器類別寄存器在匯編中的名稱各模式下實(shí)際訪問(wèn)的寄存器用戶系統(tǒng)管理中止未定義中斷快中斷通用寄存器和程序計(jì)數(shù)器R0(a1)R0R1(a2)R1R2(a3)R2R3(a4)R3R4(v1)R4R5(v2)R5R6(v3)R6R7(v4)R7R8(v5)R8R8_fiqR9(SB,v6)R9R9_fiqR10(SL,v7)R10R10_fiqR11(FP,v8)R11R11_fiqR12(IP)R12R12_fiqR13(SP)R13R13_svcR13_abtR13_undR13_irqR13_fiqR14(LR)R14R14_svcR14_abtR14_undR14_irqR14_fiqR15(PC)R15(即PC)狀態(tài)寄存器CPSRCPSRSPSR無(wú)SPSR_abtSPSR_abtSPSR_undSPSR_irqSPSR_fiq一般的通用寄存器R13_fiqR13_irqR13_undR13_abtR13_svcR13R12_fiqR12R11_fiqR11R10_fiqR10R9_fiqR9R8_fiqR8R7R6R5R4R3R2R1R0寄存器R0~R15為保存數(shù)據(jù)或地址值的通用寄存器。98ARM體系結(jié)構(gòu)與編程---章備份共131頁(yè),您現(xiàn)在瀏覽的是第98頁(yè)!寄存器類別寄存器在匯編中的名稱各模式下實(shí)際訪問(wèn)的寄存器用戶系統(tǒng)管理中止未定義中斷快中斷通用寄存器和程序計(jì)數(shù)器R0(a1)R0R1(a2)R1R2(a3)R2R3(a4)R3R4(v1)R4R5(v2)R5R6(v3)R6R7(v4)R7R8(v5)R8R8_fiqR9(SB,v6)R9R9_fiqR10(SL,v7)R10R10_fiqR11(FP,v8)R11R11_fiqR12(IP)R12R12_fiqR13(SP)R13R13_svcR13_abtR13_undR13_irqR13_fiqR14(LR)R14R14_svcR14_abtR14_undR14_irqR14_fiqR15(PC)R15(即PC)狀態(tài)寄存器CPSRCPSRSPSR無(wú)SPSR_svcSPSR_abtSPSR_undSPSR_irqSPSR_fiq一般的通用寄存器R14_fiqR14_irqR14_undR14_abtR14_svcR14R13_fiqR13_irqR13_undR13_abtR13_svcR13R12_fiqR12R11_fiqR11R10_fiqR10R9_fiqR9R8_fiqR8寄存器R8~R14為分組(備份)寄存器。它們所對(duì)應(yīng)的物理寄存器取決于當(dāng)前的處理器模式。不同模式下寄存器的使用,要使用寄存器后綴加以區(qū)分。99ARM體系結(jié)構(gòu)與編程---章備份共131頁(yè),您現(xiàn)在瀏覽的是第99頁(yè)!寄存器類別寄存器在匯編中的名稱各模式下實(shí)際訪問(wèn)的寄存器用戶系統(tǒng)管理中止未定義中斷快中斷通用寄存器和程序計(jì)數(shù)器R0(a1)R0R1(a2)R1R2(a3)R2R3(a4)R3R4(v1)R4R5(v2)R5R6(v3)R6R7(v4)R7R8(v5)R8R8_fiqR9(SB,v6)R9R9_fiqR10(SL,v7)R10R10_fiqR11(FP,v8)R11R11_fiqR12(IP)R12R12_fiqR13(SP)R13R13_svcR13_abtR13_undR13_irqR13_fiqR14(LR)R14R14_svcR14_abtR14_undR14_irqR14_fiqR15(PC)R15狀態(tài)寄存器CPSRCPSRSPSR無(wú)SPSR_svcSPSR_abtSPSR_undSPSR_irqSPSR_fiq一般的通用寄存器寄存器R13、R14分別有6個(gè)分組的物理寄存器。1個(gè)用于用戶和系統(tǒng)模式,其余5個(gè)分別用于5種異常模式。剛才提到過(guò),不同模式下寄存器的使用,要使用寄存器后綴加以區(qū)分。R14_fiqR14_irqR14_undR14_abtR14_svcR14R13_fiqR13_irqR13_undR13_abtR13_svcR13100ARM體系結(jié)構(gòu)與編程---章備份共131頁(yè),您現(xiàn)在瀏覽的是第100頁(yè)!1.5內(nèi)部寄存器R13寄存器每一種異常模式擁有自己的R13_<mode>。應(yīng)先初始化好各模式的R13_<mode>,以便異常發(fā)生時(shí),供各模式使用。其中<mode>為下面幾種模式之一:usr、svc、abt、und、irq、fiq101ARM體系結(jié)構(gòu)與編程---章備份共131頁(yè),您現(xiàn)在瀏覽的是第101頁(yè)!Lable程序A程序BR141.5內(nèi)部寄存器R14寄存器與子程序調(diào)用BLLable地址A???MOVPC,LRR14(地址A)Lable???1.程序A執(zhí)行到BLLable語(yǔ)句時(shí),將調(diào)用程序B;操作流程2.程序跳轉(zhuǎn)至標(biāo)號(hào)Lable,執(zhí)行程序B。同時(shí)硬件自動(dòng)將“BLLable”指令的下一條指令所在地址存入R14(即LR);3.程序B執(zhí)行最后,將R14寄存器的內(nèi)容放入PC,返回程序A;102ARM體系結(jié)構(gòu)與編程---章備份共131頁(yè),您現(xiàn)在瀏覽的是第102頁(yè)!1.5內(nèi)部寄存器R14寄存器注意要點(diǎn)R14R14_irq用戶模式下的程序IRQ的程序AareturnB...XA返回用戶模式地址1.執(zhí)行用戶模式下的程序;2.發(fā)生IRQ中斷,硬件將某個(gè)地址存入IRQ模式下的R14_irq寄存器,用戶模式下的R14沒(méi)有被破壞;3.IRQ服務(wù)程序A執(zhí)行完畢,將返回之前被中斷的程序;未被破壞103ARM體系結(jié)構(gòu)與編程---章備份共131頁(yè),您現(xiàn)在瀏覽的是第103頁(yè)!寄存器類別寄存器在匯編中的名稱各模式下實(shí)際訪問(wèn)的寄存器用戶系統(tǒng)管理中止未定義中斷快中斷通用寄存器和程序計(jì)數(shù)器R0(a1)R0R1(a2)R1R2(a3)R2R3(a4)R3R4(v1)R4R5(v2)R5R6(v3)R6R7(v4)R7R8(v5)R8R8_fiqR9(SB,v6)R9R9_fiqR10(SL,v7)R10R10_fiqR11(FP,v8)R11R11_fiqR12(IP)R12R12_fiqR13(SP)R13R13_svcR13_abtR13_undR13_irqR13_fiqR14(LR)R14R14_svcR14_abtR14_undR14_irqR14_fiqR15(PC)R15狀態(tài)寄存器CPSRCPSRSPSR無(wú)SPSR_abtSPSR_abtSPSR_undSPSR_irqSPSR_fiq程序計(jì)數(shù)器R15(PC)寄存器R15為程序計(jì)數(shù)器(PC
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 應(yīng)急疏散系統(tǒng)施工方案
- 肇慶教資考試試題及答案
- 2025年江西職考數(shù)學(xué)試題及答案
- 5年級(jí)下冊(cè)的字
- 5s建設(shè)新聞通稿
- 礦山交叉作業(yè)施工方案
- amh低調(diào)理成功案例
- 2025年內(nèi)蒙古機(jī)電職業(yè)技術(shù)學(xué)院?jiǎn)握新殬I(yè)傾向性測(cè)試題庫(kù)學(xué)生專用
- 2025年重慶應(yīng)用技術(shù)職業(yè)學(xué)院?jiǎn)握新殬I(yè)技能考試題庫(kù)必考題
- 2025年湖南安全技術(shù)職業(yè)學(xué)院?jiǎn)握新殬I(yè)技能測(cè)試題庫(kù)完美版
- 《藝術(shù)概論(專升本)》復(fù)習(xí)考試題庫(kù)(含答案)
- 安全周例會(huì)匯報(bào)模板、安全匯報(bào)模板
- 化學(xué)核心素養(yǎng)的課堂教學(xué)-基于核心素養(yǎng)的高中化學(xué)教學(xué) 課件
- DB31T 1137-2019 畜禽糞便生態(tài)還田技術(shù)規(guī)范
- 張居正改革-完整精講版課件
- excel-操作技巧培訓(xùn)課件
- 腹膜透析的原理和應(yīng)用講課課件
- 中北大學(xué)火炮概論終極版
- 2022年CAD快捷鍵-CAD常用快捷鍵命令大全
- 流感病人的護(hù)理ppt課件
評(píng)論
0/150
提交評(píng)論