2-ARM-Cortex-M體系結(jié)構(gòu)[66頁]課件_第1頁
2-ARM-Cortex-M體系結(jié)構(gòu)[66頁]課件_第2頁
2-ARM-Cortex-M體系結(jié)構(gòu)[66頁]課件_第3頁
2-ARM-Cortex-M體系結(jié)構(gòu)[66頁]課件_第4頁
2-ARM-Cortex-M體系結(jié)構(gòu)[66頁]課件_第5頁
已閱讀5頁,還剩61頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、第2章 ARM Cortex-M體系結(jié)構(gòu)2.1 ARM Cortex體系概述2.2 Cortex-M4內(nèi)核基礎(chǔ)2.3 存儲器系統(tǒng)2.4異常和中斷習(xí)題2.1 ARM Cortex體系概述2.1 ARM Cortex體系概述ARM公司在經(jīng)典處理器ARM11以后的產(chǎn)品都改用Cortex命名,主要分成A、R和M三類,旨在為各種不同的市場提供服務(wù),A系列處理器面向尖端的基于虛擬內(nèi)存的操作系統(tǒng)和用戶應(yīng)用;R系列處理器針對實時系統(tǒng);M系列處理器針對微控制器。2.1 ARM Cortex體系概述指令的強弱是CPU的重要指標(biāo),指令集是提高微處理器效率的最有效工具之一。從現(xiàn)階段的主流體系結(jié)構(gòu)來講,指令集可分為復(fù)雜

2、指令集(CISC)和精簡指令集(RISC)兩部分。2.1.1 CISC和RISC1CISC機器CISC體系的指令特征為使用微代碼,計算機性能的提高往往是通過增加硬件的復(fù)雜性來獲得的。優(yōu)點:指令豐富,功能強大,尋址方式靈活,能夠有效縮短新指令的微代碼設(shè)計時間,允許設(shè)計師實現(xiàn)CISC體系機器的向上相容。缺點:指令集及晶片的設(shè)計比上一代產(chǎn)品更復(fù)雜,不同的指令需要不同的時鐘周期來完成,執(zhí)行較慢的指令,將影響整臺機器的執(zhí)行效率。2.1 ARM Cortex體系概述2.1.1 CISC和RISC2RISC機器RISC體系的指令特征:RISC包含簡單、基本的指令,這些簡單、基本的指令可以組合成復(fù)雜指令。優(yōu)點

3、:在使用相同的晶片技術(shù)和相同運行時鐘下,RISC系統(tǒng)的運行速度是CISC系統(tǒng)的運行速度的24倍。由于RISC處理器的指令集是精簡的,它的存儲管理單元、浮點單元等都能設(shè)計在同一塊芯片上。缺點:多指令的操作使得程式開發(fā)者必須小心地選用合適的編譯器,而且編寫的代碼量會變得非常大。另外就是RISC處理器需要更快的存儲器,并將其集成于處理器內(nèi)部,如一級緩存(L1 Cache)。2.1 ARM Cortex體系概述2.1.1 CISC和RISC3RISC和CISC比較項目RISCCISC指令系統(tǒng)簡單、精簡復(fù)雜、豐富指令數(shù)目一般小于100條一般大于200條指令格式少多尋址方式少多指令字長基本等長不固定可訪存

4、指令主要是Load/Store不加限制各種指令使用頻率相差不大相差很大各種指令執(zhí)行時間大部分單周期相差很大優(yōu)化編譯實現(xiàn)較容易難表2-1RISC和CISC特點對比2.1 ARM Cortex體系概述1985年,Roger Wilson和Steve Furber設(shè)計了第一代32位、6MHz的處理器,做出了一臺RISC指令集的計算機,簡稱ARM(Acorn RISC Machine)ARM的由來。1990年,Acorn公司正式改組為ARM計算機公司。ARM公司生產(chǎn)的芯片,稱為ARM芯片。ARM公司的業(yè)務(wù)一直是出售IP核。ARM控股的ARM處理器家庭的突出例子包括ARM7, ARM9, ARM11 a

