第2章 ARM體系結構_第1頁
第2章 ARM體系結構_第2頁
第2章 ARM體系結構_第3頁
第2章 ARM體系結構_第4頁
第2章 ARM體系結構_第5頁
已閱讀5頁,還剩98頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

嵌入式系統與開發(fā)第2章ARM體系結構2023/2/5中國礦業(yè)大學——信電學院——張林22023/2/5中國礦業(yè)大學——信電學院——張林22023/2/5中國礦業(yè)大學——信電學院——張林2本章內容ARM微處理器結構ARM體系結構簡介ARM微處理器的寄存器結構ARM微處理器的異常處理ARM的存儲器結構ARM微處理器指令系統ARM微處理器的接口嵌入式處理器體系結構計算機體系結構(ComputerArchitecture)是程序員所看到的計算機的屬性,即概念性結構與功能特性通常所說的計算機體系結構主要指機器語言級機器的系統結構計算機體系結構-8種屬性機內數據表示:硬件能直接辨識和操作的數據類型和格式尋址方式:最小可尋址單位、尋址方式的種類、地址運算寄存器組織:操作寄存器、變址寄存器、控制寄存器及專用寄存器的定義、數量和使用規(guī)則指令系統:機器指令的操作類型、格式、指令間排序和控制機構存儲系統:最小編址單位、編址方式、主存容量、最大可編址空間中斷機構:中斷類型、中斷級別,以及中斷響應方式等輸入輸出結構:輸入輸出的連接方式、處理機/存儲器與輸入輸出設備間的數據交換方式、數據交換過程的控制信息保護:信息保護方式、硬件信息保護機制。常見的嵌入式處理器體系結構ARM、POWERPC、MIPS、X86、SH2023/2/5中國礦業(yè)大學——信電學院——張林32023/2/5中國礦業(yè)大學——信電學院——張林42023/2/5中國礦業(yè)大學——信電學院——張林5什么是ARMARM(AdvancedRISCMachines)是一類微處理器的通稱1985年第一個ARM原型在英國劍橋誕生目前有多個版本,大多數ARM核心的處理器用在嵌入式領域ARM(AdvancedRISCMachinesLimited)是一家公司的名字成立于1990年11月,前身為Acorn計算機公司主要設計ARM系列RISC處理器內核授權ARM內核給生產和銷售半導體的合作伙伴ARM公司不生產芯片IP(IntelligenceProperty)另外也提供基于ARM架構的開發(fā)設計技術軟件工具,評估板,調試工具,應用軟件總線架構,外圍設備單元等2023/2/5中國礦業(yè)大學——信電學院——張林6ARM的業(yè)務模型公司的特點是只設計芯片,不生產芯片提供ARM技術知識產權(IP)核,將技術授權給世界上許多著名的半導體、軟體和OEM廠商,并提供服務IP授權費ARM創(chuàng)造和設計IP產品(芯片)Partner把ARMIP和其他IP集成進產品(如芯片等)ARMPartnerOEMCustomer版權費單價OEM用來自ARMPartner的芯片設計制造最終用戶產品業(yè)務拓展/市場格局2023/2/5中國礦業(yè)大學——信電學院——張林7ARMPartnershipModel2023/2/5中國礦業(yè)大學——信電學院——張林8ARM體系結構的特點支持Thumb/ARM雙指令集;指令執(zhí)行采用3級/5級流水線;帶有指令和數據cache,大量使用寄存器,指令執(zhí)行速度更快;支持大端格式和小端格式兩種方法儲字數據;支持字節(jié)、半字和字3種數據類型;支持七種處理器模式;嵌入了在線仿真ICE-RT邏輯;具有片上總線AMBA(AdvancedMicrocontrollerBusArchitecture);采用存儲器映像I/O的方式;具有協處理器接口;采用低電源電壓;體積小,成本低,性能高。2023/2/5中國礦業(yè)大學——信電學院——張林9ARM體系結構組成32位的ALU37個32位寄存器組織32*8位乘法器32*32位桶形移位寄存器指令譯碼及控制邏輯指令流水線數據/地址寄存器2023/2/5中國礦業(yè)大學——信電學院——張林102023/2/5中國礦業(yè)大學——信電學院——張林102023/2/5中國礦業(yè)大學——信電學院——張林10本章內容ARM微處理器結構ARM體系結構簡介ARM微處理器的寄存器結構ARM微處理器的異常處理ARM的存儲器結構ARM微處理器指令系統ARM微處理器的接口ARM微處理器結構ARM體系結構的版本1ARM的微處理器系列22023/2/5中國礦業(yè)大學——信電學院——張林12ARM體系結構版本ARM體系結構一直在完善和發(fā)展為了清楚的表達每個ARM應用實例所使用的指令集,ARM公司定義了8種主要的ARM體系結構版本,以版本號V1~V8表示V1版只有26位的尋址空間,沒有商業(yè)化;基本的數據處理指令(不包括乘法);字節(jié)、字和半字加載/存儲指令;具有分支指令,包括在子程序調用中使用的分支鏈接指令;有操作系統調所需的軟件中斷指令2023/2/5中國礦業(yè)大學——信電學院——張林13ARM體系結構版本V2ARM3芯片采用了版本2a,是第一片采用片上Cache的ARM處理器26位尋址空間具有乘法和乘加指令;支持協處理器;快速中斷模式中使用兩個以上的分組寄存器;具有原子性加載/存儲指令SWP和SWPB。V3尋址范圍擴展到32位,具有獨立的程序空間具有乘法和乘加指令;支持協處理器;快速中斷模式中具有的兩個以上的分組寄存器;具有原子性加載/存儲指令SWP和SWPB。2023/2/5中國礦業(yè)大學——信電學院——張林14ARM體系結構版本V4不再兼容26位體系結構并明確了哪些指令會引起未定義指令異常發(fā)生半字加載/存儲指令;字節(jié)和半字的加載和符號擴展指令;具有可以轉換到Thumb狀態(tài)的指令;增加了用戶模式寄存器的新的特權處理器模式。V5對V4版本的體系結構進行擴展并增加了指令改進了ARM/Thumb狀態(tài)之間的切換效率;E—增強型DSP指令集,包括全部算法操作和16位乘法操作;J—支持的JAVA增強,提供字節(jié)代碼執(zhí)行的硬件和優(yōu)化軟件加速功能。2023/2/5中國礦業(yè)大學——信電學院——張林15ARM體系結構版本V6于2001年發(fā)布35%代碼壓縮率的THUMB;DSP擴充:高性能定點DSP功能;JazelleTM:Java性能優(yōu)化,可提高8倍;Media擴充:音、視頻性能優(yōu)化,可提高4倍V7采用Thumb-2有A、R、M三種類型2023/2/5中國礦業(yè)大學——信電學院——張林16ARM體系結構版本V8版將64位架構支持引入ARM架構中64位通用寄存器、SP(堆棧指針)和PC64位數據處理和擴展的虛擬尋址兩種主要執(zhí)行狀態(tài):AArch64-64位執(zhí)行狀態(tài),包括該狀態(tài)的異常模型、內存模型、程序員模型和指令集支持AArch32-32位執(zhí)行狀態(tài),包括該狀態(tài)的異常模型、內存模型、程序員模型和指令集支持2023/2/5中國礦業(yè)大學——信電學院——張林17ARM體系結構版本與處理器家族2023/2/5中國礦業(yè)大學——信電學院——張林18ARM體系結構版本與處理器家族ArchitectureFamilyARMv1ARM1ARMv2ARM2,ARM3,AmberARMv3ARM6,ARM7ARMv4StrongARM,ARM7TDMI,ARM8,ARM9TDMI,FA526ARMv5ARM7EJ,ARM9E,ARM10E,XScale,FA626TE,Feroceon,PJ1/MohawkARMv6ARM11ARMv6-MARMCortex-M0,ARMCortex-M0+,ARMCortex-M1ARMv7ARMCortex-A5,ARMCortex-A7,ARMCortex-A8,ARMCortex-A9,ARMCortex-A15,ARMCortex-R4,ARMCortex-R5,ARMCortex-R7,Scorpion,Krait,PJ4/Sheeva,SwiftARMv7-MARMCortex-M3,ARMCortex-M4ARMv8-AARMCortex-A53,ARMCortex-A57,X-GeneARM微處理器結構ARM體系結構的版本1ARM的微處理器系列22023/2/5中國礦業(yè)大學——信電學院——張林20ARM7微處理器系列ARM7系列是低功耗的32位RISC處理器,最適合用于對價位和功耗要求較高的消費類應用具有嵌入式ICE-RT邏輯,調試開發(fā)方便;極低的功耗,適合對功耗要求較高的應用,如便攜式產品;能夠提供0.9MIPS/MHz的三級流水線結構;兼容16位的Thumb指令集,代碼密度高;對操作系統的支持廣泛,如WindowsCE、Linux、PalmOS等;指令系統與ARM9系列、ARM9E系列和ARM10E系列兼容,便于用戶的產品升級換代;主頻最高可達130M,高速的運算處理能力能勝任絕大多數的復雜應用。主要應用領域:工業(yè)控制、Internet設備、網絡和調制解調器設備、移動電話等多種多媒體等2023/2/5中國礦業(yè)大學——信電學院——張林21ARM系列微處理器核特點ARM7ARM7TDMI-s:整數處理核ARM7TDMI處理器的可綜合版本;ARM720T:帶MMU的處理器核心,支持操作系統;ARM7EJ-S:帶有DSP和JazelleTM

