![嵌入式硬件系統(tǒng)原理:第五章 Cortex-M3原理_第1頁](http://file4.renrendoc.com/view/39650b01803dcf666326b0b4d678c274/39650b01803dcf666326b0b4d678c2741.gif)
![嵌入式硬件系統(tǒng)原理:第五章 Cortex-M3原理_第2頁](http://file4.renrendoc.com/view/39650b01803dcf666326b0b4d678c274/39650b01803dcf666326b0b4d678c2742.gif)
![嵌入式硬件系統(tǒng)原理:第五章 Cortex-M3原理_第3頁](http://file4.renrendoc.com/view/39650b01803dcf666326b0b4d678c274/39650b01803dcf666326b0b4d678c2743.gif)
![嵌入式硬件系統(tǒng)原理:第五章 Cortex-M3原理_第4頁](http://file4.renrendoc.com/view/39650b01803dcf666326b0b4d678c274/39650b01803dcf666326b0b4d678c2744.gif)
![嵌入式硬件系統(tǒng)原理:第五章 Cortex-M3原理_第5頁](http://file4.renrendoc.com/view/39650b01803dcf666326b0b4d678c274/39650b01803dcf666326b0b4d678c2745.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
第5章Cortex-M3體系結(jié)構(gòu)第5章目錄1.簡介2.Cortex-M33.Cortex-M3的模塊和內(nèi)部框圖4.體系結(jié)構(gòu)直接支持的數(shù)據(jù)類型5.處理器狀態(tài)6.處理器模式7.內(nèi)部寄存器8.程序狀態(tài)寄存器9.異常與中斷10.復(fù)位12.存儲(chǔ)器及存儲(chǔ)器映射I/O13.尋址方式簡介14.CM3指令簡介15.協(xié)處理器接口16.ETM接口簡介第5章目錄1.簡介2.Cortex-M33.Cortex-M3的模塊和內(nèi)部框圖4.體系結(jié)構(gòu)直接支持的數(shù)據(jù)類型5.處理器狀態(tài)6.處理器模式7.內(nèi)部寄存器8.程序狀態(tài)寄存器9.異常與中斷復(fù)位12.存儲(chǔ)器及存儲(chǔ)器映射I/O13.尋址方式簡介14.CM3指令簡介15.協(xié)處理器接口16.ETM接口簡介5.1ARM簡介ARM公司簡介
ARM是AdvancedRISCMachines的縮寫,它是一家微處理器行業(yè)的知名企業(yè),該企業(yè)設(shè)計(jì)了大量高性能、廉價(jià)、耗能低的RISC(精簡指令集)處理器。公司的特點(diǎn)是只設(shè)計(jì)芯片,而不生產(chǎn)。它將技術(shù)授權(quán)給世界上許多著名的半導(dǎo)體、軟件和OEM廠商,并提供服務(wù)。5.1ARM簡介ARM公司簡介將技術(shù)授權(quán)給其它芯片廠商形成各具特色的ARM芯片...5.1ARM簡介5.1ARM簡介ARM體系結(jié)構(gòu)
ARM處理器為RISC芯片,其簡單的結(jié)構(gòu)使ARM內(nèi)核非常小,這使得器件的功耗也非常低。它具有經(jīng)典RISC的特點(diǎn):大的、統(tǒng)一的寄存器文件;裝載/保存結(jié)構(gòu),數(shù)據(jù)處理操作只針對(duì)寄存器的內(nèi)容,而不直接對(duì)存儲(chǔ)器進(jìn)行操作;簡單的尋址模式;統(tǒng)一和固定長度的指令域,簡化了指令的譯碼。5.1ARM簡介ARM體系結(jié)構(gòu)ARM體系結(jié)構(gòu)的特點(diǎn):每條數(shù)據(jù)處理指令都對(duì)算術(shù)邏輯單元和移位器控制,以實(shí)現(xiàn)ALU和移位器的最大利用;地址自動(dòng)增加和減少尋址模式,優(yōu)化程序循環(huán);多寄存器裝載和存儲(chǔ)指令實(shí)現(xiàn)最大數(shù)據(jù)吞吐量;所有指令的條件執(zhí)行實(shí)現(xiàn)最快速的代碼執(zhí)行。5.1ARM簡介各ARM體系結(jié)構(gòu)版本
ARM體系結(jié)構(gòu)從最初開發(fā)到現(xiàn)在有了巨大的改進(jìn),并仍在完善和發(fā)展。為了清楚的表達(dá)每個(gè)ARM應(yīng)用實(shí)例所使用的指令集,ARM公司定義了7種主要的ARM指令集體系結(jié)構(gòu)版本,以版本號(hào)V1~V7表示。5.1ARM簡介各ARM體系結(jié)構(gòu)版本——V1該版本的ARM體系結(jié)構(gòu),只有26位的尋址空間,沒有商業(yè)化,其特點(diǎn)為:基本的數(shù)據(jù)處理指令(不包括乘法);字節(jié)、字和半字加載/存儲(chǔ)指令;具有分支指令,包括在子程序調(diào)用中使用的分支和鏈接指令;在操作系統(tǒng)調(diào)用中使用的軟件中斷指令。5.1ARM簡介各ARM體系結(jié)構(gòu)版本——V2
同樣為26位尋址空間,現(xiàn)在已經(jīng)廢棄不再使用,它相對(duì)V1版本有以下改進(jìn):具有乘法和乘加指令;支持協(xié)處理器;快速中斷模式中的兩個(gè)以上的分組寄存器;具有原子性加載/存儲(chǔ)指令SWP和SWPB。5.1ARM簡介各ARM體系結(jié)構(gòu)版本——V3
尋址范圍擴(kuò)展到32位(事實(shí)上也基本廢棄),具有獨(dú)立的程序:具有乘法和乘加指令;支持協(xié)處理器;快速中斷模式中具有的兩個(gè)以上的分組寄存器;具有原子性加載/存儲(chǔ)指令SWP和SWPB。5.1ARM簡介各ARM體系結(jié)構(gòu)版本——V4
不再為了與以前的版本兼容而刻意支持26位體系結(jié)構(gòu),并明確了哪些指令會(huì)引起未定義指令異常發(fā)生,它相對(duì)V3版本作了以下的改進(jìn):半字加載/存儲(chǔ)指令;字節(jié)和半字的加載和符號(hào)擴(kuò)展指令;具有可以轉(zhuǎn)換到Thumb狀態(tài)的指令;用戶模式寄存器的新的特權(quán)處理器模式。5.1ARM簡介各ARM體系結(jié)構(gòu)版本——V5
在V4版的基礎(chǔ)上,對(duì)指令的定義進(jìn)行了必要的修正,對(duì)V4版本的體系結(jié)構(gòu)進(jìn)行了擴(kuò)展并增加了如下指令:改進(jìn)了ARM/Thumb狀態(tài)之間的切換效率;允許非T變量和T變量一樣,使用相同的代碼生成技術(shù);增加計(jì)數(shù)前導(dǎo)零指令和軟件斷點(diǎn)指令;對(duì)乘法指令如何設(shè)置標(biāo)志作了嚴(yán)格的定義。5.1ARM簡介ARM處理器核簡介——ARM7
該系列包括ARM7TDMI、ARM7TDMI-S、帶有高速緩存處理器宏單元的ARM720T和擴(kuò)充了Jazelle的ARM7EJ-S。該系列處理器提供Thumb16位壓縮指令集和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è)備。5.1ARM簡介ARM處理器核簡介——ARM9
該系列包括ARM9TDMI、ARM920T和帶有告訴緩存處理器宏單元的ARM940T。除了兼容ARM7系列,而且能夠更加靈活的設(shè)計(jì)。
ARM9系列主要應(yīng)用于引擎管理、儀器儀表、安全系統(tǒng)和機(jī)頂盒等領(lǐng)域。5.1ARM簡介ARM處理器核簡介——ARM10該系列包括ARM1020E和ARM1020E處理器核,其核心在于使用向量浮點(diǎn)(VFP)單元VFP10提供高性能的浮點(diǎn)解決方案,從而極大提高了處理器的整型和浮點(diǎn)運(yùn)算性能??梢杂糜谝曨l游戲機(jī)和高性能打印機(jī)等場合。5.1ARM簡介ARM處理器核簡介——SecurCore
該系列涵蓋了SC100、SC110、SC200和SC210處理核。該系列處理器主要針對(duì)新興的安全市場,以一種全新的安全處理器設(shè)計(jì)為智能卡和其它安全I(xiàn)C開發(fā)提供獨(dú)特的32位系統(tǒng)設(shè)計(jì),并具有特定反偽造方法,從而有助于防止對(duì)硬件和軟件的盜版。5.1ARM簡介ARM處理器核簡介——Xscale
IntelXscale微控制器則提供全性能、高性價(jià)比、低功耗的解決方案,支持16位Thumb指令并集成數(shù)字信號(hào)處理(DSP)指令。5.1ARM簡介ARM處理器核簡介
ARM公司開發(fā)了很多系列的ARM處理器核,最新的系列是Cortex,而ARM6核及更早的系列已經(jīng)很罕見了。目前應(yīng)用比較廣泛的系列是:‘A’profileisforhigh_endapplication5.1ARM簡介ARM處理器核簡介
ARM公司開發(fā)了很多系列的ARM處理器核,最新的系列是Cortex,而ARM6核及更早的系列已經(jīng)很罕見了。目前應(yīng)用比較廣泛的系列是:‘R’profileisforrealtimeoperatingsystem5.1ARM簡介ARM處理器核簡介
ARM公司開發(fā)了很多系列的ARM處理器核,最新的系列是Cortex,而ARM6核及更早的系列已經(jīng)很罕見了。目前應(yīng)用比較廣泛的系列是:‘M’profileisfor
lower-costsolutions
ARM處理器名字
5.1ARM簡介第5章目錄1.簡介2.Cortex-M33.Cortex-M3的模塊和內(nèi)部框圖4.體系結(jié)構(gòu)直接支持的數(shù)據(jù)類型5.處理器狀態(tài)6.處理器模式7.內(nèi)部寄存器8.程序狀態(tài)寄存器9.異常10.中斷延遲11.復(fù)位12.存儲(chǔ)器及存儲(chǔ)器映射I/O13.尋址方式簡介14.CM3指令簡介16.調(diào)試接口簡介17.ETM接口簡介5.2Cortex-M3簡介
Cortex-M3基于ARM的v7-M體系結(jié)構(gòu),該架構(gòu)有三個(gè)分工明確的部分。A面向復(fù)雜的尖端應(yīng)用程序,用于運(yùn)行開放式的復(fù)雜操作系統(tǒng);R針對(duì)實(shí)時(shí)系統(tǒng);M面向高性價(jià)比應(yīng)用,如汽車車身系統(tǒng),工業(yè)控制系統(tǒng)和無線網(wǎng)絡(luò)等。它大大簡化了可編程的復(fù)雜性,使ARM架構(gòu)成為各種應(yīng)用方案(即使是最簡單的方案)的上佳選擇。注意:“Cortex核”并不是芯片,該核與其它部件如RAM、ROM、片內(nèi)外設(shè)組合在一起才能構(gòu)成實(shí)用的芯片。5.2Cortex-M3簡介
CM3支持32位尋址范圍,基于哈佛架構(gòu)的3級(jí)流水線內(nèi)核,該內(nèi)核集成了分支預(yù)測,單周期乘法,硬件除法等特性,使其在Dhrystonebenchmark上具有出色的表現(xiàn)(1.25DMIPS/MHz)。根據(jù)測評(píng)結(jié)果,采用新的Thumb?-2指令集架構(gòu)的CM3處理器,與執(zhí)行Thumb指令的ARM7TDMI-S?處理器相比,每兆赫的效率提高了70%,與執(zhí)行ARM指令的ARM7TDMI-S處理器相比,效率提高了35%。5.2Cortex-M3簡介
處理器可通過兩種途徑來提高其性能,一是“workhard”,即直接提高時(shí)鐘頻率來提高性能,這種情況是以高功耗作為代價(jià);另一種是“worksmart”,在低時(shí)鐘頻率下提高運(yùn)算效率,使處理器可以憑借簡單的低功耗設(shè)計(jì)來完成與第一種情況同樣的功能。這樣的簡化實(shí)現(xiàn)了:高的指令吞吐量;出色的實(shí)時(shí)中斷響應(yīng);小體積、高性價(jià)比的處理器單元。5.2Cortex-M3三級(jí)流水線及分支預(yù)測
CM3處理器使用流水線來增加處理器指令流速度的同時(shí),增加的分支預(yù)測功能,這樣可使流水線在取指期間遇到分支指令時(shí),能根據(jù)寄存器的狀態(tài)來提前預(yù)測程序的流程,已減少分支代價(jià),從而提高指令的執(zhí)行速度。5.2Cortex-M3
正常操作過程中,在執(zhí)行一條指令的同時(shí)對(duì)下一條指令進(jìn)行譯碼,并將第三條指令從存儲(chǔ)器中取出。這三條指令之間的位置關(guān)系如下表所示:流水線上各指令的地址流水線工位描述ARM指令集Thumb指令集PCPC取指指令從存儲(chǔ)器中取出PC-4PC-2譯碼對(duì)指令使用的寄存器進(jìn)行譯碼PC-8PC-4執(zhí)行從寄存器組中讀出寄存器,執(zhí)行移位和ALU操作,寄存器被寫回到寄存器組中三級(jí)流水線及分支預(yù)測5.2Cortex-M3CM3的硬件特點(diǎn)
成本是采用高性能微控制器永恒的屏障。由于先進(jìn)制造工藝相當(dāng)昂貴,只有降低芯片的尺寸才有可能從本質(zhì)上降低成本。CM3處理器采用了至今為止最小的ARM內(nèi)核(0.18umG),通過采用非對(duì)齊數(shù)據(jù)存儲(chǔ)技術(shù)、原子位操作和Thumb-2指令集,減小了對(duì)存儲(chǔ)容量的需求,其中Thumb-2指令集對(duì)指令存儲(chǔ)容量的要求比ARM指令減少25%。為了迎合對(duì)節(jié)能的需求,CM3處理器支持?jǐn)U展時(shí)鐘門控和內(nèi)置睡眠模式。處理器運(yùn)行在50MHz的目標(biāo)頻率下的功耗僅為4.5mW,芯片封裝面積只有0.33mm2。ARM7與Cortex-M3性能比較
5.2Cortex-M3
近年來ARM7系列處理器被廣泛應(yīng)用于眾多領(lǐng)域。CM3在ARM7的基礎(chǔ)上開發(fā)成功,為基于ARM7處理器系統(tǒng)的升級(jí)開辟了通道。它的內(nèi)核效率更高,編程模型更簡單,它具有出色的確定中斷行為,其集成外設(shè)以低成本提供了更強(qiáng)大的性能。ARM7與Cortex-M3性能比較
5.2Cortex-M3ARM7與Cortex-M3性能比較
5.2Cortex-M3ARM7與Cortex-M3性能比較
5.2Cortex-M3存儲(chǔ)器訪問
CM3處理器支持高達(dá)4GB的可尋址存儲(chǔ)空間,并提供預(yù)定義的存儲(chǔ)器映射:代碼(代碼空間)、SRAM(存儲(chǔ)空間),外部存儲(chǔ)器/器件和內(nèi)部/外部外設(shè)提供預(yù)定義的專用地址。另外,還有一個(gè)特殊區(qū)域?qū)iT供廠家使用。
CM3存儲(chǔ)器映射有兩個(gè)位于SRAM的大小均為1MB的bit-band區(qū)域、并映射到32MB別名區(qū)域的RAM空間。借助bit-band技術(shù),處理器可以在系統(tǒng)中直接對(duì)數(shù)據(jù)的某個(gè)位進(jìn)行訪問(原子操作),而無需“讀—修改—寫”操作。5.2Cortex-M3第5章目錄1.簡介2.Cortex-M33.Cortex-M3的模塊和內(nèi)部框圖4.體系結(jié)構(gòu)直接支持的數(shù)據(jù)類型5.處理器狀態(tài)6.處理器模式7.內(nèi)部寄存器8.程序狀態(tài)寄存器9.異常10.中斷延遲11.復(fù)位12.存儲(chǔ)器及存儲(chǔ)器映射I/O13.尋址方式簡介14.ARM7指令簡介15.協(xié)處理器接口16.調(diào)試接口簡介17.ETM接口簡介
5.3Cortex-M3的模塊和內(nèi)部框圖STM32F10x系統(tǒng)架構(gòu)
5.3Cortex-M3的模塊和內(nèi)部框圖STM32F10x系統(tǒng)架構(gòu):
5.3Cortex-M3的模塊和內(nèi)部框圖第5章目錄1.簡介2.Cortex-M33.Cortex-M3的模塊和內(nèi)部框圖4.體系結(jié)構(gòu)直接支持的數(shù)據(jù)類型5.處理器狀態(tài)6.處理器模式7.內(nèi)部寄存器8.程序狀態(tài)寄存器9.異常10.中斷延遲11.復(fù)位12.存儲(chǔ)器及存儲(chǔ)器映射I/O13.尋址方式簡介14.CM3指令簡介16.調(diào)試接口簡介17.ETM接口簡介5.4體系結(jié)構(gòu)直接支持的數(shù)據(jù)類型體系結(jié)構(gòu)直接支持的數(shù)據(jù)類型ARM處理器支持下列數(shù)據(jù)類型:字節(jié)8位半字16位(必須分配為占用兩個(gè)字節(jié))字32為(必須分配為占用4各字節(jié))1112342Little_end字節(jié)對(duì)齊方式體系結(jié)構(gòu)直接支持的數(shù)據(jù)類型注意:V4版本之后的ARM結(jié)構(gòu)都支持這3種結(jié)構(gòu)(包括V4版本),而以前的版本只支持字節(jié)和字;當(dāng)數(shù)據(jù)類型定義為無符號(hào)型時(shí),N位數(shù)據(jù)值使用正常的二進(jìn)制格式表示范圍為0~2N-1的非負(fù)整數(shù);當(dāng)數(shù)據(jù)類型定義為有符號(hào)型時(shí),N位數(shù)據(jù)值使用2的補(bǔ)碼格式表示范圍為-2N-1~+2N-1-1的整數(shù)。5.4體系結(jié)構(gòu)直接支持的數(shù)據(jù)類型體系結(jié)構(gòu)直接支持的數(shù)據(jù)類型注意:所有數(shù)據(jù)操作,例如ADD,都以字為單位;裝載和保存指令可以對(duì)字節(jié)、半字和字進(jìn)行操作,當(dāng)裝載字節(jié)或半字時(shí)自動(dòng)實(shí)現(xiàn)零擴(kuò)展或符號(hào)擴(kuò)展;ARM指令的長度剛好是1個(gè)字(32位),Thumb指令的長度剛好是半字(16位),CM3支持的Thumb-2指令則兼容字(32位)和半字(16位)。5.4體系結(jié)構(gòu)直接支持的數(shù)據(jù)類型第5章目錄1.簡介2.ARM7TDMI3.ARM7TDMI的模塊和內(nèi)部框圖4.體系結(jié)構(gòu)直接支持的數(shù)據(jù)類型5.處理器狀態(tài)6.處理器模式7.內(nèi)部寄存器8.程序狀態(tài)寄存器9.異常10.中斷延遲11.復(fù)位12.存儲(chǔ)器及存儲(chǔ)器映射I/O13.尋址方式簡介14.ARM7指令簡介15.協(xié)處理器接口16.調(diào)試接口簡介17.ETM接口簡介5.5處理器狀態(tài)處理器狀態(tài)
CM3處理器內(nèi)核使用V7M版本的ARM結(jié)構(gòu),該結(jié)構(gòu)使用了獨(dú)具特色的兼容32位ARM指令集和16位Thumb指令集的Thumb-2指令集
。因此CM3無需像ARM7TDMI處理器那樣需根據(jù)指令集的不同在兩種操作狀態(tài)之間轉(zhuǎn)換。ARM狀態(tài):32位,這種狀態(tài)下執(zhí)行的是字方式的ARM指令;處理能力強(qiáng)大。Thumb狀態(tài):16位,這種狀態(tài)下執(zhí)行半字方式的Thumb指令,但有些功能無法實(shí)現(xiàn)。
Thumb和ARM的狀態(tài)切換模式圖Thumb-2兼容了Thumb和ARM狀態(tài)第5章目錄1.簡介2.ARM7TDMI3.ARM7TDMI的模塊和內(nèi)部框圖4.體系結(jié)構(gòu)直接支持的數(shù)據(jù)類型5.處理器狀態(tài)6.處理器模式7.內(nèi)部寄存器8.程序狀態(tài)寄存器9.異常10.中斷延遲11.復(fù)位12.存儲(chǔ)器及存儲(chǔ)器映射I/O13.尋址方式簡介14.ARM7指令簡介15.協(xié)處理器接口16.調(diào)試接口簡介17.ETM接口簡介5.6處理器模式簡介
CM3不同于ARM7體系結(jié)構(gòu)的7種處理器模式,CM3支持兩種處理器的操作模式:處理器模式(handler
mode)、線程模式(thread
mode);還支持兩級(jí)特權(quán)操作:特權(quán)級(jí)和用戶級(jí)。引入兩個(gè)模式的本意,是用于區(qū)別普通應(yīng)用程序的代碼和異常服務(wù)例程的代碼(包括中斷服務(wù)例程的代碼)。
引入兩級(jí)特權(quán)的本意是提供一種存儲(chǔ)器訪問的保護(hù)機(jī)制,使得普通的用戶程序不能意外地、甚至是惡意地執(zhí)行涉及到要害的操作。5.6處理器模式處理器模式及特權(quán)級(jí)
CM3運(yùn)行主應(yīng)用程序時(shí)(線程模式),既可以使用特權(quán)級(jí),也可以使用用戶級(jí);但是異常服務(wù)例程必須在特權(quán)級(jí)下執(zhí)行。復(fù)位后,處理器默認(rèn)進(jìn)入線程模式,特權(quán)極訪問。在特權(quán)級(jí)下,程序可以訪問所有范圍的存儲(chǔ)器(如果有MPU,還要在MPU規(guī)定的禁地之外),并且可以執(zhí)行所有指令。5.6
處理器模式處理器模式及特權(quán)級(jí)
在特權(quán)級(jí)下的程序可以“為所欲為”,可以切換到用戶級(jí)。但進(jìn)入用戶級(jí),再想回來就得走“法律程序”了——它必須先執(zhí)行一條系統(tǒng)調(diào)用指令(SVC),觸發(fā)SVC
異常,然后由異常服務(wù)例程修改CONTROL寄存器,才能在用戶級(jí)的線程模式下重新進(jìn)入特權(quán)級(jí)。
5.6
處理器模式處理器模式及特權(quán)級(jí)事實(shí)上,從用戶級(jí)到特權(quán)級(jí)的唯一途徑就是異常:如果在程序執(zhí)行過程中觸發(fā)了一個(gè)異常,處理器總是先切換入特權(quán)級(jí),并且在異常服務(wù)例程執(zhí)行完畢退出時(shí),返回先前的狀態(tài)(也可以手工指定返回的狀態(tài))。5.6處理器模式合法的操作模式轉(zhuǎn)換5.6處理器模式
通過引入特權(quán)級(jí)和用戶級(jí),能夠在硬件級(jí)限制某些不受信任的或者還沒有調(diào)試好的程序,不讓它們隨便地配置涉及要害的寄存器,提高系統(tǒng)的可靠性。進(jìn)一步地,如果配了MPU,它還可以作為特權(quán)機(jī)制的補(bǔ)充—保護(hù)關(guān)鍵的存儲(chǔ)區(qū)域不被破壞,這些區(qū)域通常是操作系統(tǒng)的區(qū)域。
舉例來說,操作系統(tǒng)的內(nèi)核通常都在特權(quán)級(jí)下執(zhí)行,所有沒有被MPU禁掉的存儲(chǔ)器都可以訪問。在操作系統(tǒng)開啟了一個(gè)用戶程序后,通常都會(huì)讓它在用戶級(jí)下執(zhí)行,從而使系統(tǒng)不會(huì)因某個(gè)程序的崩潰或惡意破壞而受損。
注意:5.6處理器模式STM32系列的處理器模式:5.6處理器模式STM32系列的處理器模式:第5章目錄1.簡介2.ARM7TDMI3.ARM7TDMI的模塊和內(nèi)部框圖4.體系結(jié)構(gòu)直接支持的數(shù)據(jù)類型5.處理器狀態(tài)6.處理器模式7.內(nèi)部寄存器8.程序狀態(tài)寄存器9.異常10.中斷延遲11.復(fù)位12.存儲(chǔ)器及存儲(chǔ)器映射I/O13.尋址方式簡介14.ARM7指令簡介15.協(xié)處理器接口16.調(diào)試接口簡介17.ETM接口簡介5.7內(nèi)部寄存器簡介
在CM3處理器內(nèi)部有17個(gè)通用寄存器。其中:R0~R12為通用寄存器(
General-PurposeRegisters)。R13是堆疊的堆棧指針(stackpointer),即在不同的處理器工作模式下,可以訪問的寄存器R13不同。R14為鏈接寄存器(TheLinkRegister),保存子程序返回地址。R15為程序計(jì)數(shù)器(TheProgramCounter),即PC5.7內(nèi)部寄存器某些Thumb指令僅能操作LOWRegister5.7內(nèi)部寄存器而32位的Thumb-2指令能操作所有的寄存器(LOWRegisterandHighRegister)5.7內(nèi)部寄存器Theresetvalueofallgeneral-purposeregistersareunpredictable.5.7內(nèi)部寄存器IntheCM3processor,therearetwostackpointers.Thisdualityallowstwoseparatestackmemoriestobesetup.WhenusingtheregisternameR13,youcanonlyaccessthecurrentstackpointer;theotheroneisinaccessibleunlessyouusespecialinstructions
MSRandMRS.說明:5.7內(nèi)部寄存器
MainStackPointer(MSP),orSP_maininARMdocumentation:Thisisthedefaultstackpointer;itisusedbytheOSkernel,exceptionhandlers,andallapplicationcodesthatrequireprivilegedaccess.ProcessStackPointer(PSP),orSP_processinARMdocumentation:Usedbythebase-levelapplicationcode(whennotrunninganexceptionhandler).Itisnotnecessarytousebothstackpointers.SimpleapplicationscanrelypurelyontheMSP.5.7內(nèi)部寄存器
R14isthelinkregister(LR).Insideanassemblyprogram,youcanwriteitaseitherR14orLR.LRisusedtostorethereturnprogramcounterwhenasubroutineorfunctioniscalled.forexample,whenyou’reusingtheBL(branchandlink)instruction:main;Mainprogram…BLfunction1;Callfunction1usingBranchwithLink;instruction.;PC=function1;LR=thenextinstructioninmain…function1…;Programcodeforfunction1BXLR;Return5.7內(nèi)部寄存器特殊寄存器
在CM3處理器內(nèi)部還有若干特殊寄存器。其中:xPSR程序狀態(tài)寄存器(ProgramStatusRegisters),即提供ALU的狀態(tài)、程序運(yùn)行狀態(tài)、當(dāng)前中斷號(hào)。中斷屏蔽寄存器(InterruptMask
Register)。控制寄存器(Control
Register
)。5.7內(nèi)部寄存器特殊寄存器只能被特殊寄存器讀寫指令操作5.7內(nèi)部寄存器特殊寄存器SpecialregisterscanonlybeaccessedviaMSRandMRSinstructions;theydonothavememoryaddresses:MRS<reg>,<special_reg>;ReadspecialregisterMSR<special_reg>,<reg>;writetospecialregister5.7內(nèi)部寄存器程序狀態(tài)寄存器程序狀態(tài)寄存器在其內(nèi)部又被分為三個(gè)子狀態(tài)寄存器:
ApplicationPSR(APSR)InterruptPSR(IPSR)ExecutionPSR(EPSR)ThethreePSRscanbeaccessedtogetherorseparatelyusingthespecialregisteraccessinstructions.Whentheyareaccessedasacollectiveitem,thenamexPSRisused.5.7內(nèi)部寄存器程序狀態(tài)寄存器CM3中的程序狀態(tài)寄存器(xPSR)
組合訪問的程序狀態(tài)寄存器(xPSR)5.7內(nèi)部寄存器中斷屏蔽寄存器
對(duì)于時(shí)間要求高的任務(wù)而言,利用PRIMASK和BASEPRI暫時(shí)關(guān)閉中斷是必須的。而FAULTMASK則可以被OS用于暫時(shí)關(guān)閉fault處理機(jī)能,這種處理在某個(gè)任務(wù)崩潰時(shí)可能需要。因?yàn)樵谌蝿?wù)崩潰時(shí)常太多faults,系統(tǒng)通常不需再響應(yīng)這些fault??傊瓼AULTMASK就是專門留給OS用的。
5.7內(nèi)部寄存器控制寄存器控制寄存器用于定義特權(quán)級(jí),及選擇當(dāng)前堆棧指針。
baselevel—不是處在異常響應(yīng)過程中CONTROL[1]
在CM3的handler模式中,CONTROL[1]總是0。在線程模式中則可以為0或1。
僅處于特權(quán)級(jí)的線程模式下,此位才可寫,其它情況下禁止寫此位。改變處理器的模式也有其它的方式:在異常返回時(shí),通過修改LR的位2,也能實(shí)現(xiàn)模式切換。5.7內(nèi)部寄存器控制寄存器CONTROL[0]僅處于特權(quán)級(jí)下才允許寫該位。一旦進(jìn)入了用戶級(jí),唯一返回特權(quán)級(jí)的途徑,就是觸發(fā)一個(gè)(軟)中斷,再由服務(wù)例程改寫該位。
在線程模式+用戶級(jí)下,對(duì)系統(tǒng)控制空間(SCS)的訪問將被阻止(該空間包含了配置寄存器s以及調(diào)試組件的寄存器s)。除此之外,還禁止使用MSR訪問特殊功能寄存器(除APSR有例外)。違背此原則,則將導(dǎo)致一個(gè)fault。5.7內(nèi)部寄存器模式及特權(quán)級(jí)的轉(zhuǎn)換5.7內(nèi)部寄存器模式及特權(quán)級(jí)的轉(zhuǎn)換特權(quán)級(jí)和堆棧指針的選擇均由CONTROL負(fù)責(zé)。當(dāng)CONTROL[0]=0時(shí),在異常處理的始末,只會(huì)發(fā)生處理器模式的轉(zhuǎn)換:
中斷前后的狀態(tài)轉(zhuǎn)換若CONTROL[0]=1(線程模式+用戶級(jí)),則在中斷響應(yīng)的始末,處理器模式和特權(quán)等極都要發(fā)生變化:5.7內(nèi)部寄存器模式及特權(quán)級(jí)的轉(zhuǎn)換5.7內(nèi)部寄存器模式及特權(quán)級(jí)的轉(zhuǎn)換
CONTROL[0]只有在特權(quán)級(jí)下才能訪問。用戶級(jí)的程序如想進(jìn)入特權(quán)級(jí),通常都是使用一條“系統(tǒng)服務(wù)呼叫指令(SVC)”來觸發(fā)“SVC異?!?,該異常的服務(wù)例程可以選擇修改CONTROL[0]。
CM3支持大量異常,包括11個(gè)系統(tǒng)異常,和最多240個(gè)外部中斷(簡稱IRQ)。具體使用了這240個(gè)中斷源中的多少個(gè),則由芯片制造商決定。第5章目錄1.簡介2.Cortex-M33.Cortex-M3的模塊和內(nèi)部框圖4.體系結(jié)構(gòu)直接支持的數(shù)據(jù)類型5.處理器狀態(tài)6.處理器模式7.內(nèi)部寄存器8.中斷和異常9.存儲(chǔ)器及存儲(chǔ)器映射I/O10.復(fù)位11.尋址方式簡介12.CM3指令簡介13.協(xié)處理器接口14.ETM接口簡介5.8中斷和異常簡介
在ARM中,所有能打斷正常執(zhí)行流程的事件都稱為異常。CM3放棄了以前的ARM版本中的FIQ模式,使用了一種稱為NVIC的異常響應(yīng)系統(tǒng),即可嵌套的中斷優(yōu)先級(jí)管理。該系統(tǒng)支持11個(gè)內(nèi)部異常源,可以實(shí)現(xiàn)fault管理機(jī)制;另外支持最多240個(gè)外部中斷輸入(IRQs);同時(shí)還支持一個(gè)不可屏蔽中斷(NMI)輸入。多數(shù)情況下,NMI會(huì)被連接到一個(gè)看門狗定時(shí)器,或電壓監(jiān)視功能塊,以便在電壓跌落至危險(xiǎn)級(jí)別時(shí)告警。NMI可在任何時(shí)間被激活,甚至是處理器剛剛復(fù)位之后。
所有NVIC的中斷控制/狀態(tài)寄存器都只能在特權(quán)級(jí)下訪問。有一個(gè)例外:軟件觸發(fā)中斷寄存器可以在用戶級(jí)下訪問以產(chǎn)生軟件中斷。所有的中斷控制、狀態(tài)寄存器均可按字/半字/字節(jié)的方式訪問。
NVIC的寄存器以存儲(chǔ)器映射的方式來訪問,除了包含控制寄存器和中斷處理的控制邏輯之外,還包含MPU的控制寄存器、SysTick定時(shí)器以及調(diào)試控制。5.8中斷和異常簡介異常類型見下表:異常類型5.8中斷和異常當(dāng)一個(gè)異常發(fā)生并被CM3內(nèi)核接受,對(duì)應(yīng)的異常處理程序(handler)就會(huì)執(zhí)行。為了決定handler的入口地址,CM3使用“向量表查表”。向量表是一個(gè)WORD(32bits)數(shù)組,每個(gè)下標(biāo)對(duì)應(yīng)一個(gè)異常號(hào),其值則是該異常的入口地址。向量表的存儲(chǔ)位置是可以重新設(shè)置(重定位到RAM區(qū)),NVIC通過一個(gè)重定位寄存器來指出向量表的地址。在復(fù)位后,該寄存器的值為0。即在地址0處必須包含一張初始向量表。
0號(hào)異常很特殊,它并不是入口地址,而是給出了復(fù)位后MSP的初值。這樣做的目的就是CPU復(fù)位后,即使沒有完成初始化,亦可“馬上”可以響應(yīng)中斷(如NMI中斷)。異常的處理5.8中斷和異常異常的處理上電后初始的向量表【ROM區(qū)】IRQ外部中斷5.8中斷和異常如果程序順序執(zhí)行,且每個(gè)中斷擁有固定的中斷服務(wù)程序,可把向量表放到ROM中(如51機(jī))
。此時(shí)無需運(yùn)行時(shí)重建向量表。然而,如果想CPU動(dòng)態(tài)地處理各種復(fù)雜情況,常需動(dòng)態(tài)改變中斷服務(wù)例程。此時(shí),向量表必須被轉(zhuǎn)移到RAM區(qū)。
向量表重定位之前,需把現(xiàn)有的向量表拷貝到新的位置。需要拷貝的向量主要是系統(tǒng)異常的服務(wù)例程,如fault、NMI以及SVC等。如果沒有設(shè)置好這些向量就啟用新的向量表,可能會(huì)在異常響應(yīng)時(shí)把不可預(yù)料的地址取出,造成程序跑飛。
當(dāng)我們把所有必要的向量都填好,就可以啟用了新的向量表了,并允許繼續(xù)往里面加入新的中斷向量。異常的處理5.8中斷和異常異常的處理內(nèi)建的NVIC支持多達(dá)240條外部中斷輸入。向量化的中斷功能大大縮短了中斷延遲。因不需要軟件去判斷中斷源,中斷的嵌套也是在硬件水平上實(shí)現(xiàn)的。
CM3在進(jìn)入異常服務(wù)例程時(shí),自動(dòng)壓棧R0‐R3、R12、LR、PSR和PC,并且在返回時(shí)自動(dòng)彈出,從而加速了中斷的響應(yīng),簡化了軟件代碼。
NVIC支持對(duì)每一路中斷設(shè)置不同的優(yōu)先級(jí)。最低的實(shí)現(xiàn)也至少要支持8級(jí)優(yōu)先級(jí),而且還能動(dòng)態(tài)地修改。
優(yōu)化中斷響應(yīng)還有兩項(xiàng)技術(shù),它們分別是“尾鏈中斷(Tail-Chaining)”和“晚到中斷(LateArrivals)”。
5.8中斷和異常異常的處理
TailChainingofExceptions5.8中斷和異常異常的處理與ARM7異常處理的比較5.8中斷和異常異常的處理
LateArrivalExceptionBehavior5.8中斷和異常異常的處理有些需要較多周期才能執(zhí)行完的指令,是可以被中斷的,就好像它們是一串指令一樣。這些指令包括加載多個(gè)寄存器(LDM),存儲(chǔ)多個(gè)寄存器(STM),多個(gè)寄存器參與的PUSH與的POP指令。
除非系統(tǒng)被徹底地鎖定,NMI(不可屏蔽中斷)會(huì)在收到請(qǐng)求的第一時(shí)間予以響應(yīng)。對(duì)于很多安全‐關(guān)鍵(safety‐critical)的應(yīng)用,NMI都是必不可少的(如掉電時(shí)的緊急停機(jī))。
5.8中斷和異常異常的優(yōu)先級(jí)
在CM3中,優(yōu)先級(jí)對(duì)于異常來說會(huì)影響一個(gè)異常是否能被響應(yīng),以及何時(shí)被響應(yīng)。優(yōu)先級(jí)的數(shù)值越小,則優(yōu)先級(jí)越高。CM3支持中斷嵌套,使得高優(yōu)先級(jí)異常會(huì)搶占(preempt)低優(yōu)先級(jí)異常。有3個(gè)系統(tǒng)異常:復(fù)位,NMI以及硬fault,它們有固定的優(yōu)先級(jí),并且它們的優(yōu)先級(jí)號(hào)是負(fù)數(shù),從而高于所有其它異常。所有其它異常的優(yōu)先級(jí)則都是可編程的(但不能編程為負(fù)數(shù))。5.8中斷和異常異常的優(yōu)先級(jí)不同廠商的產(chǎn)品其支持的優(yōu)先級(jí)的數(shù)量不同,但一定是2的整數(shù)倍。決定異常優(yōu)先級(jí)數(shù)量的是優(yōu)先級(jí)配置寄存器(priority-levelcon?gurationregister)支持8個(gè)優(yōu)先級(jí)的優(yōu)先級(jí)配置寄存器
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年高端煤機(jī)裝備項(xiàng)目申請(qǐng)報(bào)告模板
- 2025年電子廚房秤項(xiàng)目立項(xiàng)申請(qǐng)報(bào)告
- 2025年試用策劃平臺(tái)標(biāo)準(zhǔn)協(xié)議書樣本
- 2025年公交運(yùn)營協(xié)議綜合概述
- 2025年單組元肼、雙組元液體推力器項(xiàng)目規(guī)劃申請(qǐng)報(bào)告模板
- 2025年毒素類診斷抗原項(xiàng)目申請(qǐng)報(bào)告模板
- 2025年全球創(chuàng)新資源共享協(xié)議
- 2025年端子機(jī)項(xiàng)目提案報(bào)告
- 2025年企業(yè)臨時(shí)文員雇傭合同
- 2025年度婚紗禮服租賃策劃協(xié)議
- 創(chuàng)建動(dòng)物保護(hù)家園-完整精講版課件
- 廣東省保安服務(wù)監(jiān)管信息系統(tǒng)用戶手冊(cè)(操作手冊(cè))
- DNA 親子鑒定手冊(cè) 模板
- DB33T 1233-2021 基坑工程地下連續(xù)墻技術(shù)規(guī)程
- 天津 建設(shè)工程委托監(jiān)理合同(示范文本)
- 廣東中小學(xué)教師職稱評(píng)審申報(bào)表初稿樣表
- 部編一年級(jí)語文下冊(cè)教材分析
- 火炬及火炬氣回收系統(tǒng)操作手冊(cè)
- 北師大七年級(jí)數(shù)學(xué)下冊(cè)教學(xué)工作計(jì)劃及教學(xué)進(jìn)表
- 菜肴成本核算(課堂PPT)
- 光纖通信原理課件 精品課課件 講義(全套)
評(píng)論
0/150
提交評(píng)論