5、nd Cortex-M,Cortex-A系列 。2.1.2 ARM架構(gòu)發(fā)展史ARM推出新款A(yù)RMv8架構(gòu)。包括Cortex-A53、Cortex-A57、 Cortex-A73、 Cortex-A75 、 Cortex-A76等處理器。ARM處理器架構(gòu)發(fā)展進程2.1 ARM系統(tǒng)概述2.1.2 ARM架構(gòu)發(fā)展史2.1 ARM系統(tǒng)概述2.1.3 ARM體系結(jié)構(gòu)類型ARM處理器分為6類:Cortex-A系列處理器、Cortex-R系列處理器、Cortex-M系列處理器、Machine Learning系列處理器、SecurCore系列處理器、Neoverse系列處理器。項目Cortex-A系列處理器

6、Cortex-R系列處理器Cortex-M系列處理器設(shè)計特點高時鐘頻率,長流水線,高性能,對媒體處理支持(NEON指令集擴展)高時鐘頻率,較長的流水線,高確定性(中斷延遲低)較短的流水線,超低功耗系統(tǒng)特性內(nèi)存管理單元(MMU),cache memory,ARM TrustZone安全擴展內(nèi)存保護單元(MPU),cache memory,緊耦合內(nèi)存(TCM)內(nèi)存保護單元(MPU),嵌套向量中斷控制器(NVIC),喚醒中斷控制器(WIC),最新ARM TrustZone安全擴展目標(biāo)市場移動計算、智能手機、高能效服務(wù)器、高端微處理器工業(yè)微控制器、汽車電子、硬盤控制器微控制器、深度嵌入系統(tǒng)(如傳感器、

7、MEMS、混合信號IC、IoT)表2-2Cortex系列處理器的主要特征2.1 ARM系統(tǒng)概述2.1.3 ARM體系結(jié)構(gòu)類型圖2-1Cortex系列處理器發(fā)展歷程簡圖2.1 ARM系統(tǒng)概述2.1.4 Cortex-M系列處理器表2-2Cortex系列處理器的主要特征處理器主要特性Cortex-M0處理器面向低成本,超低功耗的微控制器和深度嵌入應(yīng)用的非常小的處理器(最小12K門電路)Cortex-M0+處理器針對小型嵌入式系統(tǒng)的最高能效的處理器,尺寸大小和編程模式與Cortex-M0處理器相近,但是具有擴展功能,如單周期I/O接口和向量表重定位功能Cortex-M1處理器針對FPGA設(shè)計優(yōu)化的小

8、處理器,利用FPGA上的存儲器塊實現(xiàn)了緊耦合內(nèi)存(TCM)和Cortex-M0處理器有相同的指令集Cortex-M3處理器針對低功耗微控制器設(shè)計的處理器,面積小但是性能強勁,支持可以處理器快速處理復(fù)雜任務(wù)的豐富指令集,具有硬件除法器和乘加指令(MAC)。并且,由于Cortex-M3處理器支持全面的調(diào)試和跟蹤功能,軟件開發(fā)者可以快速地開發(fā)他們的應(yīng)用2.1 ARM系統(tǒng)概述2.1.4 Cortex-M系列處理器表2-2Cortex系列處理器的主要特征-續(xù)處理器主要特性Cortex-M4處理器不但具備Cortex-M3處理器的所有功能,而且擴展了面向數(shù)字信號處理(DSP)的指令集,如單指令多數(shù)據(jù)指令(

9、SMID)和更快的單周期MAC操作。此外,它還有一個可選的支持IEEE754浮點標(biāo)準(zhǔn)的單精度浮點運算單元Cortex-M7處理器針對高端微控制器和數(shù)據(jù)處理密集的應(yīng)用開發(fā)的高性能處理器,具備Cortex-M4處理器支持的所有指令功能,擴展支持雙精度浮點運算,并且具備擴展的存儲器功能,如Cache和緊耦合存儲器(TCM)Cortex-M23處理器面向超低功耗、低成本應(yīng)用設(shè)計的小尺寸處理器,和Cortex-M0處理器相似,但是支持各種增強的指令集和系統(tǒng)層面的功能特性。Cortex-M23處理器還支持TrustZone安全擴展Cortex-M33處理器主流的處理器設(shè)計,與之前的Cortex-M3處理器