技術,能夠實現Java加速功能馮諾伊曼體系結構;ARMTDMI是目前應用最廣的微處理器核ARM720T帶有MMU和8KB的指令數據混合cache;ARM7EJ-執(zhí)行ARMv5TEJ指令,5級流水線,提供Java加速指令,沒有存儲器保護。ARM9ARM920T:帶有獨立的16KB數據和指令Cache;ARM922T:帶有獨立的8KB數據和指令Cache;ARM940T–包括更小數據和指令Cache和一個MPU基于ARM9TDMI,帶16位的Thumb指令集,增強代碼密度最多到35%;在0.13μm工藝下最高性能可達到300MIPS(Dhrystone2.1測試標準);集成了數據和指令Chche;32位AMBA總線接口的MMU支持;可在0.18μm、0.15μm和0.13μm工藝的硅芯片上實現。ARM處理器結構2023/2/5中國礦業(yè)大學——信電學院——張林22ARM7

TDMI的含義ARM7TDMI-SARM7TDMI的可綜合(synthesizable)版本(軟核),對應用工程師來說其編程模型與ARM7TDMI一致;嵌入式Embedded-ICE,支持片上斷點和調試點;支持64位乘法;支持片上調試Debug;支持高密度16位的壓縮Thumb指令集2023/2/5中國礦業(yè)大學——信電學院——張林23ARM處理器核命名含義標志含義說明T支持Thumb指令集Thumb指令集版本1:ARMv4TThumb指令集版本2:ARMv5TThumb-2:ARMv6TD片上調試M支持長乘法32位乘32位得到64位,32位的乘加得到64位IEmbeddedICEEDSP指令增加了DSP算法處理器指令:16位乘加指令,飽和的帶符號數的加減法,雙字數據操作,cache預取指令JJava加速器Jazelle提高java代碼的運行速度S可綜合提供VHDL或Verilog語言設計文件2023/2/5中國礦業(yè)大學——信電學院——張林24ARM9EARM926EJ-S:Jazelle技術,有MMU,可配置的數據和指令Cache,TCM接口;ARM946E-S:可配置的數據和指令Cache及TCM;ARM966E-S:針對要求高性能和低功耗的可預測的指令執(zhí)行時間的硬實時應用設計ARM968E-S:最小、功耗最小的

