微處理器系統(tǒng)結(jié)構(gòu)及嵌入式系統(tǒng)設(shè)計(jì):第七章 ARM體系結(jié)構(gòu)及編程模型_第1頁
微處理器系統(tǒng)結(jié)構(gòu)及嵌入式系統(tǒng)設(shè)計(jì):第七章 ARM體系結(jié)構(gòu)及編程模型_第2頁
微處理器系統(tǒng)結(jié)構(gòu)及嵌入式系統(tǒng)設(shè)計(jì):第七章 ARM體系結(jié)構(gòu)及編程模型_第3頁
微處理器系統(tǒng)結(jié)構(gòu)及嵌入式系統(tǒng)設(shè)計(jì):第七章 ARM體系結(jié)構(gòu)及編程模型_第4頁
微處理器系統(tǒng)結(jié)構(gòu)及嵌入式系統(tǒng)設(shè)計(jì):第七章 ARM體系結(jié)構(gòu)及編程模型_第5頁
已閱讀5頁,還剩59頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

第七章ARM體系結(jié)構(gòu)及編程模型2022/10/201本章主要內(nèi)容掌握ARM處理器的運(yùn)行模式;ARM處理器的寄存器組織結(jié)構(gòu)及其特點(diǎn);ARM處理器系統(tǒng)數(shù)據(jù)類型和存儲(chǔ)格式;ARM處理器對(duì)異常和中斷的處理方式;ARM的存儲(chǔ)器和I/O系統(tǒng)。2電子工程學(xué)院ARM芯片、內(nèi)核和CPU的關(guān)系A(chǔ)RMCPU數(shù)據(jù)通路ARMCPU控制邏輯ARM內(nèi)核ARMCPUARM芯片ARM內(nèi)核3電子工程學(xué)院7.1ARM簡介ARM是AdvancedRISCMachines的縮寫,該企業(yè)設(shè)計(jì)了大量高性能、廉價(jià)、耗能低的RISC(精簡指令集)處理器ARM公司的特點(diǎn)是只設(shè)計(jì)芯片,而不生產(chǎn)。它將技術(shù)授權(quán)給世界上許多著名的半導(dǎo)體、軟件和OEM廠商,并提供服務(wù)形成各具特色的ARM芯片將技術(shù)授權(quán)給其它芯片廠商4電子工程學(xué)院ARM處理器的應(yīng)用工業(yè)控制領(lǐng)域無線通訊領(lǐng)域:目前已有超過85%的無線通訊設(shè)備采用了ARM技術(shù)網(wǎng)絡(luò)應(yīng)用:ADSL消費(fèi)類電子產(chǎn)品:數(shù)字音頻播放器、數(shù)字機(jī)頂盒和游戲機(jī)成像和安全產(chǎn)品:語音及視頻處理、數(shù)碼相機(jī)、打印機(jī)、手機(jī)中的32位SIM智能卡也采用了ARM技術(shù)到目前為止,基于ARM技術(shù)的微處理器應(yīng)用約占據(jù)了32位嵌入式微處理器75%以上的市場份額全球80%的GSM/3G手機(jī)、99%的CDMA手機(jī)以及絕大多數(shù)PDA產(chǎn)品均采用ARM體系的嵌入式處理器,“掌上計(jì)算”相關(guān)的所有領(lǐng)域皆為其所主宰5電子工程學(xué)院ARM體系結(jié)構(gòu)的特點(diǎn)RISC芯片,其簡單的結(jié)構(gòu)使ARM內(nèi)核非常小、功耗低、成本低、性能高統(tǒng)一和固定長度的指令集,簡化了指令的譯碼,便于指令流水線設(shè)計(jì)裝載/保存結(jié)構(gòu),數(shù)據(jù)處理操作只針對(duì)寄存器的內(nèi)容,而不直接對(duì)存儲(chǔ)器進(jìn)行操作支持Thumb(16位)/ARM(32位)雙指令集,能很好的兼容8位/16位器件每條數(shù)據(jù)處理指令都對(duì)算術(shù)邏輯單元和移位器控制,實(shí)現(xiàn)了ALU和移位器的最大利用尋址方式靈活簡單,執(zhí)行效率高地址自動(dòng)增加和減少尋址模式,優(yōu)化程序循環(huán)多寄存器裝載和存儲(chǔ)指令實(shí)現(xiàn)最大數(shù)據(jù)吞吐量所有指令的條件執(zhí)行實(shí)現(xiàn)最快速的代碼執(zhí)行6電子工程學(xué)院ARM體系結(jié)構(gòu)ARM架構(gòu)自誕生至今,已發(fā)展并定義了七種不同的版本,從V1到V7版架構(gòu)V1版架構(gòu)該版架構(gòu)只在原型機(jī)ARM1中出現(xiàn)過,其基本性能有:基本的數(shù)據(jù)處理指令(無乘法)字節(jié)、半字和字的LOAD/STORE指令轉(zhuǎn)移指令,包括子程序調(diào)用及鏈接指令軟件中斷指令尋址空間:64MB(26根地址線)7電子工程學(xué)院ARM體系結(jié)構(gòu)V2版架構(gòu),現(xiàn)在已經(jīng)廢棄不再使用該版架構(gòu)對(duì)V1版進(jìn)行了擴(kuò)展,增加了以下功能:乘法和乘加指令支持協(xié)處理器操作指令快速中斷模式SWP/SWPB基本存儲(chǔ)器與寄存器交換指令尋址空間:64M字節(jié)V3版架構(gòu),目前已廢棄不用尋址范圍擴(kuò)展到32位快速中斷模式中具有的兩個(gè)以上的分組寄存器;具有原子性加載/存儲(chǔ)指令SWP和SWPB比V2增加了當(dāng)前程序狀態(tài)寄存器CPSR和程序狀態(tài)保存寄存器SPSR以便于異常的處理比V2增加了中止和未定義二種處理器模式增加了從異常處理返回的指令功能及MSR/MRS指令8電子工程學(xué)院ARM體系結(jié)構(gòu)V4版架構(gòu)V4版架構(gòu)是目前應(yīng)用最廣的ARM體系結(jié)構(gòu),對(duì)V3版架構(gòu)進(jìn)行了進(jìn)一步擴(kuò)充,使ARM使用更加靈活A(yù)RM7、ARM8、ARM9和StrongARM都采用該版架構(gòu)有符號(hào)、無符號(hào)的半字和有符號(hào)字節(jié)的Load/Store指令增加了16位Thumb指令集完善了軟件中斷SWI指令的功能增加了處理器的特權(quán)模式9電子工程學(xué)院ARM體系結(jié)構(gòu)V5版架構(gòu)在V4版基本上增加了一些新的指令,ARM10和Scale都采用該版架構(gòu)。新增功能有:改進(jìn)了ARM/Thumb狀態(tài)之間的切換效率;E---增強(qiáng)型DSP指令集,包括全部算法操作和16位乘法操作;J----支持新的JAVA,提供字節(jié)代碼執(zhí)行的硬件和優(yōu)化軟件加速功能帶有鏈接和交換的BLX指令計(jì)數(shù)前導(dǎo)零CLZ指令軟件斷點(diǎn)指令增加了信號(hào)處理指令為協(xié)處理器增加更多可選擇的指令10電子工程學(xué)院ARM體系結(jié)構(gòu)V6版架構(gòu)2001年發(fā)布的,ARM11處理器中采用此架構(gòu)。此架構(gòu)在V5版的基礎(chǔ)上增加了以下功能:增加了SIMD功能擴(kuò)展,提高了嵌入式應(yīng)用系統(tǒng)的音、視頻處理能力改進(jìn)了內(nèi)存管理改進(jìn)了混合端與不對(duì)齊數(shù)據(jù)支持,使得小端系統(tǒng)支持大端數(shù)據(jù)V7版架構(gòu)2005年發(fā)布,采用Thumb-2技術(shù)。Cortex-A8TM處理器采用的就是V7版的結(jié)構(gòu)11電子工程學(xué)院ARM處理器核簡介ARM公司開發(fā)了很多系列的ARM處理器核,目前最新的系列已經(jīng)是ARM11,而ARM6核以及更早的系列已經(jīng)很罕見了。目前應(yīng)用比較廣泛的系列是:ARM7ARM9ARM9EARM10SecurCoreXscaleARM11Cortex項(xiàng)目ARM7ARM9ARM10ARM11流水線3568典型頻率(MHz)80150260335功耗(mW/MHz)0.060.19(+cache)0.5(+cache)0.4(+cache)性能MIPS**/MHz0.971.11.31.2架構(gòu)馮諾伊曼哈佛哈佛哈佛12電子工程學(xué)院ARM內(nèi)核命名規(guī)則ARM{x}{y}{z}{T}{D}{M}{I}{E}{J}{F}{-S}x——系列號(hào)y——存儲(chǔ)管理/保護(hù)單元z——CacheT——Thumb指令集D——JTAG調(diào)試器M——快速乘法器I——嵌入式跟蹤宏單元E——增強(qiáng)DSP指令J——Jazelle技術(shù)F——向量浮點(diǎn)單元S——可綜合的內(nèi)核ARM7TDMI(-S)13電子工程學(xué)院ARM系列微處理器核特點(diǎn)ARM7ARM7TDMI:整數(shù)處理核ARM7TDMI處理器的可綜合版本;ARM720T:帶MMU的處理器核心,支持操作系統(tǒng);ARM7EJ-S:帶有DSP和Jazelle