10、和Cortex-M4處理器類似,但系統(tǒng)設(shè)計更靈活,能耗比更高效,性能更高。Cortex-M33處理器還支持TrustZone安全擴展2.2 Cortex-M4內(nèi)核基礎(chǔ)2.2 Cortex-M4內(nèi)核基礎(chǔ)Cortex-M4處理器已設(shè)計具有適用于數(shù)字信號控制市場的多種高效信號處理功能。Cortex-M4處理器采用擴展的單周期MAC指令、優(yōu)化的SIMD指令、飽和運算指令和一個可選的單精度浮點單元(FPU)。硬件體系結(jié)構(gòu)單周期16位、32位MAC用于指令提取的32位AHB-Lite接口用于數(shù)據(jù)和調(diào)試訪問的32位AHB-Lite接口大范圍的MAC32位或64位累加選擇指令在單個周期中執(zhí)行單周期SIMD單周

11、期雙16位MAC4路并行8位加法或減法2路并行16位加法或減法指令在單個周期中執(zhí)行2路并行16位MAC32位或64位累加選擇指令在單個周期中執(zhí)行浮點單元其他符合IEEE 754標(biāo)準(zhǔn)單精度浮點單元用于獲得更高精度的融合MAC飽和數(shù)學(xué)桶形移位器表2-4Cortex-M4系列處理器數(shù)字信號處理功能圖2-2Cortex-M4系列微控制器內(nèi)部構(gòu)造基于Cortex-M3/M4的微控制器芯片2.2 Cortex-M4內(nèi)核基礎(chǔ)2.2 Cortex-M4內(nèi)核基礎(chǔ)32-bit微控制器: 32-bit 寄存器組、存儲器接口。哈佛架構(gòu):獨立的指令總線和數(shù)據(jù)總線。存儲空間:4GB。寄存器:寄存器 (R0 到 R15)

12、和 特殊功能寄存器。運行模式:線程模式和處理模式;特權(quán)級和用戶級。中斷和異常:內(nèi)置嵌套向量中斷控制器;支持11 種系統(tǒng)異常外加240 種外部 IRQ??偩€接口:若干總線接口允許 Cortex-M4 同時取指令和取數(shù)據(jù)。MPU:一個可選的存儲器保護單元允許對特權(quán)訪問和用戶程序訪問制定訪問規(guī)則。指令集:Thumb-2 指令集;允許 32位指令和16位指令被同時使用。內(nèi)部調(diào)試組件:提供在線調(diào)試功能,例如:斷點、單步、變量查看。2.2.1 寄存器組r0r12 ,為13個通用目的寄存器 低組寄存器 , r0-r7可以被指定通用寄存器的所有指令訪問 高組寄存器 , r8-r12可以被指定通用寄存器的所有3

13、2位指令訪問 ,16位Thumb指令不能訪問它們,32位的Thumb2指令則不受限制。 2.2 Cortex-M4內(nèi)核基礎(chǔ)1、R0-R122、R13,兩個堆棧指針處理模式線程模式可用 MSP始終使用主堆棧指針(MSP)也可用進程堆棧指針(PSP)2.2 Cortex-M4內(nèi)核基礎(chǔ)主堆棧和進程堆棧Cortex-M3內(nèi)核有兩個堆棧指針:MSP和PSP結(jié)束復(fù)位后,所有代碼都使用主堆棧 所有異常都使用主堆棧 異常處理程序(例如SVC)可以通過改變其在退出時使用的EXC_RETURN值來改變線程模式使用的堆棧。在線程模式中,使用MSR指令對CONTROL1執(zhí)行寫操作也可以從主堆棧切換到進程堆棧。 堆棧指

14、針r13是分組寄存器,在SP_main和SP_process之間切換。在任何時候,進程堆棧和主堆棧中只有一個是可見的,由r13指示。 2.2 Cortex-M4內(nèi)核基礎(chǔ)2、R13,兩個堆棧指針堆棧與微控制器模式的對應(yīng)關(guān)系2.2 Cortex-M4內(nèi)核基礎(chǔ)通過MSR指令修改CONTROL1進行堆棧切換CONTROL1主堆棧進程堆棧10控制寄存器的第1位一般通過中斷返回進行堆棧切換,MSR指令切換用的極少。2、R13,兩個堆棧指針CONTROL 1 = 0: 使用MSP線程模式 handler模式 線程模式(使用MSP) (使用MSP) (使用MSP)線程模式 handler模式 線程模式(使用P

15、SP) (使用MSP) (使用PSP)CONTROL 1 = 1: 線程模式使用PSPHandler模式使用MSP2.2 Cortex-M4內(nèi)核基礎(chǔ)2、R13,兩個堆棧指針int main ( ) . delay( ); SetLED1( );void delay( ) .BL delaydelay: . BX LR .0X20F00X20F4地址0X10F40X10F4執(zhí)行BL指令,LR的值同時更新(0X20F4)2.2 Cortex-M4內(nèi)核基礎(chǔ)3、鏈接寄存器(LR)C代碼匯編代碼程序計數(shù)器 (PC)程序計數(shù)器 總是指向正在取指的指令。該寄存器的位0始終為0,因此,指令始終與字或半字邊界對