ARM9E系列處理器,針對嵌入式實時應用設計;ARM9E是針對微控制器、DSP和Java的單處理器解決方案;ARM

Jazelle

技術提供8倍的Java加速性能(ARM926EJ-S);5-級整數流水線;在0.13μm工藝下最高性能可達到300MIPS(Dhrystone2.1測試標準);可選擇的

向量浮點單元VFP9協處理器指令優(yōu)秀海浮點性能,對于3D圖形加速和實時控制可達到

215MFLOPS。高性能的AHB總線,帶MMU可在0.18μm,0.15μm,0.13μm工藝的硅芯片上實現。ARM10EARM1020E:帶DSP指令集,在片調試功能,獨立的32KB數據和指令Cache,MMU支持;ARM1022E:與ARM1020E相同,只是獨立的數據和指令Cache變?yōu)?6KB;ARM1026EJ-S:同時具有MPU和MMU,可綜合版本;帶分支預測的6級整數流水線;在0.13μm工藝下最高性能可達到430MIPS(Dhrystone2.1測試標準);對于3D圖形運算和實時控制采用VFP協處理器,浮點運算性能最高可達650MFLOPS;雙64位AMBA總線接口和64位內部總路線接口;優(yōu)化的緩存結構提高了處理器訪問低速存儲器的性能;可在0.18μm,0.15μm,0.13μm工藝的硅芯片上實現ARM處理器結構2023/2/5中國礦業(yè)大學——信電學院——張林25ARM11ARM11MPCore:可綜合的多處理器核,1至4個處理器可配置;ARM1136J(F)-S:可配置的數據和指令Cache,可提供1.9倍的MPEG4編碼加速功能;ARM1156T2(F)-S:帶集成浮點協處理器,帶內存保護單元MPU

;ARM1176JZ(F)-S:帶針對CPU和系統安全架構擴展的TrustZone技術。增強的Thumb、Jazelle、DSP擴展支持;帶片上和系統安全TrustZone技術支持;在0.13μm工藝下最高可達到550MHz;MPCore在0.13μm工藝下最高性能可達到740MIPS(Dhrystone2.1測試標準);支持多媒體指令SIMD;采用三種電源模式:全速/待命/休眠集成DMA的TCM低功耗、高性能。SecurCoreSC100:第一個32位安全處理器;、SC110:在SC100上增加密鑰協處理器;SC200:帶Jazelle技術的高級安全處理器;SC210:在SC200上增加密鑰協處理器SecurCore是專門為智能卡、安全IC提供的32位安全處理器,為電子商務、銀行、網絡、移動多媒體、公共交通提供安全解決方案;體積小、功耗低,代碼壓縮密度高;為快速增長的Java卡平臺提供Java加速功能;ARM處理器結構2023/2/5中國礦業(yè)大學——信電學院——張林26CortexCortex-A:面向應用的微處理器,針對復雜操作系統和應用程序設計;Cortex-R:針對實時系統的嵌入式處理器;Cortex-M:針對成本敏感應用優(yōu)化的深度嵌入式處理器;2004年發(fā)布,提供增強的媒體和數字處理能力,增加了系統性能;支持ARM、Thumb、Thumb-2指令集;Thumb-2指令集提供了更高的代碼存儲密度,進一步降低成本;Intel系列StrongARM:ARMv4體系XScale:ARMv5TE體系,增加MMX指令StrongARM主要應用于手持設備和PDA,5級流水線,具有獨立的數據和指令Cache,不支持Thumb指令集,目前已停產;XScale是目前Intel公司主推的高性能嵌入式處理器,分通用處理器、網絡處理器和I/O處理器三類。其中通用處理器有PXA25x、PXA26x、PXA27x三個系列,被廣泛應用于智能手機、PDA領域。ARM處理器結構2023/2/5中國礦業(yè)大學——信電學院——張林27ARM處理器系列類型ARM7ARM9ARM10ARM11流水線3568典型頻率(MHz)80150260335功耗(mW/MHz)0.060.19(+cache)0.5(+cache)0.4(+cache)性能MIPS/MHz0.971.11.31.2架構馮諾伊曼哈佛哈佛哈佛2023/2/5中國礦業(yè)大學——信電學院——張林282023/2/5中國礦業(yè)大學——信電學院——張林282023/2/5中國礦業(yè)大學——信電學院——張林28本章內容ARM微處理器結構ARM體系結構簡介ARM微處理器的寄存器結構ARM微處理器的異常處理ARM的存儲器結構ARM微處理器指令系統ARM微處理器的接口ARM處理器的寄存器結構ARM處理器運行模式1ARM處理器工作狀態(tài)2ARM處理器寄存器組織3Thumb狀態(tài)寄存器集42023/2/5中國礦業(yè)大學——信電學院——張林30處理器模式說明備注

用戶(usr)正常程序執(zhí)行模式不能直接切換到其它模式

系統(sys)運行操作系統的特權任務與用戶模式類似,但具有可以直接切換到其它模式等特權

快中斷(fiq)支持高速數據傳輸及通道處理FIQ異常響應時進入此模式

中斷(irq)用于通用中斷處理IRQ異常響應時進入此模式

管理(svc)操作系統保護模式系統復位和軟件中斷響應時進入此模式

中止(abt)用于支持虛擬內存和/或存儲器保護在ARM7TDMI沒有大用處

未定義(und)支持硬件協處理器的軟件仿真未定義指令異常響應時進入此模式ARM處理器模式共7種模式2023/2/5中國礦業(yè)大學——信電學院——張林31ARM處理器模式特權模式處理器模式說明備注

用戶(usr)正常程序工作模式不能直接切換到其它模式

系統(sys)用于支持操作系統的特權任務等與用戶模式類似,但具有可以直接切換到其它模式等特權

快中斷(fiq)支持高速數據傳輸及通道處理FIQ異常響應時進入此模式