TM

技術(shù),能夠?qū)崿F(xiàn)Java加速功能馮諾伊曼體系結(jié)構(gòu);ARMTDMI是目前應(yīng)用最廣的微處理器核ARM720T帶有MMU和8KB的指令數(shù)據(jù)混合cache;ARM7EJ-執(zhí)行ARMv5TEJ指令,5級(jí)流水線,提供Java加速指令,沒有存儲(chǔ)器保護(hù)。ARM9ARM920T:帶有獨(dú)立的16KB數(shù)據(jù)和指令Cache;ARM922T:帶有獨(dú)立的8位KB數(shù)據(jù)和指令Cache;ARM940T–包括更小數(shù)據(jù)和指令Cache和一個(gè)MPU基于ARM9TDMI,帶16位的Thumb指令集,增強(qiáng)代碼密度最多到35%;在0.13μm工藝下最高性能可達(dá)到300MIPS(Dhrystone2.1測(cè)試標(biāo)準(zhǔn))集成了數(shù)據(jù)和指令Chche;32位AMBA總線接口的MMU支持;可在0.18μm、0.15μm和0.13μm工藝的硅芯片上實(shí)現(xiàn)。ARM處理器核簡介14電子工程學(xué)院ARM9EARM926EJ-S:Jazelle

技術(shù),有MMU,可配置的數(shù)據(jù)和指令Cache,TCM接口;ARM946E-S:可配置的數(shù)據(jù)和指令Cache及TCM;ARM966E-S:針對(duì)要求高性能和低功耗的可預(yù)測(cè)的指令執(zhí)行時(shí)間的硬實(shí)時(shí)應(yīng)用設(shè)計(jì)ARM968E-S:最小、功耗最小的

ARM9E系列處理器,針對(duì)嵌入式實(shí)時(shí)應(yīng)用設(shè)計(jì);ARM9E是針對(duì)微控制器、DSP和Java的單處理器解決方案;ARM

Jazelle