16、齊。 2.2 Cortex-M4內(nèi)核基礎(chǔ)4、 程序寄存器(PC)R15 是程序計數(shù)器??梢栽趨R編語言中通過R15或PC訪問。2.2 Cortex-M4內(nèi)核基礎(chǔ)2.2.2 堆棧操作1棧的作用(1)用于在正在執(zhí)行的函數(shù)需要使用寄存器(寄存器組)進行數(shù)據(jù)處理時,臨時存儲數(shù)據(jù)的初始值,這些數(shù)據(jù)在函數(shù)結(jié)束時可以被恢復(fù)出來,以免調(diào)用函數(shù)的程序丟失數(shù)據(jù)。(2)用于函數(shù)或子程序中的信息傳遞。(3)用于存儲局部變量。(4)用于在中斷等異常產(chǎn)生時保存處理器狀態(tài)和寄存器數(shù)值。 滿遞減堆棧。 滿遞增堆棧。 空遞增堆棧。 空遞減堆棧。四種類型:2.2 Cortex-M4內(nèi)核基礎(chǔ)默認(rèn):滿遞減堆棧2、入棧3、出棧2.2.2

17、 堆棧操作鏈接寄存器 (LR) 在執(zhí)行分支(branch)和鏈接(BL)指令或帶有交換的分支和鏈接指令(BLX)時,LR用于保存PC的返回地址。 主要用于保存子程序的 返回地址。 LR也用于異常返回。 2.2 Cortex-M4內(nèi)核基礎(chǔ)3、 鏈接寄存器(LR)2.2.3 特殊功能寄存器2.2 Cortex-M4內(nèi)核基礎(chǔ)在Cortex-M3/M4處理器中的特殊寄存器包括: 1. 程序狀態(tài)寄存器 (PSRs)2. 中斷屏蔽寄存器(PRIMASK, FAULTMASK, and BASEPRI)3. 控制寄存器 (CONTROL)1 程序狀態(tài)寄存器 (PSRs)313029282726:252423

18、:2019:1615:10987654:0 xPSRNZCVQICI/ITTICI/ITException No.313029282726:252423:2019:1615:10987654:0APSRNZCVQIPSRException No.EPSRICI/ITTICI/IT2.2 Cortex-M4內(nèi)核基礎(chǔ)程序狀態(tài)寄存器可以分為三個狀態(tài)寄存器:1. 應(yīng)用 PSR (APSR) 負(fù)、零、進/借、溢、飽和(用于飽和運算)2. 中斷 PSR (IPSR)3. 執(zhí)行 PSR (EPSR) ICI/IT: ICI指令/IT指令狀態(tài)位;T總為12 中斷屏蔽寄存器PRIMASK、FAULTMASK 和

19、 BASEPRI用來開放/禁用異常Cortex-M3/M4 中斷屏蔽寄存器寄存器名描 述PRIMASK一個1-bit 寄存器。1:僅允許NMI 和硬件默認(rèn)異常,所有其他的中斷和異常將被屏蔽;0:開放中斷FAULTMASK一個1-bit 寄存器。1:僅允許NMI, 所有中斷和默認(rèn)異常處理包括硬件異常被忽略。BASEPRI一個9位寄存器。它定義了屏蔽優(yōu)先級。 當(dāng)設(shè)置為某值時, 所有大于或等于該值的中斷被屏蔽(值越大,優(yōu)先級越低)。全為0(默認(rèn)值):不屏蔽任何中斷。2.2 Cortex-M4內(nèi)核基礎(chǔ)3 控制寄存器Cortex-M3/M4 控制寄存器位功能CONTROL1堆棧指針選擇0=選擇主堆棧指針