中斷(irq)用于通用中斷處理IRQ異常響應時進入此模式

管理(svc)操作系統保護代碼系統復位和軟件中斷響應時進入此模式

中止(abt)用于支持虛擬內存和/或存儲器保護在ARM7TDMI沒有大用處

未定義(und)支持硬件協處理器的軟件仿真未定義指令異常響應時進入此模式除用戶模式外,其它模式均為特權模式。ARM內部寄存器和一些片內外設在硬件設計上只允許(或者可選為只允許)特權模式下訪問。此外,特權模式可以自由的切換處理器模式,而用戶模式不能直接切換到別的模式。

未定義(und)

中止(abt)

管理(svc)

中斷(irq)

快中斷(fiq)

系統(sys)2023/2/5中國礦業(yè)大學——信電學院——張林32ARM處理器模式異常模式處理器模式說明備注

用戶(usr)正常程序工作模式不能直接切換到其它模式

系統(sys)用于支持操作系統的特權任務等與用戶模式類似,但具有可以直接切換到其它模式等特權

快中斷(fiq)支持高速數據傳輸及通道處理FIQ異常響應時進入此模式

中斷(irq)用于通用中斷處理IRQ異常響應時進入此模式

管理(svc)操作系統保護代碼系統復位和軟件中斷響應時進入此模式

中止(abt)用于支持虛擬內存和/或存儲器保護在ARM7TDMI沒有大用處

未定義(und)支持硬件協處理器的軟件仿真未定義指令異常響應時進入此模式

未定義(und)

中止(abt)

管理(svc)

中斷(irq)

快中斷(fiq)這五種模式稱為異常模式。它們除了可以通過程序切換進入外,也可以由特定的異常進入。當特定的異常出現時,處理器進入相應的模式。每種異常模式都有一些獨立的寄存器,以避免異常退出時用戶模式的狀態(tài)不可靠。2023/2/5中國礦業(yè)大學——信電學院——張林33ARM處理器模式用戶和系統模式處理器模式說明備注

用戶(usr)正常程序工作模式不能直接切換到其它模式

系統(sys)用于支持操作系統的特權任務等與用戶模式類似,但具有可以直接切換到其它模式等特權

快中斷(fiq)支持高速數據傳輸及通道處理FIQ異常響應時進入此模式

中斷(irq)用于通用中斷處理IRQ異常響應時進入此模式

管理(svc)操作系統保護代碼系統復位和軟件中斷響應時進入此模式

中止(abt)用于支持虛擬內存和/或存儲器保護在ARM7TDMI沒有大用處

未定義(und)支持硬件協處理器的軟件仿真未定義指令異常響應時進入此模式這兩種模式都不能由異常進入,而且它們使用完全相同的寄存器組。系統模式是特權模式,不受用戶模式的限制。操作系統在該模式下訪問用戶模式的寄存器就比較方便,而且操作系統的一些特權任務可以使用這個模式訪問一些受控的資源。

系統(sys)