技術(shù)提供8倍的Java加速性能(ARM926EJ-S);5-級(jí)整數(shù)流水線;在0.13μm工藝下最高性能可達(dá)到300MIPS(Dhrystone2.1測(cè)試標(biāo)準(zhǔn));可選擇的

向量浮點(diǎn)單元VFP9協(xié)處理器指令優(yōu)秀海浮點(diǎn)性能,對(duì)于3D圖形加速和實(shí)時(shí)控制可達(dá)到

215MFLOPS。高性能的AHB總線,帶MMU可在0.18μm,0.15μm,0.13μm工藝的硅芯片上實(shí)現(xiàn)。ARM10EARM1020E:帶DSP指令集,在片調(diào)試功能,獨(dú)立的32KB數(shù)據(jù)和指令Cache,MMU支持;ARM1022E:與ARM1020E相同,只是獨(dú)立的數(shù)據(jù)和指令Cache變?yōu)?6KB;ARM1026EJ-S:同時(shí)具有MPU和MMU,可綜合版本;帶分支預(yù)測(cè)的6級(jí)整數(shù)流水線;在0.13μm工藝下最高性能可達(dá)到430MIPS(Dhrystone2.1測(cè)試標(biāo)準(zhǔn));對(duì)于3D圖形運(yùn)算和實(shí)時(shí)控制采用VFP協(xié)處理器,浮點(diǎn)運(yùn)算性能最高可達(dá)650MFLOPS;雙64位AMBA總線接口和64位內(nèi)部總路線接口;優(yōu)化的緩存結(jié)構(gòu)提高了處理器訪問低速存儲(chǔ)器的性能;可在0.18μm,0.15μm,0.13μm工藝的硅芯片上實(shí)現(xiàn)ARM處理器核簡介15電子工程學(xué)院ARM11ARM11MPCore:可綜合的多處理器核,1至4個(gè)處理器可配置;ARM1136J(F)-S:可配置的數(shù)據(jù)和指令Cache,可提供1.9位的MPEG4編碼加速功能;ARM1156T2(F)-S:帶集成浮點(diǎn)協(xié)處理器,帶內(nèi)存保護(hù)單元MPU

;ARM1176JZ(F)-S:帶針對(duì)CPU和系統(tǒng)安全架構(gòu)擴(kuò)展的TrustZone技術(shù)。增強(qiáng)的Thumb、Jazelle、DSP擴(kuò)展支持;帶片上和系統(tǒng)安全TrustZone

技術(shù)支持;在0.13μm工藝下最高可達(dá)到550MHz;MPCore在0.13μm工藝下最高性能可達(dá)到740MIPS(Dhrystone2.1測(cè)試標(biāo)準(zhǔn));支持多媒體指令SIMD;采用三種電源模式:全速/待命/休眠集成DMA的TCM低功耗、高性能。SecurCoreSC100:第一個(gè)32位安全處理器;、SC110:在SC100上增加密鑰協(xié)處理器;SC200:帶Jazelle技術(shù)的高級(jí)安全處理器;SC210:在SC200上增加密鑰協(xié)處理器SecurCore是專門為智能卡、安全I(xiàn)C提供的32位安全處理器,為電子商務(wù)、銀行、網(wǎng)絡(luò)、移動(dòng)多媒體、公共交通提供安全解決方案;體積小、功耗低,代碼壓縮密度高;為快速增長的Java卡平臺(tái)提供Java加速功能;ARM處理器核簡介16電子工程學(xué)院CortexCortex-A:面向應(yīng)用的微處理器,針對(duì)復(fù)雜操作系統(tǒng)和應(yīng)用程序設(shè)計(jì);Cortex-R:針對(duì)實(shí)時(shí)系統(tǒng)的嵌入式處理器;Cortex-M:針對(duì)成本敏感應(yīng)用優(yōu)化的深度嵌入式處理器;2004年發(fā)布,提供增強(qiáng)的媒體和數(shù)字處理能力,增加了系統(tǒng)性能;支持ARM、Thumb、Thumb-2指令集;Thumb-2指令集提供了更高的代碼存儲(chǔ)密度,進(jìn)一步降低成本;Intel系列StrongARM:ARMv4體系XScale:ARMv5TE體系,增加MMX指令StrongARM主要應(yīng)用于手持設(shè)備和PDA,5級(jí)流水線,具有獨(dú)立的數(shù)據(jù)和指令Cache,不支持Thumb指令集,目前已停產(chǎn);XScale是目前Intel公司主推的高性能嵌入式處理器,分通用處理器、網(wǎng)絡(luò)處理器和I/O處理器三類。其中通用處理器有PXA25x、PXA26x、PXA27x三個(gè)系列,被廣泛應(yīng)用于智能手機(jī)、PDA領(lǐng)域。ARM處理器核簡介17電子工程學(xué)院7.2ARM編程模型ARM體系結(jié)構(gòu)直接支持的數(shù)據(jù)類型字節(jié):8位半字:16位(必須分配為占用2個(gè)字節(jié))字:32位(必須分配為占用4個(gè)字節(jié))注意:1)半字存儲(chǔ)單元地址最低位為02)字存儲(chǔ)單元地址最低兩位為0N位無符號(hào)數(shù):二進(jìn)制格式表示范圍為0-2N-1的非負(fù)整數(shù);N位有符號(hào)數(shù)時(shí),N位數(shù)據(jù)值使用2的補(bǔ)碼格式表示范圍為-2N-1~+2N-1-1的整數(shù)11123427.2.1ARM處理器支持的數(shù)據(jù)類型18電子工程學(xué)院所有數(shù)據(jù)處理操作,例如ADD,都以字為單位;裝載和保存指令可以對(duì)字節(jié)、半字和字進(jìn)行操作,當(dāng)裝載字節(jié)或半字時(shí)自動(dòng)實(shí)現(xiàn)零擴(kuò)展或符號(hào)擴(kuò)展;ARM指令的長度剛好是1個(gè)字(分配為占用4個(gè)字節(jié)),Thumb指令的長度剛好是半字(占用2個(gè)字節(jié))ARM處理器操作19電子工程學(xué)院處理器模式說明備注