20、MSP(復(fù)位后缺省值)1=選擇進程堆棧指針PSP在線程或基礎(chǔ)級(沒有在響應(yīng)異常),可以使用PSP。在handler 模式下,只允許使用MSP,所以此時不得往該位寫1。CONTROL00=特權(quán)級的線程模式1=用戶級的線程模式handler 模式永遠(yuǎn)都是特權(quán)級的。2.2 Cortex-M4內(nèi)核基礎(chǔ)被用來定義特權(quán)級和堆棧指針的選擇。這個寄存器有兩位。特權(quán)級用戶級主堆棧進程堆棧2.3.4 操作模式兩種模式和兩種特權(quán)等級。操作模式?jīng)Q定控制器運行正常程序或運行異常處理程序。特權(quán)用戶當(dāng)運行一個異常(中斷)程序處理者模式錯誤的用法當(dāng)運行主應(yīng)用程序線程模式線程模式在Cortex-M3/M4中的操作模式和權(quán)限級別

21、特權(quán)級別提供了一種機制來保障訪問存儲器的關(guān)鍵區(qū)域,同時還提供了一個基本的安全模式。通過寫Control register0=1,軟件在特權(quán)訪問級別可以使程序轉(zhuǎn)換到用戶訪問級別。 用戶程序不能夠通過寫控制寄存器直接變回特權(quán)狀態(tài)。它要經(jīng)過一個異常處理程序設(shè)置Control register0=0使得處理器切換回特權(quán)訪問級別。2.2 Cortex-M4內(nèi)核基礎(chǔ)特權(quán)級用戶級線程模式處理器模式工作模式和特權(quán)級別處理器模式線程模式特權(quán)級用戶級始終特權(quán)級工作模式用于區(qū)別普通應(yīng)用程序的代碼和異常服務(wù)例程的代碼(包括中斷服務(wù)例程的代碼)特權(quán)級別可以提供一種存儲器訪問的保護機制,使得普通的用戶程序代碼不能意外地,

22、甚至是惡意地執(zhí)行涉及到要害的操作。2.2 Cortex-M4內(nèi)核基礎(chǔ)2.3.4 操作模式特權(quán)執(zhí)行可以訪問所有資源。 非特權(quán)執(zhí)行時對有些資源的訪問受到限制或不允許訪問。特權(quán)訪問和用戶訪問(非特權(quán)訪問)的區(qū)別用戶訪問特權(quán)訪問2.2 Cortex-M4內(nèi)核基礎(chǔ)1 特權(quán)級別線程模式線程模式和處理器模式 處理器模式在復(fù)位時控制器進入線程模式異常返回時控制器進入線程模式特權(quán)和用戶(非特權(quán))代碼能夠在線程模式下運行出現(xiàn)異常時控制器進入處理器模式在處理器模式中,所有代碼都是特權(quán)訪問的2 工作模式2.2 Cortex-M4內(nèi)核基礎(chǔ)CONTROL0特權(quán)訪問用戶訪問10控制寄存器的第0位3 特權(quán)級和工作模式轉(zhuǎn)換2.

23、2 Cortex-M4內(nèi)核基礎(chǔ)工作模式狀態(tài)轉(zhuǎn)換特權(quán)模式下通過MSR指令修改CONTROL0狀態(tài)3 特權(quán)級和工作模式轉(zhuǎn)換2.2 Cortex-M4內(nèi)核基礎(chǔ)當(dāng)CONTROL0=0 時,在異常處理的始末,只發(fā)生了工作模式的轉(zhuǎn)換。線程模式 handler模式 線程模式(特權(quán)級) (特權(quán)級) (特權(quán)級)線程模式 handler模式 線程模式(用戶級) (特權(quán)級) (用戶級)若CONTROL0=1(線程模式+用戶級),則在中斷響應(yīng)的始末,工作模式和特權(quán)等極都要發(fā)生變化。2.2 Cortex-M4內(nèi)核基礎(chǔ)3 特權(quán)級和工作模式轉(zhuǎn)換2.3 存儲器系統(tǒng)2.3 存儲器系統(tǒng)Cortex-M4內(nèi)核的存儲器系統(tǒng)的主要特性