用戶(usr)2023/2/5中國礦業(yè)大學——信電學院——張林34處理器的模式與切換除了用戶模式之外的其他6種處理器模式稱為特權模式特權模式下,程序可以訪問所有的系統資源,也可以任意地進行處理器模式的切換除系統模式外,其他5種特權模又稱為異常模式大多數的用戶程序運行在用戶模式下,因此應用程序不能夠訪問一些受操作系統保護的系統資源,應用程序也不能直接進行處理器模式的切換用戶模式下,當需要進行處理器模式切換時,應用程序可以主動產生異常,在異常處理中進行處理器模式的切換處理器模式可以通過軟件進行切換,也可以通過異常進行切換當發(fā)生異常時,處理器進入相應的異常模式。在每一種異常模式下都有一組寄存器,供相應的異常處理程序使用,這樣就可以保證在進入異常模式時,用戶模式下的寄存器不被破壞系統模式并不是通過異常進入的,它和用戶模式具有完全一樣的寄存器。但是系統模式屬于特權模式,可以訪問所有的系統資源,也可以直接進行處理器模式切換主要供操作系統任務使用。通常操作系統的任務需要訪問所有的系統資源,同時該任務仍然使用用戶模式的寄存器組,而不是使用異常模式下相應的寄存器組,這樣可以保證當異常發(fā)生時任務狀態(tài)不被破壞ARM處理器的寄存器結構ARM處理器運行模式1ARM處理器工作狀態(tài)2ARM處理器寄存器組織3Thumb狀態(tài)寄存器集42023/2/5中國礦業(yè)大學——信電學院——張林36處理器的工作狀態(tài)從編程的角度看,ARM微處理器的工作狀態(tài)一般有兩種ARM狀態(tài),處理器執(zhí)行32位的字對齊的ARM指令Thumb狀態(tài),處理器執(zhí)行16位的、半字對齊的Thumb指令ARM處理器可在兩種狀態(tài)之間切換,且不影響處理器的模式及寄存器2023/2/5中國礦業(yè)大學——信電學院——張林37ARM指令集與Thumb指令集ARM處理器是基于RISC原理設計的,指令集和相關譯碼機制較為簡單ARMV4版中增加了16位Thumb指令集ARM指令集效率高,但是代碼密度低Thumb指令集具有較高的代碼密度,卻仍然保持ARM的大多數性能上的優(yōu)勢,它是ARM指令集的子集2003年后出現了更高性能的Thumb-2指令集所有的ARM指令都可以條件執(zhí)行,而Thumb指令僅有一條指令條件執(zhí)行ARM程序和Thumb程序可相互調用,相互之間的狀態(tài)切換開銷幾乎為零2023/2/5中國礦業(yè)大學——信電學院——張林38ARM指令集與Thumb指令集ARM指令集與Thumb指令集的關系Thumb指令集具有靈活、小巧的特點ARM指令集支持ARM核所有的特性,具有高效、快速的特點2023/2/5中國礦業(yè)大學——信電學院——張林39ARM狀態(tài)與Thumb狀態(tài)的切換被動切換CPU復位后總是進入ARM狀態(tài)異常產生后總是進入ARM狀態(tài)異常返回后總是進入異常之前狀態(tài)主動切換(BX指令)進入Thumb狀態(tài)當操作數寄存器的狀態(tài)位(Rn[0])為1時,執(zhí)行BX指令時可以使微處理器從ARM狀態(tài)切換到Thumb狀態(tài)進入ARM狀態(tài)當操作數寄存器的狀態(tài)位(Rn[0])為0時,執(zhí)行BX指令時可以使微處理器從Thumb狀態(tài)切換到ARM狀態(tài)ARM處理器的寄存器結構ARM處理器運行模式1ARM處理器工作狀態(tài)2ARM處理器寄存器組織3Thumb狀態(tài)寄存器集42023/2/5中國礦業(yè)大學——信電學院——張林41處理器寄存器組織ARM處理器內部有37個用戶可見的寄存器寄存器被安排成部分重疊的寄存器組在不同的工作模式和處理器狀態(tài)下,程序員可以訪問的寄存器也不盡相同2023/2/5中國礦業(yè)大學——信電學院——張林42寄存器類別寄存器在匯編中的名稱各模式下實際訪問的寄存器用戶系統管理中止未定義中斷快中斷通用寄存器和程序計數器R0(a1)R0R1(a2)R1R2(a3)R2R3(a4)R3R4(v1)R4R5(v2)R5R6(v3)R6R7(v4)R7R8(v5)R8R8_fiq*R9(SB,v6)R9R9_fiq*R10(SL,v7)R10R10_fiq*R11(FP,v8)R11R11_fiq*R12(IP)R12R12_fiq*R13(SP)R13R13_svc*R13_abt*R13_und*R13_irq*R13_fiq*R14(LR)R14R14_svc*R14_abt*R14_und*R14_irq*R14_fiq*R15(PC)R15狀態(tài)寄存器R16(CPSR)CPSRSPSR無SPSR_svcSPSR_abtSPSR_undSPSR_irqSPSR_fiqARM狀態(tài)各模式下的寄存器2023/2/5中國礦業(yè)大學——信電學院——張林43寄存器類別寄存器在匯編中的名稱各模式下實際訪問的寄存器用戶系統管理中止未定義中斷快中斷通用寄存器和程序計數器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_fiqARM狀態(tài)各模式下的寄存器SPSR_fiqSPSR_irqSPSR_undSPSR_abtSPSR_svcCPSRR15R14_fiqR14_irqR14_undR14_abtR14_svcR14R13_fiqR13_irqR13_undR13_abtR13_svcR13R12_fiqR12R11_fiqR11R10_fiqR10R9_fiqR9R8_fiqR8R7R6R5R4R3R2R1R0所有的37個寄存器,分成兩大類:31個通用32位寄存器;6個狀態(tài)寄存器。2023/2/5中國礦業(yè)大學——信電學院——張林44寄存器類別寄存器在匯編中的名稱各模式下實際訪問的寄存器用戶系統管理中止未定義中斷快中斷通用寄存器和程序計數器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系統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)各模式下可以訪問的寄存器2023/2/5中國礦業(yè)大學——信電學院——張林45寄存器類別寄存器在匯編中的名稱各模式下實際訪問的寄存器用戶系統管理中止未定義中斷快中斷通用寄存器和程序計數器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一般的通用寄存器R13_fiqR13_irqR13_undR13_abtR13_svcR13R12_fiqR12R11_fiqR11R10_fiqR10R9_fiqR9R8_fiqR8R7R6R5R4R3R2R1R0在匯編語言中寄存器R0~R13為保存數據或地址值的通用寄存器。它們是完全通用的寄存器,不會被體系結構作為特殊用途,并且可用于任何使用通用寄存器的指令。2023/2/5中國礦業(yè)大學——信電學院——張林46寄存器類別寄存器在匯編中的名稱各模式下實際訪問的寄存器用戶系統管理中止未定義中斷快中斷通用寄存器和程序計數器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一般的通用寄存器R13_fiqR13_irqR13_undR13_abtR13_svcR13R12_fiqR12R11_fiqR11R10_fiqR10R9_fiqR9R8_fiqR8R7R6R5R4R3R2R1R0R7R6R5R4R3R2R1R0其中R0~R7為未分組的寄存器,也就是說對于任何處理器模式,這些寄存器都對應于相同的32位物理寄存器。2023/2/5中國礦業(yè)大學——信電學院——張林47寄存器類別寄存器在匯編中的名稱各模式下實際訪問的寄存器用戶系統管理中止未定義中斷快中斷通用寄存器和程序計數器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一般的通用寄存器R14_fiqR14_irqR14_undR14_abtR14_svcR14R13_fiqR13_irqR13_undR13_abtR13_svcR13R12_fiqR12R11_fiqR11R10_fiqR10R9_fiqR9R8_fiqR8寄存器R8~R14為分組寄存器。它們所對應的物理寄存器取決于當前的處理器模式,幾乎所有允許使用通用寄存器的指令都允許使用分組寄存器2023/2/5中國礦業(yè)大學——信電學院——張林48寄存器類別寄存器在匯編中的名稱各模式下實際訪問的寄存器用戶系統管理中止未定義中斷快中斷通用寄存器和程序計數器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一般的通用寄存器R12_fiqR12R11_fiqR11R10_fiqR10R9_fiqR9R8_fiqR8寄存器R8~R12有兩個分組的物理寄存器。一個用于除FIQ模式之外的所有寄存器模式,另一個用于FIQ模式。這樣在發(fā)生FIQ中斷后,可以加速FIQ的處理速度。2023/2/5中國礦業(yè)大學——信電學院——張林49寄存器類別寄存器在匯編中的名稱各模式下實際訪問的寄存器用戶系統管理中止未定義中斷快中斷通用寄存器和程序計數器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一般的通用寄存器寄存器R13、R14分別有6個分組的物理寄存器。一個用于用戶和系統模式,其余5個分別用于5種異常模式。R14_fiqR14_irqR14_undR14_abtR14_svcR14R13_fiqR13_irqR13_undR13_abtR13_svcR132023/2/5中國礦業(yè)大學——信電學院——張林50寄存器類別寄存器在匯編中的名稱各模式下實際訪問的寄存器用戶系統管理中止未定義中斷快中斷通用寄存器和程序計數器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堆棧指針寄存器R13(SP)寄存器R13常作為堆棧指針(SP)。在ARM指令集當中,沒有以特殊方式使用R13的指令或其它功能,只是習慣上都這樣使用。但是在Thumb指令集中存在使用R13的指令。2023/2/5中國礦業(yè)大學——信電學院——張林51寄存器類別寄存器在匯編中的名稱各模式下實際訪問的寄存器用戶系統管理中止未定義中斷快中斷通用寄存器和程序計數器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鏈接寄存器R14(LR)R14為鏈接寄存器(LR),在結構上有兩個特殊功能:在每種模式下,模式自身的R14版本用于保存子程序返回地址;當發(fā)生異常時,將R14對應的異常模式版本設置為異常返回地址(有些異常有一個小的固定偏移量)。2023/2/5中國礦業(yè)大學——信電學院——張林52Lable程序A程序BR14R14(LR)寄存器與子程序調用BLLable地址A???MOVPC,LRR14(地址A)Lable???1.程序A執(zhí)行過程中調用程序B;操作流程2.程序跳轉至標號Lable,執(zhí)行程序B。同時硬件將“BLLable”指令的下一條指令所在地址存入R14(LR);3.程序B執(zhí)行最后,將R14寄存器的內容放入PC,返回程序A;鏈接寄存器(R14)2023/2/5中國礦業(yè)大學——信電學院——張林53鏈接寄存器(R14)R14寄存器與異常發(fā)生異常發(fā)生時,程序要跳轉至異常服務程序,對返回地址的處理與子程序調用類似,都是由硬件完成的區(qū)別在于有些異常有一個小常量的偏移當發(fā)生異常嵌套時,異常之間可能會發(fā)生沖突例如:如果用戶在用戶模式下執(zhí)行程序時發(fā)生了IRQ中斷,用戶模式R14寄存器不會被破壞。但是如果允許在IRQ模式下的中斷處理程序重新使能IRQ中斷,并且發(fā)生了嵌套的IRQ中斷時,外部中斷處理程序保存在R14_irq中的任何值都將被嵌套中斷的返回地址所覆蓋2023/2/5中國礦業(yè)大學——信電學院——張林54R14寄存器注意要點R14R14_irq用戶模式下的程序IRQ模式下的程序AareturnB...XA地址A地址A1.執(zhí)行用戶模式下的程序;2.發(fā)生IRQ中斷,硬件將某個地址存入IRQ模式下的R14_irq寄存器,用戶模式下的R14沒有被破壞;3.IRQ服務程序A執(zhí)行完畢,將R14_irq寄存器的內容減去某個常量后存入PC,返回之前被中斷的程序;未被破壞R14_irq鏈接寄存器(R14)2023/2/5中國礦業(yè)大學——信電學院——張林55R14寄存器注意要點R14R14_irq用戶模式下的程序IRQ模式下的程序AaB...XA地址A地址A1.執(zhí)行用戶模式下的程序;2.發(fā)生IRQ中斷,硬件將某個地址存入IRQ模式下的R14_irq寄存器,用戶模式下的R14沒有被破壞;3.IRQ服務程序A執(zhí)行完畢,將R14_irq寄存器的內容減去某個常量后存入PC,返回之前被中斷的程序;未被破壞IRQ模式下的程序BareturnB...XA地址B地址B4.如果在IRQ處理程序中打開IRQ中斷,并且再次發(fā)生IRQ中斷;5.硬件將返回地址保存在R14_irq寄存器中,原來保存的返回地址將被覆蓋,造成錯誤;R14_irq被破壞6.在程序B返回到程序A,然后在返回到用戶模式下被中斷的程序時,發(fā)生錯誤,將不能正確返回;returnreturn解決辦法是確保R14的對應版本在發(fā)生中斷嵌套時不再保存任何有意義的值(將R14入棧),或者切換到其它處理器模式下。鏈接寄存器(R14)2023/2/5中國礦業(yè)大學——信電學院——張林56寄存器類別寄存器在匯編中的名稱各模式下實際訪問的寄存器用戶系統管理中止未定義中斷快中斷通用寄存器和程序計數器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程序計數器R15(PC)寄存器R15為程序計數器(PC),它指向正在取指的地址??梢哉J為它是一個通用寄存器,但是對于它的使用有許多與指令相關的限制或特殊情況。如果R15使用的方式超出了這些限制,那么結果將是不可預測的。2023/2/5中國礦業(yè)大學——信電學院——張林57程序計數器(R15)-讀取從R15讀取的值是處理器正在取指的地址ARM狀態(tài)當前正在執(zhí)行指令的地址加上8個字節(jié)R15寄存器的最低兩位總是為0Thumb狀態(tài)當前正在執(zhí)行指令的地址加上4個字節(jié)R15寄存器的最低一位總是為0LDRR0,PC??????PCPC-4PC-8正在執(zhí)行正在譯碼正在取指流水線狀態(tài)地址程序代碼2023/2/5中國礦業(yè)大學——信電學院——張林58程序計數器(R15)-寫入寫入R15的值被當作一個指令地址,程序從這個地址處繼續(xù)執(zhí)行(相當于執(zhí)行一次無條件跳轉)由于ARM指令以字節(jié)為邊界,因此寫入R15的值最低兩位通常為0b00,具體的規(guī)則取決于內核結構的版本:在ARM結構V3版及以下版本中,寫入R15的值的最低兩位被忽略,因此跳轉地址由指令的實際目標地址(寫入R15的值)和0xFFFFFFFC相與得到在ARM結構V4版及以上版本中,寫入R15的值的最低兩位為0,如果不是,結果將不可預測2023/2/5中國礦業(yè)大學——信電學院——張林59寄存器類別寄存器在匯編中的名稱各模式下實際訪問的寄存器用戶系統管理中止未定義中斷快中斷通用寄存器和程序計數器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)寄存器,在異常模式中,另外一個寄存器“保存程序狀態(tài)寄存器(SPSR)”可以被訪問。每種異常都有自己的SPSR,在進入異常時它保存CPSR的當前值,異常退出時可通過它恢復CPSR。2023/2/5中國礦業(yè)大學——信電學院——張林60程序狀態(tài)寄存器ARM內核包含1個CPSR和5個供異常處理程序使用的SPSRCPSR反映了當前處理器的狀態(tài),其包含:4個條件代碼標志:負(N)、零(Z)、進位(C)和溢出(V)2個中斷禁止位,分別控制一種類型的中斷5個對當前處理器模式進行編碼的位1個用于指示當前執(zhí)行指令(ARM還是Thumb)的位每個異常模式還帶有一個程序狀態(tài)保存寄存器(SPSR),用于保存在異常發(fā)生之前的CPSRCPSR和SPSR通過特殊指令(MRS、MSR)進行訪問2023/2/5中國礦業(yè)大學——信電學院——張林61NZCV——IM0M1M2M3M4TF—...313029282726876543210條件代碼標志保留控制位溢出標志oVerflow進位或借位擴展Carry零Zero負或小于NegativeIRQ禁止InterruptFIQ禁止Fast狀態(tài)位Thumb模式位ModeNZCVIM0M1M2M3M4TFCPSR寄存器的格式程序狀態(tài)寄存器2023/2/5中國礦業(yè)大學——信電學院——張林62程序狀態(tài)寄存器-條件代碼標志多數指令可以選擇影響條件代碼標志位通常如果指令帶S后綴,則該指令的執(zhí)行會影響條件代碼標志但有一些指令的執(zhí)行總是會影響條件代碼標志算術操作、邏輯操作、MSR或者LDM指令可以對這些位進行設置條件代碼標志位可決定所有ARM指令是否執(zhí)行此為ARM指令的重要特點,可實現代碼的優(yōu)化2023/2/5中國礦業(yè)大學——信電學院——張林63程序狀態(tài)寄存器-條件代碼標志N