用戶(usr)正常程序執(zhí)行模式不能直接切換到其它模式特權(quán)模式系統(tǒng)(sys)運(yùn)行操作系統(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沒有大用處未定義(und)支持硬件協(xié)處理器的軟件仿真未定義指令異常響應(yīng)時(shí)進(jìn)入此模式7.2.2ARM處理器運(yùn)行模式處理器7種模式20電子工程學(xué)院處理器工作狀態(tài)及相互切換進(jìn)入Thumb狀態(tài)處理器在Thumb狀態(tài)進(jìn)入異常,則當(dāng)異常處理(IRQ、FIQ、Undef、Abort和SWI)返回時(shí),自動(dòng)轉(zhuǎn)換到Thumb狀態(tài)進(jìn)入ARM狀態(tài)處理器進(jìn)行異常處理(IRQ、FIQ、Undef、Abort和SWI)

時(shí),把程序計(jì)數(shù)器PC放入異常模式鏈接寄存器中。從異常向量地址開始執(zhí)行可以進(jìn)入ARM狀態(tài)。ARM狀態(tài):此時(shí)處理器執(zhí)行32位的字對(duì)齊的ARM指令。Thumb狀態(tài):此時(shí)處理器執(zhí)行16位的、半字對(duì)齊的Thumb指令

21電子工程學(xué)院處理器模式特權(quán)模式處理器模式說明備注用戶(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沒有大用處未定義(und)支持硬件協(xié)處理器的軟件仿真未定義指令異常響應(yīng)時(shí)進(jìn)入此模式除用戶模式外,其它模式均為特權(quán)模式。ARM內(nèi)部寄存器和一些片內(nèi)外設(shè)在硬件設(shè)計(jì)上只允許(或者可選為只允許)特權(quán)模式下訪問。此外,特權(quán)模式可以自由的切換處理器模式,而用戶模式不能直接切換到別的模式。未定義(und)中止(abt)管理(svc)中斷(irq)快中斷(fiq)系統(tǒng)(sys)22電子工程學(xué)院處理器模式異常模式處理器模式說明備注用戶(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沒有大用處未定義(und)支持硬件協(xié)處理器的軟件仿真未定義指令異常響應(yīng)時(shí)進(jìn)入此模式未定義(und)中止(abt)管理(svc)中斷(irq)快中斷(fiq)這五種模式稱為異常模式。它們除了可以通過程序切換進(jìn)入外,也可以由特定的異常進(jìn)入。當(dāng)特定的異常出現(xiàn)時(shí),處理器進(jìn)入相應(yīng)的模式。每種異常模式都有一些獨(dú)立的寄存器,以避免異常退出時(shí)用戶模式的狀態(tài)不可靠。23電子工程學(xué)院處理器模式用戶和系統(tǒng)模式處理器模式說明備注用戶(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沒有大用處未定義(und)支持硬件協(xié)處理器的軟件仿真未定義指令異常響應(yīng)時(shí)進(jìn)入此模式這兩種模式都不能由異常進(jìn)入,而且它們使用完全相同的寄存器組。系統(tǒng)模式是特權(quán)模式,不受用戶模式的限制。操作系統(tǒng)在該模式下訪問用戶模式的寄存器就比較方便,而且操作系統(tǒng)的一些特權(quán)任務(wù)可以使用這個(gè)模式訪問一些受控的資源。系統(tǒng)(sys)用戶(usr)24電子工程學(xué)院7.2.3ARM處理器工作狀態(tài)

ARM7TDMI處理器內(nèi)核使用V4T版本的ARM結(jié)構(gòu),該結(jié)構(gòu)包含32位ARM指令集和16位Thumb指令集。因此ARM7TDMI處理器有兩種操作狀態(tài):ARM狀態(tài):32位,這種狀態(tài)下執(zhí)行的是字方式的ARM指令;Thumb狀態(tài):16位,這種狀態(tài)下執(zhí)行半字方式的Thumb指令。注意:兩個(gè)狀態(tài)之間的切換并不影響處理器模式或寄存器內(nèi)容。25電子工程學(xué)院ARM處理器工作狀態(tài)切換使用BX指令將ARM內(nèi)核的操作狀態(tài)在ARM狀態(tài)和Thumb狀態(tài)之間進(jìn)行切換,程序如下所示;從Arm狀態(tài)切換到Thumb狀態(tài)

LDRR0,=Lable+1BXR0;從Thumb狀態(tài)切換到ARM狀態(tài)

LDRR0,=LableBXR0地址最低位為1,表示切換到Thumb狀態(tài)地址最低位為0,表示切換到ARM狀態(tài)跳轉(zhuǎn)地址標(biāo)號(hào)注意:處理器復(fù)位后開始執(zhí)行代碼時(shí),處于ARM狀態(tài)26電子工程學(xué)院7.2.4ARM寄存器組織通用寄存器(32位)

31個(gè)寄存器(32位)

37個(gè)狀態(tài)寄存器(32位)

6個(gè)通用寄存器31個(gè)(如:R0~R15)通用寄存器不分組寄存器(R0~R7)分組寄存器(R8~R14)程序計(jì)數(shù)器PC(R15)(1)ARM狀態(tài)下的寄存器組織27電子工程學(xué)院寄存器類別寄存器在匯編中的名稱各模式下實(shí)際訪問的寄存器用戶系統(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無SPSR_svcSPSR_abtSPSR_undSPSR_irqSPSR_fiq無CPSRR15R14R13R12R11R10R9R8R7R6R5R4R3R2R1R0用戶無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)各模式下的寄存器組織R0~R7為不分組寄存器注意:在異常處理中進(jìn)行模式切換時(shí),可能會(huì)破壞寄存器中的數(shù)據(jù),需要保護(hù);R14_fiqR14_irqR14_undR14_abtR14_svcR14R13_fiqR13_irqR13_undR13_abtR13_svcR13R12_fiqR12R11_fiqR11R10_fiqR10R9_fiqR9R8_fiqR8R8~R14為分組寄存器。不同處理器模式下它們對(duì)應(yīng)不同的物理寄存器。R8~R12有一個(gè)分組專用于FIQ模式。這樣在發(fā)生FIQ中斷后,可以加速FIQ的處理速度。R14為鏈接寄存器LR,具有兩個(gè)特殊功能:用于保存子程序返回地址;根據(jù)不同的異常模式保存為異常返回地址(有些異常有一個(gè)小的固定偏移量)。28電子工程學(xué)院Lable程序A程序BR14內(nèi)部寄存器R14(LR)寄存器與子程序調(diào)用BLLable地址A???MOVPC,LRR14(地址A)???1.程序A執(zhí)行過程中調(diào)用程序B;操作流程2.程序跳轉(zhuǎn)至標(biāo)號(hào)Lable,執(zhí)行程序B。同時(shí)硬件將“BLLable”指令的下一條指令所在地址存入R14(LR);3.程序B執(zhí)行最后,將R14寄存器的內(nèi)容放入PC,返回程序A;29電子工程學(xué)院內(nèi)部寄存器R14寄存器與異常發(fā)生異常發(fā)生時(shí),程序要跳轉(zhuǎn)至異常服務(wù)程序,對(duì)返回地址的處理與子程序調(diào)用類似,都是由硬件完成的。區(qū)別在于有些異常有一個(gè)小常量的偏移R14寄存器注意要點(diǎn)當(dāng)發(fā)生異常嵌套時(shí),這些異常之間可能會(huì)發(fā)生沖突。例如:如果用戶在用戶模式下執(zhí)行程序時(shí)發(fā)生了IRQ中斷,用戶模式寄存器不會(huì)被破壞。但是如果允許在IRQ模式下的中斷處理程序重新使能IRQ中斷,并且發(fā)生了嵌套的IRQ中斷時(shí),外部中斷處理程序保存在R14_irq中的任何值都將被嵌套中斷的返回地址所覆蓋30電子工程學(xué)院內(nèi)部寄存器R14寄存器注意要點(diǎn)R14R14_irq用戶模式下的程序IRQ模式下的程序AareturnB...XA地址A地址A1.執(zhí)行用戶模式下的程序;2.發(fā)生IRQ中斷,硬件將某個(gè)地址存入IRQ模式下的R14_irq寄存器,用戶模式下的R14沒有被破壞;3.IRQ服務(wù)程序A執(zhí)行完畢,將R14_irq寄存器的內(nèi)容減去某個(gè)常量后存入PC,返回之前被中斷的程序;未被破壞R14_irq31電子工程學(xué)院內(nèi)部寄存器R14寄存器注意要點(diǎn)R14R14_irq用戶模式下的程序IRQ模式下的程序AaB...XA地址A地址A1.執(zhí)行用戶模式下的程序;2.發(fā)生IRQ中斷,硬件將某個(gè)地址存入IRQ模式下的R14_irq寄存器,用戶模式下的R14沒有被破壞;3.IRQ服務(wù)程序A執(zhí)行完畢,將R14_irq寄存器的內(nèi)容減去某個(gè)常量后存入PC,返回之前被中斷的程序;未被破壞IRQ模式下的程序BareturnB...XA地址B地址B4.如果在IRQ處理程序中打開IRQ中斷,并且再次發(fā)生IRQ中斷;5.硬件將返回地址保存在R14_irq寄存器中,原來保存的返回地址將被覆蓋,造成錯(cuò)誤;R14_irq被破壞6.在程序B返回到程序A,然后在返回到用戶模式下被中斷的程序時(shí),發(fā)生錯(cuò)誤,將不能正確返回;returnreturn解決辦法是確保R14的對(duì)應(yīng)版本在發(fā)生中斷嵌套時(shí)不再保存任何有意義的值(將R14入棧),或者切換到其它處理器模式下。32電子工程學(xué)院寄存器類別寄存器在匯編中的名稱各模式下實(shí)際訪問的寄存器用戶系統(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無SPSR_abtSPSR_abtSPSR_undSPSR_irqSPSR_fiq程序計(jì)數(shù)器R15(PC)寄存器R15為程序計(jì)數(shù)器(PC),它指向正在取指的地址。可以認(rèn)為它是一個(gè)通用寄存器,但是對(duì)于它的使用有許多與指令相關(guān)的限制或特殊情況。如果R15使用的方式超出了這些限制,那么結(jié)果將是不可預(yù)測(cè)的33電子工程學(xué)院內(nèi)部寄存器讀R15的限制正常操作時(shí),從R15讀取的值是處理器正在取指的地址,即當(dāng)前正在執(zhí)行指令的地址加上8個(gè)字節(jié)(兩條ARM指令的長度)。由于ARM指令總是以字為單位,所以R15寄存器的最低兩位總是為0當(dāng)使用STR或STM指令保存R15時(shí),會(huì)有一個(gè)例外。這些指令可能將當(dāng)前指令地址加8字節(jié)或加12字節(jié)保存(將來可能還有其它數(shù)字,與具體ARM芯片有關(guān)),對(duì)于一個(gè)確定的ARM芯片,這個(gè)值是一個(gè)常量所以最好避免使用STR和STM指令來保存R15,如果很難做到,那么應(yīng)當(dāng)在程序中計(jì)算出該芯片的偏移量LDRR0,PC??????PCPC-4PC-8正在執(zhí)行正在譯碼正在取指流水線狀態(tài)地址程序代碼34電子工程學(xué)院指令1指令2指令3指令4周期1執(zhí)行譯碼取指執(zhí)行譯碼取指執(zhí)行譯碼取指執(zhí)行譯碼取指周期2周期3周期4周期5周期63級(jí)流水線結(jié)構(gòu)的指令執(zhí)行順序當(dāng)前周期PC-8PC-4PCPC+4過去人們習(xí)慣性約定將“正在執(zhí)行的指令作為參考點(diǎn)”,即當(dāng)前指令之地址為PC的值,而今對(duì)于3級(jí)流水線的ARM核而言,PC總是指向正在取指或即將取指的下一條指令(PC-8正是正在執(zhí)行的(即將被執(zhí)行的)指令地址,即當(dāng)前指令的地址)注:PC總是指向正在取指的指令的地址或即將取指的下條指令的地址。即:執(zhí)行完一條指令,PC立即更新為PC+”1”35電子工程學(xué)院內(nèi)部寄存器讀R15的限制計(jì)算偏移量(PC值和當(dāng)前指令地址的差)程序代碼:SUB R1,PC,#4 ;R1=下面STR指令的地址STR PC,[R0] ;保存STR指令地址+偏移量LDR R0,[R0] ;然后重裝SUB R0,R0,R1 ;計(jì)算偏移量04812ARM狀態(tài)正常操作時(shí),寫入R15的值被當(dāng)作一個(gè)指令地址,程序從這個(gè)地址處繼續(xù)執(zhí)行(相當(dāng)于執(zhí)行一次無條件跳轉(zhuǎn))36電子工程學(xué)院內(nèi)部寄存器寫R15的限制由于ARM指令以字為邊界,因此寫入R15的值最低兩位通常為0b00。具體的規(guī)則取決于內(nèi)核結(jié)構(gòu)的版本:在ARM結(jié)構(gòu)V3版及以上版本中,寫入R15的值的最低兩位被忽略,因此跳轉(zhuǎn)地址由指令的實(shí)際目標(biāo)地址(寫入R15的值)和0xFFFFFFFC相與得到;在ARM結(jié)構(gòu)V4版及以下版本中,寫入R15的值的最低兩位為0,如果不是,結(jié)果將不可預(yù)測(cè)37電子工程學(xué)院寄存器類別寄存器在匯編中的名稱各模式下實(shí)際訪問的寄存器用戶系統(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無SPSR_abtSPSR_abtSPSR_undSPSR_irqSPSR_fiq程序狀態(tài)寄存器CPSR寄存器CPSR為程序狀態(tài)寄存器,在異常模式中,另外一個(gè)寄存器“程序狀態(tài)保存寄存器(SPSR)”可以被訪問。每種異常都有自己的SPSR,在進(jìn)入異常時(shí)它保存CPSR的當(dāng)前值,異常退出時(shí)可通過它恢復(fù)CPSR38電子工程學(xué)院內(nèi)部寄存器ARM狀態(tài)和Thumb狀態(tài)之間寄存器的關(guān)系Thumb狀態(tài)R0~R7與ARM狀態(tài)R0~R7相同;Thumb狀態(tài)CPSR和SPSR與ARM狀態(tài)CPSR和SPSR相同;Thumb狀態(tài)SP映射到ARM狀態(tài)R13;Thumb狀態(tài)LR映射到ARM狀態(tài)R14;Thumb狀態(tài)PC映射到ARM狀態(tài)PC(R15)在Thumb狀態(tài)中,高寄存器(R8~R15)不是標(biāo)準(zhǔn)寄存器集的一部分,但可以使用MOV、CMP和ADD指令對(duì)高寄存器操作39電子工程學(xué)院Thumb狀態(tài)寄存器在Arm狀態(tài)寄存器上的映射R1

R2

R3

R4

R5

R6

R7

R8

R9

R10

R11

R12

R0

堆棧指針(R13)

連接寄存器(R14)

程序計(jì)數(shù)器(R15)

低寄存器高寄存器40電子工程學(xué)院NZCV——IM0M1M2M3M4TF—...313029282726876543210程序狀態(tài)寄存器條件代碼標(biāo)志保留控制位溢出標(biāo)志oVerflow進(jìn)位或借位擴(kuò)展Carry零Zero負(fù)或小于NegativeIRQ禁止InterruptFIQ禁止Fast狀態(tài)位Thumb模式位ModeNZCVIM0M1M2M3M4TFCPSR寄存器的格式每個(gè)異常模式還帶有一個(gè)程序狀態(tài)保存寄存器(SPSR),它用于保存在異常發(fā)生之前的CPSR。CPSR和SPSR通過特殊指令(MRS、MSR)進(jìn)行訪問。41電子工程學(xué)院程序狀態(tài)寄存器條件代碼標(biāo)志大多數(shù)“數(shù)值處理指令”可以選擇是否影響條件代碼標(biāo)志位。通常如果指令帶S后綴,則該指令的執(zhí)行會(huì)影響條件代碼標(biāo)志;但有一些指令的執(zhí)行總是會(huì)影響條件代碼標(biāo)志N、Z、C和V位都是條件代碼標(biāo)志。算術(shù)操作、邏輯操作、MSR或者LDM指令可以對(duì)這些位進(jìn)行設(shè)置。所有ARM指令都可按條件來執(zhí)行,而Thumb指令中只有分支指令可按條件執(zhí)行。42電子工程學(xué)院程序狀態(tài)寄存器條件代碼標(biāo)志N運(yùn)算結(jié)果的最高位反映在該標(biāo)志位。對(duì)于有符號(hào)二進(jìn)制補(bǔ)碼,結(jié)果為負(fù)數(shù)時(shí)N=1,結(jié)果為正數(shù)或零時(shí)N=0;Z指令結(jié)果為0時(shí)Z=1(通常表示比較結(jié)果“相等”),否則Z=0;C當(dāng)進(jìn)行加法運(yùn)算(包括CMN指令),并且最高位產(chǎn)生進(jìn)位時(shí)C=1,否則C=0。當(dāng)進(jìn)行減法運(yùn)算(包括CMP指令),并且最高位產(chǎn)生借位時(shí)C=0,否則C=1。對(duì)于結(jié)合移位操作的非加法/減法指令,C為從最高位最后移出的值,其它指令C通常不變;V當(dāng)進(jìn)行加法/減法運(yùn)算,并且發(fā)生有符號(hào)溢出時(shí)V=1,否則V=0,其它指令V通常不變。43電子工程學(xué)院程序狀態(tài)寄存器控制位CPSR的最低8位為控制位,當(dāng)發(fā)生異常時(shí),這些位被硬件改變。當(dāng)處理器處于一個(gè)特權(quán)模式時(shí),可用軟件操作這些位中斷禁止位包括I和F位:當(dāng)I位置位時(shí),IRQ中斷被禁止;當(dāng)F位置位時(shí),F(xiàn)IQ中斷被禁止。T位反映了正在操作的狀態(tài):當(dāng)T位為1時(shí),處理器正在Thumb狀態(tài)下運(yùn)行;當(dāng)T位清零時(shí),處理器正在ARM狀態(tài)下運(yùn)行模式位包括M4、M3、M2、M1和M0,這些位決定處理器的操作模式44電子工程學(xué)院M[4:0]模式可見的Thumb狀態(tài)寄存器可見的ARM狀態(tài)寄存器10000用戶R0~R7,SP,LR,PC,CPSRR0~R14,PC,CPSR10001快中斷R0~R7,SP_fiq,LR_fiq,PC,CPSR,SPSR_fiq

R0~R7,R8_fiq~R14_fiq,PC,CPSR,SPSR_fiq

10010中斷R0~R7,SP_irq,LR_irq,PC,CPSR,SPSR_fiq

R0~R12,R13_irq,R14_irq,PC,CPSR,SPSR_irq

10011管理R0~R7,SP_svc,LR_svc,PC,CPSR,SPSR_svc

R0~R12,R13_svc,R14_svc,PC,CPSR,SPSR_svc

10111中止R0~R7,SP_abt,LR_abt,PC,CPSR,SPSR_abt

R0~R12,R13_abt,R14_abt,PC,CPSR,SPSR_abt

11011未定義R0~R7,SP_und,LR_und,PC,CPSR,SPSR_und

R0~R12,R13_und,R14_und,PC,CPSR,SPSR_und11111系統(tǒng)R0~R7,SP,LR,PC,CPSRR0~R14,PC,CPSRCPSR模式位設(shè)置表程序狀態(tài)寄存器45電子工程學(xué)院異常正常執(zhí)行的程序流被暫時(shí)中止的現(xiàn)象就是異常現(xiàn)象,處理器就進(jìn)入異常模式如果同時(shí)發(fā)生兩個(gè)或更多異常,那么將按照固定的順序來處理異常,詳見“異常優(yōu)先級(jí)”部分包括之前的講述過的中斷46電子工程學(xué)院異常入口/出口匯總異常類型返回指令之前的狀態(tài)備注ARMR14_xThumbR14_xBLMOVPC,R14PC+4PC+2此處PC為BL,SWI,未定義的指令取指或預(yù)取指中止指令的地址軟件中斷SWIMOVSPC,R14_svcPC+4PC+2未定義的指令MOVSPC,R14_undPC+4PC+2預(yù)取指中止SUBSPC,R14_abt,#4PC+4PC+4快中斷SUBSPC,R14_fiq,#4PC+4PC+4此處PC為由于FIQ或IRQ占先而沒有被執(zhí)行的指令的地址中斷SUBSPC,R14_irq,#4PC+4PC+4數(shù)據(jù)中止SUBSPC,R14_abt,#8PC+8PC+8此處PC為產(chǎn)生數(shù)據(jù)中止的裝載或保存指令的地址。復(fù)位無——復(fù)位時(shí)保存在R14_svc中的值不可預(yù)知注意:“MOVSPC,R14_svc”是指在管理模式執(zhí)行MOVSPC,R14指令。“MOVSPC,R14_und”、“SUBSPC,R14_abt,#4”等指令也是類似的。47電子工程學(xué)院異常的入口和出口處理如果異常處理程序已經(jīng)把返回地址拷貝到堆棧,那么可以使用一條多寄存器傳送指令來恢復(fù)用戶寄存器并實(shí)現(xiàn)返回中斷處理代碼的開始部分和退出部分中斷返回指令的寄存器列表(其中必須包括PC)后的“^”符號(hào)表示這是一條特殊形式的指令。這條指令在從存儲(chǔ)器中裝載PC的同時(shí)(PC是最后恢復(fù)的),CPSR也得到恢復(fù)。這里使用的堆棧指針SP(R13)是屬于異常模式的寄存器,每個(gè)異常模式有自己的堆棧指針。這個(gè)堆棧指針應(yīng)必須在系統(tǒng)啟動(dòng)時(shí)初始化SUBLR,LR,#4 ;計(jì)算返回地址STMFDSP!,{R0-R3,LR} ;保存使用到的寄存器...LDMFDSP!,{R0-R3,PC}^ ;中斷返回48電子工程學(xué)院進(jìn)入異常的過程在適當(dāng)?shù)腖R中保存下一條指令的地址,當(dāng)異常入口來自ARM狀態(tài),將當(dāng)前指令地址加4或加8復(fù)制(取決于異常的類型)到LR中;為Thumb狀態(tài),那么將當(dāng)前指令地址加2、4或加8

(取決于異常的類型)復(fù)制到LR中;異常處理器程序不必確定狀態(tài)將CPSR復(fù)制到適當(dāng)?shù)腟PSR中;將CPSR模式位強(qiáng)制設(shè)置為與異常類型相對(duì)應(yīng)的值;強(qiáng)制PC從相關(guān)的異常向量處取指注1:中斷異常時(shí)置位中斷禁止標(biāo)志,這樣可以防止不受控制的異常嵌套注2:異常總是在ARM狀態(tài)中進(jìn)行處理。當(dāng)處理器處于Thumb狀態(tài)時(shí)發(fā)生了異常,在異常向量地址裝入PC時(shí),會(huì)自動(dòng)切換到ARM狀態(tài)49電子工程學(xué)院退出異常(異常結(jié)束)的過程將LR(R14)中的值減去偏移量后存入PC,偏移量根據(jù)異常的類型而有所不同;將SPSR的值復(fù)制回CPSR;清零在入口置位的中斷禁止標(biāo)志。注:恢復(fù)CPSR的動(dòng)作會(huì)將T、F和I位自動(dòng)恢復(fù)為異常發(fā)生前的值。50電子工程學(xué)院程序AIRQ服務(wù)程序系統(tǒng)模式IRQ模式程序寄存器組圖示進(jìn)入異常過程1.程序在系統(tǒng)模式下運(yùn)行用戶程序,假定當(dāng)前處理器狀態(tài)為Thumb狀態(tài)、允許IRQ中斷;2.用戶程序運(yùn)行時(shí)發(fā)生IRQ中斷,硬件完成以下動(dòng)作:LR_sysSPSR_irqLR_irqLRPCCPSRSPSRSYS1?0...????MODTFI...NZCV置位I位(禁止IRQ中斷)清零T位(進(jìn)入ARM狀態(tài))設(shè)置MOD位,切換處理器模式至IRQ模式將下一條指令的地址存入IRQ模式的LR寄存器將CPSR寄存器內(nèi)容存入IRQ模式的SPSR寄存器將跳轉(zhuǎn)地址存入PC,實(shí)現(xiàn)跳轉(zhuǎn)IRQ0?1...????BackAddrJumpAddrJumpSYS1?0...????“?”表示對(duì)該位不關(guān)心51電子工程學(xué)院在異常處理結(jié)束后,異常處理程序完成以下動(dòng)作:程序AIRQ服務(wù)程序系統(tǒng)模式IRQ模式程序寄存器組圖示退出異常過程LR_sysSPSR_irqLR_irqLRPCCPSRSPSRSYS1?0...????MODTFI...NZCV將SPSR寄存器的值復(fù)制回CPSR寄存器;將LR寄存的值減去一個(gè)常量后復(fù)制到PC寄存器,跳轉(zhuǎn)到被中斷的用戶程序。IRQ0?1...????BackAddrJumpAddrreturnSYS1?0...????SYS1?0...????BackAddr-4Jump“?”表示對(duì)該位不關(guān)心52電子工程學(xué)院快速中斷請(qǐng)求(FIQ)適用于對(duì)一個(gè)突發(fā)事件的快速響應(yīng),這得益于在ARM狀態(tài)中,快中斷模式有8個(gè)專用的寄存器可用來滿足寄存器保護(hù)的需要(這可以加速上下文切換的速度)。不管異常入口是來自ARM狀態(tài)還是Thumb狀態(tài),F(xiàn)IQ處理程序都會(huì)通過執(zhí)行下面的指令從中斷返回:SUBSPC,R14_fiq,#4

在一個(gè)特權(quán)模式中,可以通過置位CPSR中的F位來禁止FIQ異常。快速中斷請(qǐng)求53電子工程學(xué)院中斷請(qǐng)求(IRQ)異常是一個(gè)由nIRQ輸入端的低電平所產(chǎn)生的正常中斷(在具體的芯片中,nIRQ由片內(nèi)外設(shè)拉低,nIRQ是內(nèi)核的一個(gè)信號(hào),對(duì)用戶不可見)。IRQ的優(yōu)先級(jí)低于FIQ。對(duì)于FIQ序列它是被屏蔽的。任何時(shí)候在一個(gè)特權(quán)模式下,都可通過置位CPSR中的I位來禁止IRQ。不管異常入口是來自ARM狀態(tài)還是Thumb狀態(tài),IRQ處理程序都會(huì)通過執(zhí)行下面的指令從中斷返回:SUBSPC,R14_irq,#4中斷請(qǐng)求54電子工程學(xué)院當(dāng)發(fā)生預(yù)取中止時(shí),ARM7TDMI內(nèi)核將預(yù)取的指令標(biāo)記為無效,但在指令到達(dá)流水線的執(zhí)行階段時(shí)才進(jìn)入異常。如果指令在流水線中因?yàn)榘l(fā)生分支而沒有被執(zhí)行,中止將不會(huì)發(fā)生。在處理中止的原因之后,不管處于哪種處理器操作狀態(tài),處理程序都會(huì)執(zhí)行下面的指令恢復(fù)PC和CPSR并重試被中止的指令:

SUBSPC,R14_abt,#4預(yù)取指中止55電子工程學(xué)院數(shù)據(jù)中止當(dāng)發(fā)生數(shù)據(jù)中止后,根據(jù)產(chǎn)生數(shù)據(jù)中止的指令類型作出不同的處理:數(shù)據(jù)轉(zhuǎn)移指令(LDR、STR)回寫到被修改的基址寄存器。中止處理程序必須注意這一點(diǎn)交換指令(SWP)中止好像沒有被執(zhí)行過一樣(中止必須發(fā)生在SWP指令進(jìn)行讀訪問時(shí))在修復(fù)產(chǎn)生中止的原因后,

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(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ì)自己和他人造成任何形式的傷害或損失。

最新文檔