24、如下:(1)可尋址4GB線性地址物理空間。(2)支持小端和大端的存儲器系統(tǒng)。Cortex-M4處理器可以選擇使用小端或者大端的存儲器系統(tǒng)。(3)位段訪問。(4)寫緩沖。對可緩沖存儲器區(qū)域?qū)懖僮餍枰ㄙM幾個周期時間,Cortex-M4處理器的寫緩沖可以把寫操作緩存起來,因此處理器可以繼續(xù)執(zhí)行下一條指令,從而提高了程序的執(zhí)行速度。(5)存儲器保護單元(MPU)。MPU定義了各存儲器區(qū)域的訪問權(quán)限,且為可編程。Cortex-M4處理器中的MPU支持8個可編程區(qū)域,可在嵌入式操作系統(tǒng)中提高系統(tǒng)的健壯性。Cortex-M4處理器中的MPU是可選的。多數(shù)應(yīng)用不會用到MPU,可以忽略。(6)非對齊傳輸支持。

25、ARMv7-M架構(gòu)的所有處理器(包括Cortex-M4處理器)支持非對齊傳輸。2 存儲器格式字節(jié)字節(jié)字節(jié)字節(jié)A+3A+2A+1A存儲器半字半字字Cortex-M4處理器支持以下數(shù)據(jù)類型:32位字、16位半字、8位字節(jié)。2.3 存儲器系統(tǒng)2.3.1 數(shù)據(jù)類型存儲器介質(zhì):RAM: SRAM和DRAMROM: ROM、PROM、EPROM、EEPROMFLASH: NOR FLASH、NAND FLASH2 存儲器格式字節(jié)字節(jié)字節(jié)字節(jié)A+3A+2A+1A存儲器半字半字字存儲器介質(zhì)RAM SRAM和DRAMROM ROM、PROM、EPROM、EEPROMFLASH NOR FLASH、NAND FL

26、ASH2.3 存儲器系統(tǒng)小端存儲A+3A+2A+1A存儲器0 x120 x340 x560 x78A+3A+2A+1A存儲器0 x780 x560 x340 x122.3 存儲器系統(tǒng)大端存儲0 x12345678存儲器地址存儲器地址2.3.2 存儲形式Cortex-M4 處理器有一個固定的存儲映射。這一點極大地方便了軟件在各種M4 微控制器間的移植。例:各款M4微控制器的NVIC 和MPU 都在相同的位置布設(shè)寄存器,使得它們變得通用。2.3.3 存儲器映射2.3 存儲器系統(tǒng)Block0Block1Block2Block3-4Block5-6Block7Cortex-M4支持位帶操作,可以使用普

27、通的加載/存儲指令來對單一的比特進行讀寫。在Cortex-M4中,有兩個區(qū)中實現(xiàn)了位帶:(1)SRAM區(qū)的最低1MB范圍(0 x200000000 x20100000)。(2)片內(nèi)外設(shè)區(qū)的最低1MB范圍(0 x400000000 x40100000)。這兩個區(qū)中的地址除了可以像普通的RAM 一樣使用外,它們還都有自己的“位帶別名區(qū)”,位帶別名區(qū)把每個比特膨脹成一個32 位的字。(1)32MB SRAM位帶別名區(qū)(0 x220000000 x23FFFFFF)。(2)32MB外設(shè)位帶別名區(qū)(0 x420000000 x43FFFFFF)。它們可以通過一個單獨的被稱為bit-band alias的

28、存儲區(qū)域被訪問。2.3 存儲器系統(tǒng)2.3.4 位帶區(qū)位通過Bit-Band Alias訪問Bit-Band Region 2.3 存儲器系統(tǒng)位帶別名區(qū)SRAM位帶區(qū)位帶別名區(qū)中的字與位帶區(qū)的位映射公式bit_word_addr = bit_band_base + (byte_offset x 32) + bit_number 42.3 存儲器系統(tǒng)例如:SRAM 位帶區(qū)中地址為 0 x20000300 的字節(jié)中的位 2 被映射到別名區(qū)中的地址為:0 x22006008(= 0 x22000000 + (0 x300*32) + (2*4))的字。76543210位帶區(qū)別名區(qū)一個存儲單元的8個位一

29、個字(4個字節(jié))0 x200003000 x22006008一個字(4個字節(jié))0 x22006004SRAM 區(qū)域的Bit-Band 地址重映射外設(shè)存儲區(qū) Bit-Band 地址重映射 Bit-Band 區(qū)域 別名等效0 x20000000 bit00 x22000000 bit00 x20000000 bit10 x22000004 bit00 x20000000 bit20 x22000008 bit00 x20000000 bit310 x2200007C bit00 x20000004 bit00 x22000080 bit00 x20000004 bit310 x220000FC b