運算結果的最高位反映在該標志位。對于有符號二進制補碼,結果為負數時N=1,結果為正數或零時N=0;Z

指令結果為0時Z=1(通常表示比較結果“相等”),否則Z=0;C

當進行加法運算(包括CMN指令),并且最高位產生進位時C=1,否則C=0。當進行減法運算(包括CMP指令),并且最高位產生借位時C=0,否則C=1。對于結合移位操作的非加法/減法指令,C為從最高位最后移出的值,其它指令C通常不變;V

當進行加法/減法運算,并且發(fā)生有符號溢出時V=1,否則V=0,其它指令V通常不變。2023/2/5中國礦業(yè)大學——信電學院——張林64程序狀態(tài)寄存器-控制位CPSR的最低8位為控制位,當發(fā)生異常時,這些位被硬件改變當處理器處于特權模式時,可用軟件操作這些位中斷禁止位I、FI位為1,IRQ中斷被禁止;I位為0,IRQ中斷被使能F位為1,FIQ中斷被禁止;F位為0,FIQ中斷被使能處理器狀態(tài)標志位T當T位為1時,處理器正在Thumb狀態(tài)下運行當T位為0時,處理器正在ARM狀態(tài)下運行模式位M0~M4決定處理器的操作模式不是所有模式位的組合都定義了有效的處理器模式,如果使用了錯誤的設置,將引起一個無法恢復的錯誤2023/2/5中國礦業(yè)大學——信電學院——張林65程序狀態(tài)寄存器-模式位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_fiqR0~R7,R8_fiq~R14_fiq,PC,CPSR,SPSR_fiq10010中斷R0~R7,SP_irq,LR_irq,PC,CPSR,SPSR_fiqR0~R12,R13_irq,R14_irq,PC,CPSR,SPSR_irq10011管理R0~R7,SP_svc,LR_svc,PC,CPSR,SPSR_svcR0~R12,R13_svc,R14_svc,PC,CPSR,SPSR_svc10111中止R0~R7,SP_abt,LR_abt,PC,CPSR,SPSR_abtR0~R12,R13_abt,R14_abt,PC,CPSR,SPSR_abt11011未定義R0~R7,SP_und,LR_und,PC,CPSR,SPSR_undR0~R12,R13_und,R14_und,PC,CPSR,SPSR_und11111系統R0~R7,SP,LR,PC,CPSRR0~R14,PC,CPSR2023/2/5中國礦業(yè)大學——信電學院——張林66程序狀態(tài)寄存器-保留位CPSR中的未定義位為了提高程序的可移植性,不要隨意改變保留位,并確保保程序的運行不受保留位的值影響2023/2/5中國礦業(yè)大學——信電學院——張林67高版本ARM處理器的CPSR條件位:N=1-結果為負,0-結果為正或0Z=1-結果為0,0-結果不為0C=1-進位,0-借位V=1-結果溢出,0結果沒溢出Q位:僅ARM5TE/J架構支持指示增強型DSP指令是否溢出J位僅ARM5TE/J架構支持J=1:處理器處于Jazelle狀態(tài)中斷禁止位:I=1:禁止IRQ.F=1:禁止FIQ.TBit僅ARMxT架構支持T=0:處理器處于ARM狀態(tài)T=1:處理器處于Thumb狀態(tài)Mode位(處理器模式位):0b10000 User0b10001 FIQ0b10010 IRQ0b10011 Supervisor0b10111 Abort0b11011 Undefined0b11111 System2731NZCVQ2867IFTmode1623

