![本科-嵌入式ARM-第2章ARM7體系結(jié)構(gòu).ppt_第1頁](http://file1.renrendoc.com/fileroot2/2019-11/14/7e5a6196-caf7-4cc4-ba06-75dfda5b96ab/7e5a6196-caf7-4cc4-ba06-75dfda5b96ab1.gif)
![本科-嵌入式ARM-第2章ARM7體系結(jié)構(gòu).ppt_第2頁](http://file1.renrendoc.com/fileroot2/2019-11/14/7e5a6196-caf7-4cc4-ba06-75dfda5b96ab/7e5a6196-caf7-4cc4-ba06-75dfda5b96ab2.gif)
![本科-嵌入式ARM-第2章ARM7體系結(jié)構(gòu).ppt_第3頁](http://file1.renrendoc.com/fileroot2/2019-11/14/7e5a6196-caf7-4cc4-ba06-75dfda5b96ab/7e5a6196-caf7-4cc4-ba06-75dfda5b96ab3.gif)
![本科-嵌入式ARM-第2章ARM7體系結(jié)構(gòu).ppt_第4頁](http://file1.renrendoc.com/fileroot2/2019-11/14/7e5a6196-caf7-4cc4-ba06-75dfda5b96ab/7e5a6196-caf7-4cc4-ba06-75dfda5b96ab4.gif)
![本科-嵌入式ARM-第2章ARM7體系結(jié)構(gòu).ppt_第5頁](http://file1.renrendoc.com/fileroot2/2019-11/14/7e5a6196-caf7-4cc4-ba06-75dfda5b96ab/7e5a6196-caf7-4cc4-ba06-75dfda5b96ab5.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、嵌入式系統(tǒng)結(jié)構(gòu)與操作系統(tǒng),胡威 武漢科技大學(xué)計(jì)算機(jī)學(xué)院,1.ARM簡介 2.ARM7TDMI 3.ARM的模塊、內(nèi)核和功能框圖 4.ARM處理器狀態(tài) 5.ARM處理器模式,ARM7體系結(jié)構(gòu),6.ARM內(nèi)部寄存器 7.當(dāng)前程序狀態(tài)寄存器 8.ARM體系的異常、中斷及其向量表 9.ARM體系的存儲(chǔ)系統(tǒng),2,2.1 ARM簡介,ARM公司簡介,ARM是Advanced RISC Machines的縮寫,它是一家微處理器行業(yè)的知名企業(yè),該企業(yè)設(shè)計(jì)了大量高性能、廉價(jià)、耗能低的RISC (精簡指令集)處理器。 公司的特點(diǎn)是只設(shè)計(jì)芯片,而不生產(chǎn)。它將技術(shù)授權(quán)給世界上許多著名的半導(dǎo)體、軟件和OEM廠商,并提供
2、服務(wù)。,3,2.1 ARM簡介,ARM公司簡介,將技術(shù)授權(quán)給其它芯片廠商,形成各具特色的ARM芯片,4,2.1 ARM簡介,RISC結(jié)構(gòu)特性,RISC是精簡指令集計(jì)算機(jī)的縮寫,其目標(biāo)是設(shè)計(jì)出在高時(shí)鐘頻率下單周期執(zhí)行,簡單而有效的指令集。ARM內(nèi)核采用RISC體系結(jié)構(gòu),因此具有RISC的結(jié)構(gòu)特點(diǎn):,5,2.1 ARM簡介,為了使ARM能夠更好地滿足嵌入式應(yīng)用的需要,ARM體系結(jié)構(gòu)還有以下特點(diǎn):,每條數(shù)據(jù)處理指令可同時(shí)包含算術(shù)邏輯單元(ALU)的運(yùn)算和移位處理,實(shí)現(xiàn)ALU和移位器的最大利用; 使用地址自增和自減的尋址方式優(yōu)化程序循環(huán); 裝載/保存指令對(duì)數(shù)據(jù)的批量傳輸,實(shí)現(xiàn)最大數(shù)據(jù)吞吐量; 大多數(shù)指
3、令的條件執(zhí)行,實(shí)現(xiàn)最快速的代碼執(zhí)行。,ARM體系結(jié)構(gòu),6,2.1 ARM簡介,常用ARM處理器系列,ARM公司開發(fā)了很多系列的ARM處理器核,目前最新的系列是Cortex,而ARM6核以及更早的系列已經(jīng)很罕見了。當(dāng)前應(yīng)用比較多的ARM處理器核系列有:,7,2.1 ARM簡介,ARM Cortex系列簡介,基于ARMv7版本的ARM Cortex系列產(chǎn)品由A、R、M三個(gè)系列組成,具體分類延續(xù)了一直以來ARM面向具體應(yīng)用設(shè)計(jì)CPU的思路。,ARM Cortex,8,2.1 ARM簡介,CortexTM-M3處理器簡介,該處理器是首款基于ARMv7-M架構(gòu)的處理器,采用了純Thumb2指令的執(zhí)行方式
4、,具有極高的運(yùn)算能力和中斷相應(yīng)能力。 Cortex-M3主要應(yīng)用于汽車車身系統(tǒng),工業(yè)控制系統(tǒng)和無線網(wǎng)絡(luò)等對(duì)功耗和成本敏感的嵌入式應(yīng)用領(lǐng)域。目前最便宜的基于該內(nèi)核的ARM單片機(jī)售價(jià)為1美元。,9,2.1 ARM簡介,CortexTM-R4處理器簡介,該處理器是首款基于ARMv7架構(gòu)的高級(jí)嵌入式處理器,其主要目標(biāo)為產(chǎn)量巨大的高級(jí)嵌入式應(yīng)用系統(tǒng),如硬盤,噴墨式打印機(jī),以及汽車安全系統(tǒng)等等。,CortexTM-R4F處理器簡介,該處理器在CortexTM-R4處理器的基礎(chǔ)上加入了代碼錯(cuò)誤校正(ECC)技術(shù),浮點(diǎn)運(yùn)算單元(FPU)以及DMA綜合配置的能力,增強(qiáng)了處理器在存儲(chǔ)器保護(hù)單元、緩存、緊密耦合存儲(chǔ)
5、器、DMA訪問以及調(diào)試方面的能力。,10,2.1 ARM簡介,CortexTM-A8處理器簡介,該處理器是ARM公司所開發(fā)的基于ARMv7架構(gòu)的首款應(yīng)用級(jí)處理器,其特色是運(yùn)用了可增加代碼密度和加強(qiáng)性能的技術(shù)、可支持多媒體以及信號(hào)處理能力的NEONTM技術(shù)、以及能夠支持Java和其他文字代碼語言的提前和即時(shí)編譯的JazelleRTC技術(shù)。 眾多先進(jìn)的技術(shù)使其適用于家電以及電子行業(yè)等各種高端的應(yīng)用領(lǐng)域。,11,2.1 ARM簡介,ARM7系列簡介,該系列包括ARM7TDMI、ARM7TDMI-S、帶有高速緩存處理器宏單元的ARM720T和擴(kuò)充了Jazelle的ARM7EJ-S。該系列處理器提供Th
6、umb 16位壓縮指令集和EmbededICE軟件調(diào)試方式,適用于更大規(guī)模的SoC設(shè)計(jì)中。 ARM7系列廣泛應(yīng)用于多媒體和嵌入式設(shè)備,包括Internet設(shè)備、網(wǎng)絡(luò)和調(diào)制解調(diào)器設(shè)備,以及移動(dòng)電話、PDA等無線設(shè)備。,12,2.1 ARM簡介,該系列包括ARM9TDMI、ARM920T和帶有高速緩存處理器宏單元的ARM940T。除了兼容ARM7系列,而且能夠更加靈活的設(shè)計(jì)。 ARM9系列主要應(yīng)用于引擎管理、儀器儀表、安全系統(tǒng)和機(jī)頂盒等領(lǐng)域。,ARM9系列簡介,13,2.1 ARM簡介,該系列為含有DSP指令集的綜合處理器,包括ARM926EJ-S、帶有高速緩存處理器宏單元的ARM966E-S/A
7、RM946E-S。其內(nèi)核在ARM7處理器內(nèi)核的基礎(chǔ)上使用了Jazelle增強(qiáng)技術(shù),該技術(shù)支持一種新的Java操作狀態(tài),允許在硬件中執(zhí)行Java字節(jié)碼。 ARM9E系列主要應(yīng)用于下一代無線設(shè)備、數(shù)字消費(fèi)品、成像設(shè)備、工業(yè)控制、存儲(chǔ)設(shè)備和網(wǎng)絡(luò)設(shè)備等領(lǐng)域。,ARM9E系列簡介,14,2.1 ARM簡介,ARM10E系列簡介,該系列包括ARM1020E和ARM1020E處理器核,其核心在于使用向量浮點(diǎn)(VFP)單元VFP10提供高性能的浮點(diǎn)解決方案,從而極大提高了處理器的整型和浮點(diǎn)運(yùn)算性能。 可以用于視頻游戲機(jī)和高性能打印機(jī)等場(chǎng)合。,15,2.1 ARM簡介,Xscale簡介,Intel Xscale
8、微控制器則提供全性能、高性價(jià)比、低功耗的解決方案,支持16位Thumb指令并集成數(shù)字信號(hào)處理(DSP)指令。 主要應(yīng)用于手提式通訊和消費(fèi)電子類設(shè)備。,16,1.ARM簡介 2.ARM7TDMI 3.ARM的模塊、內(nèi)核和功能框圖 4.ARM處理器狀態(tài) 5.ARM處理器模式,ARM7體系結(jié)構(gòu),6.ARM內(nèi)部寄存器 7.當(dāng)前程序狀態(tài)寄存器 8.ARM體系的異常、中斷及其向量表 9.ARM體系的存儲(chǔ)系統(tǒng),17,2.2 ARM7TDMI,簡介,ARM7TDMI是基于ARM體系結(jié)構(gòu)V4版本的低端ARM核。 其彌補(bǔ)了ARM6很難在低于5V電壓下穩(wěn)定工作的不足,還增加了后綴所對(duì)應(yīng)的功能:,注意:“ARM核”并
9、非芯片,ARM核與其它部件如RAM、ROM、片內(nèi)外設(shè)組合在一起才能構(gòu)成現(xiàn)實(shí)的芯片。,18,2.2 ARM7TDMI,存儲(chǔ)器的字與半字,從偶數(shù)地址開始的連續(xù)2個(gè)字節(jié)構(gòu)成一個(gè)半字; 以能被4整除的地址開始的連續(xù)4個(gè)字節(jié)構(gòu)成一個(gè)字; ARM指令的長度剛好是一個(gè)字,Thumb指令的長度剛好是一個(gè)半字。,19,2.2 ARM7TDMI,如果一個(gè)數(shù)據(jù)是從偶地址開始的連續(xù)存儲(chǔ),那么它就是半字對(duì)齊,否則就是非半字對(duì)齊; 如果一個(gè)數(shù)據(jù)是以能被4整除的地址開始的連續(xù)存儲(chǔ),那么它就是字對(duì)齊,否則就是非字對(duì)齊。,存儲(chǔ)器的存儲(chǔ)方式,20,2.2 ARM7TDMI,三級(jí)流水線,ARM處理器使用流水線來增加處理器指令流的速
10、度,這樣可使幾個(gè)操作同時(shí)進(jìn)行,并使處理和存儲(chǔ)器系統(tǒng)連續(xù)操作,能提供0.9MIPS/MHz的指令執(zhí)行速度。,ARM7TDMI的流水線分3級(jí),分別為:,取指,譯碼,執(zhí)行,正常操作過程中,在執(zhí)行一條指令的同時(shí)對(duì)下一條(第二條)指令進(jìn)行譯碼,并將第三條指令從存儲(chǔ)器中取出。,在ARM狀態(tài)下,流水線上各指令的地址為:,在Thumb狀態(tài)下,流水線上各指令的地址為:,21,2.2 ARM7TDMI,三級(jí)流水線結(jié)構(gòu)的指令執(zhí)行順序,周期2,周期1,周期3,周期4,處理器執(zhí)行一條指令的三個(gè)階段,22,執(zhí)行ADD PC,PC,#4指令后,PC的值為多少?,2.2 ARM7TDMI,思考題,ADD,程序計(jì)數(shù)器R15(P
11、C)總是指向“正在取指”的指令,而不是指向“正在執(zhí)行”的指令或“正在譯碼”的指令。,一般來說,人們習(xí)慣性約定將“正在執(zhí)行”的指令作為參考點(diǎn),則: PC值當(dāng)前程序執(zhí)行位置8 注:ARM狀態(tài)時(shí),每條指令為4字節(jié)長。,PC指向0 x4000地址,取指ADD指令。,PC指向0 x4004地址,譯碼ADD指令。,PC指向0 x4008地址,執(zhí)行ADD指令,所以指令執(zhí)行的結(jié)果為: PC=PC+40 x400840 x400C。,23,1.ARM簡介 2.ARM7TDMI 3.ARM的模塊、內(nèi)核和功能框圖 4.ARM處理器狀態(tài) 5.ARM處理器模式,ARM7體系結(jié)構(gòu),6.ARM內(nèi)部寄存器 7.當(dāng)前程序狀態(tài)寄
12、存器 8.ARM體系的異常、中斷及其向量表 9.ARM體系的存儲(chǔ)系統(tǒng),24,2.3 ARM模塊框圖,CPU協(xié)處理接口信號(hào),EmbedICE硬件仿真功能模塊,片上調(diào)試系統(tǒng),讀寫總線,25,2.3 ARM內(nèi)核框圖,26,2.3 ARM功能框圖,總線控制,27,1.ARM簡介 2.ARM7TDMI 3.ARM的模塊、內(nèi)核和功能框圖 4.ARM處理器狀態(tài) 5.ARM處理器模式,ARM7體系結(jié)構(gòu),6.ARM內(nèi)部寄存器 7.當(dāng)前程序狀態(tài)寄存器 8.ARM體系的異常、中斷及其向量表 9.ARM體系的存儲(chǔ)系統(tǒng),28,2.4 ARM處理器狀態(tài),處理器狀態(tài),ARM7TDMI處理器內(nèi)核包含2套指令系統(tǒng),分別為ARM
13、指令集和Thumb指令,并且各自對(duì)應(yīng)1種處理器的狀態(tài): ARM狀態(tài):32位,處理器執(zhí)行字方式的ARM指令,處理器默認(rèn)為此狀態(tài); Thumb狀態(tài):16位,處理器執(zhí)行半字方式的Thumb指令。,注意:兩個(gè)狀態(tài)之間的切換并不影響處理器模式或寄存器內(nèi)容。,29,2.4 ARM處理器狀態(tài),狀態(tài)切換的一個(gè)例子,使用BX指令將ARM內(nèi)核的操作狀態(tài)在ARM狀態(tài)和Thumb狀態(tài)之間進(jìn)行切換。,ARM指令集,Thumb 指令集,CODE32 LDRR0, =Lable+1 BX R0 CODE16 Lable MOV R1, #12,CODE16 LDR R0, =Lable BX R0 CODE32 Lable
14、MOV R1, #10,執(zhí)行完BX指令,處理器切換到Thumb狀態(tài),開始執(zhí)行Thumb指令,程序代碼,指令集關(guān)系,從ARM狀態(tài)切換到Thumb狀態(tài)的程序代碼如下:,從Thumb狀態(tài)切換到ARM狀態(tài)的程序代碼如下:,執(zhí)行完BX指令,處理器切換到ARM狀態(tài),開始執(zhí)行ARM指令,30,1.ARM簡介 2.ARM7TDMI 3.ARM的模塊、內(nèi)核和功能框圖 4.ARM處理器狀態(tài) 5.ARM處理器模式,ARM7體系結(jié)構(gòu),6.ARM內(nèi)部寄存器 7.當(dāng)前程序狀態(tài)寄存器 8.ARM體系的異常、中斷及其向量表 9.ARM體系的存儲(chǔ)系統(tǒng),31,2.5 ARM處理器模式,簡介,ARM體系結(jié)構(gòu)支持7種處理器模式,分別
15、為:用戶模式、快中斷模式、中斷模式、管理模式、中止模式、未定義模式和系統(tǒng)模式。這樣的好處是可以更好的支持操作系統(tǒng)并提高工作效率。ARM7TDMI完全支持這七種模式。,32,除用戶模式外,其它模式均為特權(quán)模式。ARM內(nèi)部寄存器和一些片內(nèi)外設(shè)在硬件設(shè)計(jì)上只允許(或者可選為只允許)特權(quán)模式下訪問。此外,特權(quán)模式可以自由的切換處理器模式,而用戶模式不能直接切換到別的模式。,處理器模式,這兩種模式都不能由異常進(jìn)入,想要進(jìn)入必須修改CPSR,而且它們使用完全相同的寄存器組。系統(tǒng)模式是特權(quán)模式,不受用戶模式的限制。操作系統(tǒng)在該模式下訪問用戶模式的寄存器就比較方便,而且操作系統(tǒng)的一些特權(quán)任務(wù)可以使用這個(gè)模式訪
16、問一些受控的資源。,這五種模式稱為異常模式。它們除了可以通過程序切換進(jìn)入外,也可以由特定的異常進(jìn)入。當(dāng)特定的異常出現(xiàn)時(shí),處理器進(jìn)入相應(yīng)的模式。每種異常模式都有一些獨(dú)立的寄存器,以避免異常退出時(shí)用戶模式的狀態(tài)不可靠。,何時(shí)進(jìn)入異常模式,具體規(guī)定如下: 處理器復(fù)位之后進(jìn)入管理模式,操作系統(tǒng)內(nèi)核通常處于管理模式; 當(dāng)處理器訪問存儲(chǔ)器失敗時(shí),進(jìn)入數(shù)據(jù)訪問中止模式; 當(dāng)處理器遇到?jīng)]有定義或不支持的指令時(shí),進(jìn)入未定義模式; 中斷模式與快速中斷模式分別對(duì)ARM處理器2種不同級(jí)別的中斷作出響應(yīng)。,33,1.ARM簡介 2.ARM7TDMI 3.ARM的模塊、內(nèi)核和功能框圖 4.ARM處理器狀態(tài) 5.ARM處理
17、器模式,ARM7體系結(jié)構(gòu),6.ARM內(nèi)部寄存器 7.當(dāng)前程序狀態(tài)寄存器 8.ARM體系的異常、中斷及其向量表 9.ARM體系的存儲(chǔ)系統(tǒng),34,2.6 ARM內(nèi)部寄存器,簡介,在ARM處理器內(nèi)部共有37個(gè)用戶可訪問的寄存器,分別為31個(gè)通用32位寄存器和6個(gè)狀態(tài)寄存器。,ARM處理器共有7種不同的處理器模式,每種模式都有一組相應(yīng)的寄存器組,最多可以18個(gè)活動(dòng)的寄存器。,35,ARM狀態(tài)各模式下的寄存器,所有的37個(gè)寄存器,分成兩大類: 31個(gè)通用32位寄存器; 6個(gè)狀態(tài)寄存器。,36,ARM狀態(tài)各模式下可以訪問的寄存器,37,未分組的通用寄存器,寄存器R0R7為未分組的通用寄存器,它們?cè)谌魏翁幚?/p>
18、器模式都對(duì)應(yīng)于相同的32位物理寄存器。,第一類分組的通用寄存器,寄存器R8R12有兩個(gè)分組的物理寄存器。一個(gè)用于除FIQ模式之外的所有寄存器模式,另一個(gè)用于FIQ模式。,在發(fā)生FIQ中斷后,處理器不必為保護(hù)寄存器而浪費(fèi)時(shí)間,從而加速了FIQ的處理速度。,第二類分組的通用寄存器,寄存器R13、R14分別有6個(gè)分組的物理寄存器。1個(gè)用于用戶和系統(tǒng)模式,其余5個(gè)分別用于5種異常模式。,寄存器R13通常作為堆棧指針(SP),用于保存待使用的寄存器的內(nèi)容。,寄存器R14稱為鏈接寄存器(LR),在結(jié)構(gòu)上有兩個(gè)特殊功能: 當(dāng)使用BL指令調(diào)用子程序時(shí),返回地址將自動(dòng)存入R14中; 當(dāng)發(fā)生異常時(shí),將R14對(duì)應(yīng)的
19、異常模式版本設(shè)置為異常返回地址(有些異常有一個(gè)小的固定偏移量)。,程序計(jì)數(shù)器,寄存器R15稱為程序計(jì)數(shù)器(PC),它指向正在“取指”的指令。,狀態(tài)寄存器,寄存器CPSR為當(dāng)前程序狀態(tài)寄存器,在異常模式中,另外一個(gè)寄存器“程序狀態(tài)保存寄存器(SPSR)”可以被訪問。每種異常都有自己的SPSR,在進(jìn)入異常時(shí)它保存CPSR的當(dāng)前值,異常退出時(shí)可通過它恢復(fù)CPSR。,38,2.6 ARM內(nèi)部寄存器,在Thumb狀態(tài)各模式下實(shí)際訪問的寄存器,Thumb狀態(tài)寄存器集是ARM狀態(tài)集的子集,程序員可以直接訪問的寄存器為: 8個(gè)通用寄存器R0R7; 程序計(jì)數(shù)器(PC); 堆棧指針(SP); 鏈接寄存器(LR);
20、 當(dāng)前程序狀態(tài)寄存器( CPSR)。,39,在Thumb狀態(tài)各模式下的寄存器,未分組的通用寄存器,第二類分組的通用寄存器,在匯編語言中寄存器R0R7為通用寄存器,對(duì)于任何處理器模式,它們中的每一個(gè)都對(duì)應(yīng)于相同的32為物理寄存器。,堆棧指針SP對(duì)應(yīng)ARM狀態(tài)的寄存器R13。每個(gè)異常模式都有其自身的SP分組版本,SP通常指向各異常模式所專用的堆棧。 注意:在發(fā)生異常時(shí),處理器自動(dòng)進(jìn)入ARM狀態(tài)。,鏈接寄存器LR對(duì)應(yīng)ARM狀態(tài)寄存器R14。 注意:在發(fā)生異常時(shí),處理器自動(dòng)進(jìn)入ARM狀態(tài)。,40,ARM狀態(tài),Thumb寄存器在ARM狀態(tài)寄存器上的映射,Thumb狀態(tài),在Thumb狀態(tài)中,高端寄存器的訪
21、問是受到限制的,只有MOV、CMP和ADD指令可以對(duì)其訪問,可以用于數(shù)據(jù)的快速暫存。,41,狀態(tài)切換過程,程序在正常運(yùn)行的過程中,復(fù)位事件產(chǎn)生,導(dǎo)致系統(tǒng)復(fù)位。,42,1.ARM簡介 2.ARM7TDMI 3.ARM的模塊、內(nèi)核和功能框圖 4.ARM處理器狀態(tài) 5.ARM處理器模式,ARM7體系結(jié)構(gòu),6.ARM內(nèi)部寄存器 7.當(dāng)前程序狀態(tài)寄存器 8.ARM體系的異常、中斷及其向量表 9.ARM體系的存儲(chǔ)系統(tǒng),43,2.7 當(dāng)前程序狀態(tài)寄存器,簡介,ARM內(nèi)核包含1個(gè)CPSR和5個(gè)僅供異常處理程序使用的SPSR。CPSR反映當(dāng)前處理器的狀態(tài),其包含: 4個(gè)條件代碼標(biāo)志(負(fù)標(biāo)志N、零標(biāo)志Z、進(jìn)位標(biāo)志
22、C和溢出標(biāo)志V ); 2個(gè)中斷禁止位(IRQ禁止與FIQ禁止); 5個(gè)對(duì)當(dāng)前處理器模式進(jìn)行編碼的位(M4:0); 1個(gè)用于指示當(dāng)前執(zhí)行指令的位(ARM指令還是Thumb指令)。,44,2.7 當(dāng)前程序狀態(tài)寄存器,程序狀態(tài)寄存器的格式,條件代碼標(biāo)志,保留,控制位,溢出標(biāo)志,進(jìn)位或借位擴(kuò)展,零,負(fù)或小于,IRQ禁止,FIQ禁止,狀態(tài)位,模式位,N,Z,C,V,I,T,F,45,2.7 當(dāng)前程序狀態(tài)寄存器,條件代碼標(biāo)志,各標(biāo)志位的含義如下: 負(fù)標(biāo)志N:運(yùn)算結(jié)果的第31位值,記錄標(biāo)志設(shè)置操作的結(jié)果; 零標(biāo)志Z:如果標(biāo)志設(shè)置的操作為0,則置位; 進(jìn)位標(biāo)志C:記錄無符號(hào)加法溢出,減法無借位,循環(huán)移位; 溢
23、出標(biāo)志V:記錄標(biāo)志設(shè)置操作的有符號(hào)溢出。,46,警告:絕對(duì)不要強(qiáng)制改變CPSR寄存器中的控制位T。如果這樣做,處理器將進(jìn)入一個(gè)無法預(yù)測(cè)的狀態(tài)。,2.7 當(dāng)前程序狀態(tài)寄存器,控制位,1、中斷禁止控制位I和F;,2、處理器狀態(tài)位T;,3、處理器模式位M0M4。,注意:不是所有模式位的組合都定義了有效的處理器模式,如果將非法值寫入M4:0中,處理器將進(jìn)入一個(gè)無法恢復(fù)的模式。,47,2.7 當(dāng)前程序狀態(tài)寄存器,保留位,CPSR中的保留位被保留將來使用。當(dāng)改變CPSR標(biāo)志和控制位時(shí),請(qǐng)確認(rèn)沒有改變這些保留位。 另外,請(qǐng)確保您的程序不依賴于包含特定值的保留位,因?yàn)閷淼奶幚砥骺赡軙?huì)將這些位設(shè)置為1或者0。
24、,48,1.ARM簡介 2.ARM7TDMI 3.ARM的模塊、內(nèi)核和功能框圖 4.ARM處理器狀態(tài) 5.ARM處理器模式,ARM7體系結(jié)構(gòu),6.ARM內(nèi)部寄存器 7.當(dāng)前程序狀態(tài)寄存器 8.ARM體系的異常、中斷及其向量表 9.ARM體系的存儲(chǔ)系統(tǒng),49,2.8 ARM體系的異常,異常簡介,只要正常的程序流被暫時(shí)中止,處理器就進(jìn)入異常模式。例如在用戶模式下執(zhí)行程序時(shí),當(dāng)外設(shè)向處理器內(nèi)核發(fā)出中斷請(qǐng)求導(dǎo)致內(nèi)核從用戶模式切換到異常中斷模式。 如果同時(shí)發(fā)生兩個(gè)或更多異常,那么將按照固定的順序來處理異常。,50,異常入口/出口匯總,下表所示為異常返回地址值以及退出異常處理程序所推薦使用的指令。,注意:
25、“MOVS PC,R14_svc”是指在管理模式執(zhí)行MOVS PC,R14 指令,同樣類似的指令還有“MOVS PC,R14_und”、“SUBS PC,R14_abt,#4”等。,51,2.8 ARM體系的異常,異常向量表,注:表中的I和F表示不對(duì)該位有影響,保留原來的值。,52,2.8 ARM體系的異常,異常優(yōu)先級(jí),當(dāng)多個(gè)異常同時(shí)發(fā)生時(shí),一個(gè)固定的優(yōu)先級(jí)決定系統(tǒng)處理它們的順序。,優(yōu) 先 級(jí) 由 高 到 低,53,2.8 ARM體系的異常,異常的進(jìn)入,當(dāng)一個(gè)異常導(dǎo)致模式切換時(shí),內(nèi)核自動(dòng)的做如下處理:,將異常處理程序的返回地址(加固定的偏移量)保存到相應(yīng)異常模式下的LR;,將CPSR的當(dāng)前值保
26、存到相應(yīng)異常模式下的SPSR;,設(shè)置CPSR為相應(yīng)的異常模式;,設(shè)置PC為相應(yīng)異常處理程序的中斷入口向量地址,跳轉(zhuǎn)到相應(yīng)的異常中斷處理程序執(zhí)行;,BackAddr,JumpAddr,UserMode,ExceptionMode,程序代碼正常運(yùn)行在用戶模式下。,54,2.8 ARM體系的異常,異常的進(jìn)入,當(dāng)一個(gè)異常導(dǎo)致模式切換時(shí),內(nèi)核自動(dòng)的做如下處理:,將異常處理程序的返回地址(加固定的偏移量)保存到相應(yīng)異常模式下的LR;,將CPSR的當(dāng)前值保存到相應(yīng)異常模式下的SPSR;,設(shè)置CPSR為相應(yīng)的異常模式;,設(shè)置PC為相應(yīng)異常處理程序的中斷入口向量地址,跳轉(zhuǎn)到相應(yīng)的異常中斷處理程序執(zhí)行;,55,2
27、.8 ARM體系的異常,異常的退出,當(dāng)異常處理程序結(jié)束時(shí),異常處理程序必須:,返回到發(fā)生異常中斷的指令的下一條指令處執(zhí)行,即就是說將LR中的值減去偏移量后移入PC;,將SPSR的值復(fù)制回CPSR;,BackAddr,CurrentAddr,UserMode,ExceptionMode,BackAddrOff,56,2.8 ARM體系的異常,異常的退出,當(dāng)異常處理程序結(jié)束時(shí),異常處理程序必須:,返回到發(fā)生異常中斷的指令的下一條指令處執(zhí)行,即就是說將LR中的值減去偏移量后移入PC;,將SPSR的值復(fù)制回CPSR;,清零在入口處置位的中斷禁止標(biāo)志。,57,2.8 ARM體系的異常,復(fù)位異常,當(dāng)nRE
28、SET信號(hào)被拉低時(shí),ARM處理器放棄正在執(zhí)行的指令,等到nRESET信號(hào)再次變高時(shí),處理器執(zhí)行一下操作:,強(qiáng)制M4:0變?yōu)閎10011,系統(tǒng)進(jìn)入管理模式; 將CPSR中的標(biāo)志位I和F置位,IRQ與FIQ中斷被禁止; 將CPSR中的標(biāo)志位T清零,處理器處于ARM狀態(tài); 強(qiáng)制PC從地址0 x00開始對(duì)下一條指令進(jìn)行取指; 返回到ARM狀態(tài)并恢復(fù)執(zhí)行。,58,2.8 ARM體系的異常,中斷請(qǐng)求異常,只有當(dāng)CPSR中相應(yīng)的中斷屏蔽位被清除時(shí),才可能發(fā)生IRQ異常,中斷請(qǐng)求(IRQ)異常由一個(gè)nIRQ輸入端的低電平所產(chǎn)生的正常中斷。 注:中斷異常產(chǎn)生時(shí),中斷異常模式下的R14保存的是PC的值。,指令1的
29、執(zhí)行不會(huì)中斷;,異常程序結(jié)束時(shí)返回到指令2;,進(jìn)入中斷服務(wù)程序時(shí),指令3地址被保存在R14中。,59,程序運(yùn)行在用戶模式下,當(dāng)一個(gè)IRQ異常中斷發(fā)生時(shí),內(nèi)核切換到“中斷模式”,并自動(dòng)的做如下處理:,2.8 ARM體系的異常,進(jìn)入IRQ異常模式,USR模式,IRQ模式,60,2.8 ARM體系的異常,退出IRQ異常模式,IRQ模式,USR模式,中斷服務(wù)程序執(zhí)行完畢后,系統(tǒng)將通過以下幾步軟件操作返回用戶模式:,61,2.8 ARM體系的異常,快速中斷請(qǐng)求異常,快速中斷請(qǐng)求(FIQ)適用于對(duì)一個(gè)突發(fā)事件的快速響應(yīng),這得益于在ARM狀態(tài)中,快中斷模式有8個(gè)專用的寄存器可用來滿足寄存器保護(hù)的需要(這可以
30、加速上下文切換的速度)。 不管異常入口是來自ARM狀態(tài)還是Thumb狀態(tài),F(xiàn)IQ處理程序都會(huì)通過執(zhí)行下面的指令從中斷返回: SUBS PC,R14_fiq,#4 在一個(gè)特權(quán)模式中,可以通過置位CPSR中的F位來禁止FIQ異常。,62,FIQ中斷的例子,“?”表示該位無關(guān),BackAddr,JumpAddr,1,0,BackAddr-4,Thumb不是一個(gè)完整的體系結(jié)構(gòu),不能指望處理器只執(zhí)行Thumb指令而不支持ARM指令集。 因此,Thumb指令只需要支持通用功能,必要時(shí)可以借助于完善的ARM指令集,比如,所有異常自動(dòng)進(jìn)入ARM狀態(tài)。,在系統(tǒng)模式下運(yùn)行用戶程序,當(dāng)前處理器處于Thumb狀態(tài),執(zhí)
31、行Thumb指令代碼,同時(shí)處理器還允許IRQ和FIQ中斷。,指令1的在執(zhí)行過程產(chǎn)生了FIQ中斷。 注:完成指令1的執(zhí)行后才響應(yīng)中斷。,FIQ中斷相應(yīng)過程中,硬件自動(dòng)執(zhí)行如下動(dòng)作:,將CPSR寄存器內(nèi)容存入IRQ模式的SPSR寄存器,置為F和I(禁止FIQ和IRQ中斷); 清零T位(進(jìn)入ARM狀態(tài)); 設(shè)置MOD位,切換處理器模式至FIQ模式。,將下一條的地址存入FIQ模式的LR寄存器,即指令3的地址。,將跳轉(zhuǎn)地址存入PC,即FIQ中斷服務(wù)函數(shù)的入口地址,實(shí)現(xiàn)跳轉(zhuǎn)。,FIQ中斷服務(wù)程序在ARM狀態(tài)下執(zhí)行現(xiàn)場(chǎng)保護(hù)等操作。,FIQ中斷服務(wù)程序使用BX指令,將處理器從ARM狀態(tài)切換到Thumb狀態(tài),通
32、過置位CPSR的T位實(shí)現(xiàn)。,FIQ中斷服務(wù)程序開始執(zhí)行Thumb指令。,FIQ中斷服務(wù)程序使用BX指令,將處理器從Thumb狀態(tài)切換到ARM狀態(tài),通過清除CPSR的T位實(shí)現(xiàn)。,FIQ中斷服務(wù)程序在ARM狀態(tài)下執(zhí)行恢復(fù)中斷現(xiàn)場(chǎng)等操作。,FIQ中斷異常處理結(jié)束后,異常處理程序完成以下動(dòng)作:,將SPSR寄存器的值復(fù)制回CPSR寄存器;,將LR寄存的值減去一個(gè)常量(FIQ異常為4)后復(fù)制到PC寄存器,跳轉(zhuǎn)到被中斷的用戶程序(指令2的地址)。,63,2.8 ARM體系的異常,未定義的指令異常,未定義指令異常是內(nèi)部異常中斷,當(dāng)ARM處理器遇到一條自己和系統(tǒng)內(nèi)部任何協(xié)處理器都無法執(zhí)行的指令時(shí),就會(huì)發(fā)生未定義
33、指令異常,從而進(jìn)入中斷處理程序,同時(shí)軟件可使用這一機(jī)制通過仿真未定義的協(xié)處理器指令來擴(kuò)展ARM指令集。 在仿真失敗的指令后,捕獲處理器執(zhí)行下面的指令: MOVS PC,R14_und,64,2.8 ARM體系的異常,中止異常,中止表示當(dāng)前對(duì)存儲(chǔ)器的訪問不能被完成,這是由外部ABORT輸入信號(hào)引起的異常中斷。中止類型有2種類型:,預(yù)取指中止:由程序存儲(chǔ)器引起的中止異常; 數(shù)據(jù)中止:由數(shù)據(jù)存儲(chǔ)器引起的中止異常。,65,2.8 ARM體系的異常,預(yù)取指中止,當(dāng)發(fā)生預(yù)取指中止時(shí),ARM內(nèi)核將預(yù)取的指令標(biāo)記為無效,但在指令到達(dá)流水線的執(zhí)行階段時(shí)才進(jìn)入異常。如果指令在流水線中因?yàn)榘l(fā)生分支而沒有被執(zhí)行,中止
34、將不會(huì)發(fā)生。 在處理中止的原因之后,不管處于哪種處理器操作狀態(tài),處理程序都會(huì)執(zhí)行下面的指令恢復(fù)PC和CPSR并重試被中止的指令: SUBS PC,R14_abt,#4,66,2.8 ARM體系的異常,數(shù)據(jù)中止,當(dāng)發(fā)生數(shù)據(jù)中止異常時(shí),異常會(huì)在“導(dǎo)致異常的指令”執(zhí)行后的下一條指令發(fā)生。在這種情況下,理想的狀況是進(jìn)入數(shù)據(jù)中止異常的ISR,然后在內(nèi)存中挑選出問題,再重新執(zhí)行導(dǎo)致異常的指令。 在修復(fù)產(chǎn)生中止的原因后,不管處于哪種處理器操作狀態(tài),處理程序都必須執(zhí)行下面的返回指令 : SUBS PC,R14_abt,#8,67,2.8 ARM體系的異常,軟件中斷異常,軟件中斷異常(SWI)用于進(jìn)入管理模式,通常用于請(qǐng)求一個(gè)特定的管理函數(shù)。SWI處理程序通過執(zhí)行下面的指令返回: MOVS
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 現(xiàn)代服務(wù)業(yè)的全球化進(jìn)程與未來趨勢(shì)預(yù)測(cè)報(bào)告
- 我們的節(jié)日端午節(jié)包粽子活動(dòng)方案
- 生態(tài)城市規(guī)劃中的公園綠地建設(shè)
- 現(xiàn)代物流技術(shù)創(chuàng)新開啟智能化時(shí)代
- 客戶滿意度調(diào)查的解決方案
- 2023六年級(jí)數(shù)學(xué)上冊(cè) 四 圓的周長和面積 1圓的周長 圓的周長公式的拓展應(yīng)用說課稿 冀教版
- 14-2《變形記》(節(jié)選)(說課稿)-2024-2025學(xué)年高一語文下學(xué)期同步教學(xué)說課稿專輯(統(tǒng)編版必修下冊(cè))
- 11 屹立在世界的東方 第1課時(shí) 說課稿-2023-2024學(xué)年道德與法治五年級(jí)下冊(cè)統(tǒng)編版001
- 2023二年級(jí)數(shù)學(xué)上冊(cè) 五 測(cè)量長度 1用厘米作單位量長度第3課時(shí) 用厘米、分米作單位量長度的練習(xí)說課稿 西師大版
- Unit 5 Whose dog is it(說課稿)-2023-2024學(xué)年人教PEP版英語五年級(jí)下冊(cè)
- 房地產(chǎn)調(diào)控政策解讀
- 山東省濟(jì)寧市2025屆高三歷史一輪復(fù)習(xí)高考仿真試卷 含答案
- 五年級(jí)數(shù)學(xué)(小數(shù)乘法)計(jì)算題專項(xiàng)練習(xí)及答案
- 產(chǎn)前診斷室護(hù)理工作總結(jié)
- 2024-2025學(xué)年八年級(jí)數(shù)學(xué)人教版上冊(cè)寒假作業(yè)(綜合復(fù)習(xí)能力提升篇)(含答案)
- 氫氣-安全技術(shù)說明書MSDS
- 《AP內(nèi)容介紹》課件
- 2024年社會(huì)工作者(中級(jí))-社會(huì)綜合能力考試歷年真題可打印
- 初中化學(xué)校本課程
- 科技文獻(xiàn)檢索
- GB/T 18665-2008地理標(biāo)志產(chǎn)品蒙山茶
評(píng)論
0/150
提交評(píng)論