30、it00 x200FFFFC bit310 x23FFFFFC bit0Bit-Band 區(qū)域 別名等效0 x40000000 bit00 x42000000 bit00 x40000000 bit10 x42000004 bit00 x40000000 bit20 x42000008 bit00 x40000000 bit310 x4200007C bit00 x40000004 bit00 x42000080 bit00 x40000004 bit310 x420000FC bit00 x400FFFFC bit310 x43FFFFFC bit02.3 存儲器系統(tǒng)#define BITB

31、AND(addr, bitnum) (addr &0 xF0000000)+0 x2000000+(addr &0 xFFFFF)5)+(bitnum2)#define MEM_ADDR(addr) *(volatile unsigned int*)(adr)MEM_ADDR(BITBAND(DEVICE_REG0,1) = 0 x1;2.3 存儲器系統(tǒng)C語言中宏定義位帶操作位帶操作定義:位帶操作定義:#define DEVICE_REG0 0 x40000000(將單元0 x40000000的1位置位)*(volatile unsigned int*) (0 x40000000) |= (0

32、 x000000011);普通操作(讀修改寫):2.4 異常和中斷中斷:請求信號來自于CM4內(nèi)核外面,來自片上外設(shè)或外擴的外設(shè);異常:是由于CM4內(nèi)核的活動而產(chǎn)生的 。只要正常的程序被暫時中止,微控制器就進入處理器模式。包括復(fù)位、系統(tǒng)故障、中斷等事件。2.4 異常和中斷圖2-15異常和中斷程序狀態(tài)切換圖異常和中斷的作用是指示系統(tǒng)中的某個地方發(fā)生一些事件,需要引起處理器(包括正在執(zhí)行的程序和任務(wù))的注意。當(dāng)中斷和異常發(fā)生時,典型的結(jié)果是迫使處理器將控制從當(dāng)前正在執(zhí)行的程序或任務(wù)轉(zhuǎn)移到另一個例程或任務(wù)中,該例程叫作中斷服務(wù)程序(ISR),或者異常處理程序。2.4 異常和中斷2.4.1 向量表異常類

33、型位置位移向量優(yōu)先級描述N/A00 x0000初始堆棧指針值N/A在復(fù)位時棧頂從向量表的第一個入口加載復(fù)位10 x0004重置-3(高)在上電和熱復(fù)位時調(diào)用;在第一條指令上優(yōu)先級下降到低(線程模式);是異步的不可屏蔽的中斷20 x0008NMI-2可以通過一個外設(shè)或由軟件觸發(fā)發(fā)出信號;不能被除復(fù)位之外的任何異常停止或占先;是異步的硬故障30 x000C硬故障-1異常處理期間有錯誤的異常,或者因為異常不能被任何異常機制管理;是同步的存儲器管理40 x0010內(nèi)存管理故障可調(diào)整MPU不匹配,包括違反訪問規(guī)范及不匹配;即使MPU被禁止或不存在,也可以用它來支持默認(rèn)的存儲器映射的XN區(qū)域;是同步的總線

34、故障50 x0014總線故障可調(diào)整預(yù)取故障、存儲器訪問故障,以及其他相關(guān)的地址/存儲故障;精確時是同步的,不精確時是異步的使用故障60 x0018應(yīng)用故障可調(diào)整使用故障,如執(zhí)行未定義的指令或嘗試不合法的狀態(tài)轉(zhuǎn)換;是同步的表2-11異常類型表2.4 異常和中斷2.4.1 向量表異常類型位置位移向量優(yōu)先級描述N/A7:10N/A重置N/A保留SVCall11N/ASVCall可調(diào)整利用SVC指令調(diào)用系統(tǒng)服務(wù),在操作系統(tǒng)環(huán)境下,應(yīng)用程序可以使用SVC指令來訪問操作系統(tǒng)內(nèi)核函數(shù)和器件驅(qū)動;是同步的調(diào)試監(jiān)控12N/A保留可調(diào)整調(diào)試監(jiān)控,在處理器沒有停止時出現(xiàn);是同步的,但只在使能時是有效的;如果它的優(yōu)先