815

54024fsxc

UndefinedJARM處理器的寄存器結構ARM處理器運行模式1ARM處理器工作狀態(tài)2ARM處理器寄存器組織3Thumb狀態(tài)寄存器集42023/2/5中國礦業(yè)大學——信電學院——張林69Thumb狀態(tài)的寄存器集Thumb狀態(tài)下寄存器是ARM狀態(tài)下的子集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)不是標準寄存器集的一部分,匯編語言程序員對它們的訪問受到限制,可以使用MOV、CMP和ADD指令對高寄存器操作2023/2/5中國礦業(yè)大學——信電學院——張林70Thumb狀態(tài)寄存器在Arm狀態(tài)寄存器上的映射R1

R2

R3

R4

R5

R6

R7

R8

R9

R10

R11

R12

R0

堆棧指針(R13)

連接寄存器(R14)

程序計數器(R15)

低寄存器高寄存器2023/2/5中國礦業(yè)大學——信電學院——張林712023/2/5中國礦業(yè)大學——信電學院——張林712023/2/5中國礦業(yè)大學——信電學院——張林71本章內容ARM微處理器結構ARM體系結構簡介ARM微處理器的寄存器結構ARM微處理器的異常處理ARM的存儲器結構ARM微處理器指令系統ARM微處理器的接口2023/2/5中國礦業(yè)大學——信電學院——張林72異常內部或外部事件使正常的程序產生暫時的停止,稱之為異常ARM中,中斷是異常的一種,是CPU外部設備告知CPU的一種方法在處理異常之前,ARM內核保存當前的處理器狀態(tài)(CPSR->SPSR),以便當處理程序結束時可以恢復執(zhí)行原來的程序(SPSR->CPSR)如果同時發(fā)生兩個或更多異常,那么將按照固定的優(yōu)先級來處理異常2023/2/5中國礦業(yè)大學——信電學院——張林73VectorTable不同的異常將導致處理器進入不同的工作模式,并執(zhí)行不同特定地址的指令各異常類型具有不同的優(yōu)先級。復位——發(fā)生時,處理器立即停止當前程序,進入禁止中斷的管理模式,并從地址0x00000000或者0xFFFF0000處開始執(zhí)行;未定義指令——在ARM處理器或協處理器認為當前指令未定義時發(fā)生;軟件中斷——當用戶模式下的程序使用指令SWI時,處理器便產生軟件中斷,進入管理模式,以調用特權操作。指令預取中止——當處理器預取指令的地址不存在,或該地址不允許當前指令訪問,存儲器會向處理器發(fā)出中止信號;只有當預取的指令被執(zhí)行時,才會產生指令預取中止異常。Vectortablecanbeat