35、級比當(dāng)前有效的異常的優(yōu)先級要低,則不能被激活13N/A保留N/A保留PendSV14N/APendSV可調(diào)整可掛起的系統(tǒng)服務(wù)請求;在操作系統(tǒng)環(huán)境下,使用PendSV作為背景切換時,沒有其他異?;顒樱皇钱惒降?,只能由軟件來實現(xiàn)掛起SysTick150 x0038SysTick可調(diào)整當(dāng)系統(tǒng)定時器達到零產(chǎn)生,軟件也可以生成一個SysTick異常;在操作系統(tǒng)環(huán)境下,處理器可以使用該異常作為系統(tǒng)時鐘;是異步的表2-11異常類型表-續(xù)12.4 異常和中斷2.4.1 向量表表2-11異常類型表-續(xù)2異常類型位置位移向量優(yōu)先級描述外部中斷16及以上0 x003CIRQ0可調(diào)整在內(nèi)核的外部產(chǎn)生,外圍信號或者通過

36、軟件請求生成。INTISR239:0,通過NVIC(設(shè)置優(yōu)先級)輸入,都是異步的0 x0040IRQ10 x0044IRQ20 x0048IRQ30 x004CIRQ42.4.2優(yōu)先級2.4 異常和中斷1優(yōu)先級概述所有異常都有其相關(guān)的優(yōu)先級,具有以下特點。(1)一個較低的優(yōu)先級值,表示較高的優(yōu)先級;(2)可配置的優(yōu)先事項為除復(fù)位、硬件復(fù)位和NMI處的所有異常。在處理器的異常模型中,優(yōu)先級決定了處理器何時及怎樣處理異常。優(yōu)先級分兩組,搶占優(yōu)先級和響應(yīng)優(yōu)先級,程序能夠指定中斷的優(yōu)先級。NVIC支持由軟件指定的優(yōu)先級,可以將中斷的優(yōu)先級指定為0255。硬件優(yōu)先級隨著中斷號的增加而降低,0優(yōu)先級高,2

37、55優(yōu)先級低。指定軟件優(yōu)先級后,硬件優(yōu)先級無效。2.4.2優(yōu)先級2.4 異常和中斷2優(yōu)先級分組為了對具有大量中斷的系統(tǒng)加強優(yōu)先級控制,NVIC支持優(yōu)先級分組機制,分為搶占優(yōu)先級區(qū)和響應(yīng)優(yōu)先區(qū)。分組位置表示搶占優(yōu)先級的位段表示亞優(yōu)先級的位段07:10:017:21:027:32:037:43:047:54:057:65:067:76:07無7:0(所有位)表2-13搶占優(yōu)先級和亞優(yōu)先級的表達位數(shù)與分組位置的關(guān)系2.4.2優(yōu)先級2.4 異常和中斷在大多數(shù)實際微控制器中只用到了部分優(yōu)先級分組。例如,在STM32F429微控制器中對應(yīng)于中斷的8位優(yōu)先級寄存器(IP)只用到高4位,而低4位保留。這樣優(yōu)先

38、級分組的值只能設(shè)置為37。下面通過一個例子來加深對優(yōu)先級分組的應(yīng)用。圖2-16STM32F429微控制器搶占優(yōu)先級和次優(yōu)先級在優(yōu)先級寄存器中的位數(shù)關(guān)系假設(shè)將STM32F429微控制器優(yōu)先級分組的值設(shè)置為4(從bit 4處分組,57位是占先優(yōu)先級,04位是次優(yōu)先級,但是03位保留不用),則可得到3級搶占優(yōu)先級,且在每個搶占優(yōu)先級的內(nèi)部有1個次優(yōu)先級。STM32F429微控制器搶占優(yōu)先級和次優(yōu)先級在優(yōu)先級寄存器中的位數(shù)關(guān)系如圖2-16所示。2.4.3響應(yīng)過程注意:LR的值被從新定義并非進入異常程序的地址2.4 異常和中斷1、 響應(yīng)流程2.4.3響應(yīng)過程2.4 異常和中斷2退出異常步驟(1)根據(jù)EXC_RETURN指示的堆棧,彈出進入中斷時被壓棧的八個寄存器。(2)從剛出棧的IPSR寄存器8:0位檢測恢復(fù)到

溫馨提示

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

評論

0/150

提交評論