0xFFFF0000onARM720T

andonARM9/10familydevicesFIQIRQ(Reserved)DataAbortPrefetchAbortSoftwareInterruptUndefinedInstructionReset0x1C0x180x140x100x0C0x080x040x001665優(yōu)先級異常處理2023/2/5中國礦業(yè)大學——信電學院——張林74VectorTable不同的異常將導致處理器進入不同的工作模式,并執(zhí)行不同特定地址的指令各異常類型具有不同的優(yōu)先級。數據訪問中止——若處理器數據訪問指令的地址不存在,或該地址不允許當前指令訪問時,產生數據中止異常;外部中斷請求——當處理器的外部中斷請求引腳有效,而且CPSR中的I位為0時,產生IRQ異常。系統外設可通過該異常請求中斷服務??焖僦袛嗾埱蟆幚砥鞯目焖僦袛嗾埱笠_有效,而且CPSR中的F位為0時,產生FIQ異常。Vectortablecanbeat

0xFFFF0000onARM720T

andonARM9/10familydevicesFIQIRQ(Reserved)DataAbortPrefetchAbortSoftwareInterruptUndefinedInstructionReset0x1C0x180x140x100x0C0x080x040x0016652優(yōu)先級43異常處理2023/2/5中國礦業(yè)大學——信電學院——張林7575異常30xFFFF001C0x0000001C快速中斷模式快速中斷請求(FIQ)40xFFFF00180x00000018外部中斷模式外部中斷請求(IRQ)20xFFFF00100x00000010中止模式數據訪問中止50xFFFF000C0x0000000C中止模式指令預取中止60xFFFF00080x00000008管理模式軟件中斷(SWI)60xFFFF00040x00000004未定義指令中止模式未定義指令10xFFFF00000x00000000管理模式復位優(yōu)先級特定地址(高端)特定地址(低端)工作模式異常類型2023/2/5中國礦業(yè)大學——信電學院——張林76進入異常無論進入異常前處于ARM或Thumb狀態(tài),總在異常對應模式的LR中保存PC值將CPSR復制到適當的SPSR中設置CPSRARM內核在部分異常時置位中斷禁止標志,以防止不受控制的異常嵌套總是在ARM狀態(tài)中處理異常。若在Thumb狀態(tài)下發(fā)生了異常,在異常向量地址裝入PC時,自動切換到ARM狀態(tài)模式位強制設置為與異常類型相對應的值強制PC從相關的異常向量處取指2023/2/5中國礦業(yè)大學——信電學院——張林77退出異常將LR(R14)中的值減去偏移量后存入PC,偏移量根據異常的類型而有所不同恢復CPSR(如將SPSR的值復制回CPSR),即恢復之前CPU狀態(tài)恢復之前中斷屏蔽狀態(tài)恢復之前的CPU模式恢復之前的狀態(tài)標志2023/2/5中國礦業(yè)大學——信電學院——張林78程序AIRQ服務程序系統模式IRQ模式程序寄存器組圖示進入異常過程1.程序在系統模式下運行用戶程序,假定當前處理器狀態(tài)為Thumb狀態(tài)、允許IRQ中斷;2.用戶程序運行時發(fā)生

溫馨提示

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

評論

0/150

提交評論