CortexM3處理器體系結(jié)構(gòu)課件_第1頁
CortexM3處理器體系結(jié)構(gòu)課件_第2頁
CortexM3處理器體系結(jié)構(gòu)課件_第3頁
CortexM3處理器體系結(jié)構(gòu)課件_第4頁
CortexM3處理器體系結(jié)構(gòu)課件_第5頁
已閱讀5頁,還剩61頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

Cortex-M3處理器體系結(jié)構(gòu)Cortex-M3處理器體系結(jié)構(gòu)概覽Cortex-M3處理器內(nèi)核Cortex-M3處理器指令集Thumb-2Cortex-M3嵌套向量中斷控制器NVICCortex-M3存儲器管理存儲器保護單元MPU總線接口調(diào)試跟蹤接口開發(fā)軟件和RTOS概覽Cortex-M3處理器內(nèi)核Cortex-M3定位從右邊的圖可以分析出Cortex-M3處理器架構(gòu):ARMv7-M指令集:Thumb-2 ARM架構(gòu)支持各種性能點上的實現(xiàn)。在許多細分市場中它都占有主要架構(gòu)的地位。而其中Cortex-M

處理器,通過配置文件,可快速進行中斷處理,適用于需要高度確定的行為和最少門數(shù)的成本、功耗敏感型設備。而Cortex-M3處理器作為其中的佼佼者,就不得不引起我們的關(guān)注。Cortex-M3定位從右邊的圖可以分析出Cortex-M3Cortex-M3現(xiàn)狀NXP:LPC17000TI->LuminaryMicro:LM3SST:STM32Atmel:SAM3U此四大知名廠商采用Cortex-M3處理器的設計出來的芯片,主要在于片上存儲器容量、集成外設、功能模塊的區(qū)別。Cortex-M3現(xiàn)狀NXP:LPC17000Cortex-M3內(nèi)核方框圖Cortex-M3處理器主要包括:處理器內(nèi)核與處理器內(nèi)核緊密結(jié)合的嵌套向量中斷控制器(NVIC)以實現(xiàn)低延遲的中斷處理存儲器保護單元(MPU),可選部件MPU實現(xiàn)存儲器保護總線接口調(diào)試接口Cortex-M3內(nèi)核方框圖Cortex-M3處理器主要包括Cortex-M3性能參數(shù)Cortex-M3處理器規(guī)范

以下引用的數(shù)字是使用通用TSMC工藝技術(shù)和ARM物理IP

標準單元庫和RAM

的合成核心的說明。Dhrystone:整數(shù)運算能力在1MHz頻率下,每秒執(zhí)行一百二十五萬條指令的整數(shù)運算能力。Cortex-M3性能參數(shù)Cortex-M3處理器規(guī)范Cortex-M3處理器指令集Thumb-2ARMThumb-2技術(shù)的代碼密度和代碼性能引自:ARM公司RichardPhelan撰寫的《如何使用Thumb-2改善代碼密度和性能》Cortex-M3處理器指令集Thumb-2ARMThumCortex-M3處理器指令集Thumb-2Thumb-2技術(shù)可以帶來很多好處:可以實現(xiàn)ARM指令的所有功能。增加了12條新指令,可以改進代碼性能和代碼密度之間的平衡。代碼性能達到了純ARM代碼性能的98%。相對ARM代碼,Thumb-2代碼的大小僅有其74%代碼密度比現(xiàn)有的Thumb指令集更高。代碼大小平均降低5%。代碼速度平均提高2-3%。注:Cortex-M3不支持ARM指令集。Cortex-M3處理器指令集Thumb-2Thumb-2技Cortex-M技術(shù)之CMSISARM

Cortex微控制器軟件接口標準(CMSIS)

Cortex-M

處理器系列的與供應商無關(guān)的硬件抽象層。

使用CMSIS,可以為接口外設、實時操作系統(tǒng)和中間件實現(xiàn)一致且簡單的軟件接口,從而簡化軟件的重用、縮短新微控制器開發(fā)人員的學習過程,并縮短新產(chǎn)品的上市時間。注:此接口標準可以從各自芯片廠家那里得到。例如ST公司把CMSIS放在其開發(fā)的固件庫內(nèi)。CMSIS全稱:CortexMicrocontrollerSoftwareInterfaceStandard以下是CMSIS結(jié)構(gòu)圖Cortex-M技術(shù)之CMSISARM

Cortex微控Cortex-M技術(shù)之CMSISCortex-M技術(shù)之CMSISCortex-M技術(shù)之NVICNVIC為處理器提供了卓越的中斷處理能力。

Cortex-M處理器使用一個矢量表,其中包含要為特定中斷處理程序執(zhí)行的函數(shù)的地址。接受中斷時,處理器會從該矢量表中提取地址。為了減少門數(shù)并增強系統(tǒng)靈活性,Cortex-M處理器使用一個基于堆棧的異常模型。出現(xiàn)異常時,系統(tǒng)會將關(guān)鍵通用寄存器推送到堆棧上。完成入棧和指令提取后,將執(zhí)行中斷服務例程或故障處理程序,然后自動還原寄存器以使中斷的程序恢復正常執(zhí)行。使用此方法,便無需編寫匯編器包裝器了(而這是對基于C語言的傳統(tǒng)中斷服務例程執(zhí)行堆棧操作所必需的),從而使得應用程序的開發(fā)變得非常容易。NVIC支持中斷嵌套(入棧),從而允許通過運用較高的優(yōu)先級來較早地為某個中斷提供服務。Cortex-M技術(shù)之NVICNVIC為處理器提供了卓越Cortex-M技術(shù)之NVIC在硬件中完成對中斷的響應Cortex-M系列處理器的中斷響應是從發(fā)出中斷信號到執(zhí)行中斷服務例程的周期數(shù)。它包括:

檢測中斷背對背或遲到中斷的最佳處理提取矢量地址將易損壞的寄存器入棧跳轉(zhuǎn)到中斷處理程序這些任務在硬件中執(zhí)行,并且包含在為Cortex-M處理器報出的中斷響應周期時間中。在其他許多體系結(jié)構(gòu)中,這些任務必須在軟件的中斷處理程序中執(zhí)行,從而引起延遲并使得過程十分復雜。Cortex-M技術(shù)之NVIC在硬件中完成對中斷的響應Cortex-M技術(shù)之NVICNVIC中的尾鏈在背對背中斷的情況下,傳統(tǒng)系統(tǒng)會重復完整的狀態(tài)保存和還原周期兩次,從而導致更高的延遲。Cortex-M處理器通過在NVIC硬件中實現(xiàn)尾鏈技術(shù)簡化了活動中斷和掛起的中斷之間的轉(zhuǎn)換。處理器狀態(tài)會在比軟件實現(xiàn)時間更少的周期內(nèi)自動保存在中斷條目上并在中斷退出時還原,從而顯著提升低MHz系統(tǒng)的性能。

Cortex-M技術(shù)之NVICNVIC中的尾鏈Cortex-M技術(shù)之NVICNVIC對遲到的較高優(yōu)先級中斷的響應如果在為上一個中斷執(zhí)行堆棧推送期間較高優(yōu)先級的中斷遲到,NVIC會立即提取新的矢量地址來為掛起的中斷提供服務,如上所示。Cortex-MNVIC對這些可能性提供具有確定性的響應并支持遲到和搶占。Cortex-M技術(shù)之NVICNVIC對遲到的較高優(yōu)先級Cortex-M技術(shù)之NVICNVIC進行的堆棧彈出搶占同樣,如果異常到達,NVIC將放棄堆棧彈出并立即為新的中斷提供服務,如上所示。通過搶占并切換到第二個中斷而不完成狀態(tài)還原和保存,NVIC以具有確定性的方式實現(xiàn)了縮短延遲。Cortex-M技術(shù)之NVICNVIC進行的堆棧彈出搶占Cortex-M3編程模式工作模式:線程模式——在復位時處理器進入線程模式,異常返回時也會進入該模式。處理模式——出現(xiàn)異常時處理器進入處理模式。工作狀態(tài):Thumb狀態(tài)——是16位和32位半字對齊的thumb和thumb-2指令的正常執(zhí)行狀態(tài)。調(diào)試狀態(tài)——處理器停機調(diào)試時進入該狀態(tài)。特權(quán)與非特權(quán)訪問:代碼可以是特權(quán)執(zhí)行或非特權(quán)執(zhí)行。非特權(quán)執(zhí)行時對有些資源的訪問受到限制或不允許訪問。特權(quán)執(zhí)行可以訪問所有資源。處理模式始終是特權(quán)訪問,線程模式可以是特權(quán)或非特權(quán)訪問。

Cortex-M3編程模式工作模式:Cortex-M3編程模式

主堆棧和進程堆棧線程模式使用主堆棧還是進程堆棧取決于CONTROL位[1]的值。該位可使用MSR或MRS來訪問,也可以在退出ISR時使用適當?shù)腅XC_RETURN的值來設置。Cortex-M3處理器17個寄存器13個通用寄存器,r0~r12分組的堆棧指針r13,SP_process和SP_main鏈接寄存器,r14,用于異常返回和接受來自PC的返回地址。程序計數(shù)器,r15,由于該寄存器的位0始終為0,所以該指令始終與字或半字邊界對齊。1個程序狀態(tài)寄存器,xPSR,訪問通過MRS和MSR指令。

Cortex-M3編程模式主堆棧和進程堆棧Cortex-M3編程模式寄存器集Cortex-M3編程模式寄存器集Cortex-M3編程模式支持數(shù)據(jù)類型:32位,16位,8位。存儲器格式:Coretx-M3處理器能夠以小端格式和大端格式訪問存儲器的數(shù)據(jù)字,而訪問代碼始終使用小端模式。小端格式中,一個字中最低地址的字節(jié)位為字節(jié)的最低有效字節(jié)。最高地址的字節(jié)為最高有效字節(jié)。在大端格式中,一個字中最低地址的字節(jié)為該字的最高有效字節(jié),而最高地址的字節(jié)為最低有效字節(jié)。

Cortex-M3編程模式支持數(shù)據(jù)類型:32位,16位,8位Cortex-M3存儲器映射固定的存儲器映射,下圖為其映射結(jié)構(gòu)。Cortex-M3存儲器映射固定的存儲器映射,下圖為其映射結(jié)Cortex-M3存儲器映射存儲器接口存儲器映射接口Code取指令在ICode,數(shù)據(jù)訪問在Dcode。SRAM取指令和數(shù)據(jù)訪問都在Systembus。Peripheral同上ExternalRAM同上ExternalDevice同上Periph_bitband數(shù)據(jù)訪問別名,指令訪問非別名。SRAM_bitband同上PrivatePeripheralBus該存儲區(qū)域從不執(zhí)行。不能通過MPU修改System廠商系統(tǒng)外設的系統(tǒng)部分,同樣為不能執(zhí)行。Cortex-M3存儲器映射存儲器接口存儲器映射接口CodeCortex-M3存儲器映射Bit-banding機制

別名區(qū)的一個字映射為Bit-banding的一個位。即更改別名區(qū)里的某個字節(jié)內(nèi)容,相當于更改了Bit-banding區(qū)的某一位內(nèi)容。處理器的存儲器映射包括來兩個Bit-banding區(qū)域,分別位于SRAM和外設存儲區(qū)域中的最低1MB。

別名區(qū)的字對應Bit-banding區(qū)的對應為公式如下: bit_word_offset=(byte_offset*32)+(bit_number*4) bit_word_addr=bit_band_base+bit_word_offset

例如:地址0x23FFFFE0的別名字映射為0x200FFFFF的Bit-banding字節(jié)的位0; 0x23FFFFE0=0x22000000+(0xFFFFF*32)+0*4

下圖為Bit-banding映射圖

Cortex-M3存儲器映射Bit-banding機制Cortex-M3存儲器映射Cortex-M3存儲器映射Cortex-M3異常處理Cortex-M3處理器和嵌套向量中斷控制器(NVIC)對所有異常按優(yōu)先級進行排序并處理。所有異常都在處理模式中操作。出現(xiàn)異常時,自動將處理器狀態(tài)保存到堆棧中,并在中斷服務程序(ISR)結(jié)束時自動從堆棧中恢復。在狀態(tài)保存的同時取出向量快速地進入中斷。處理器支持末尾連鎖(tail-chaining)中斷技術(shù),它能夠在沒有多余的狀態(tài)保存和恢復指令的情況下執(zhí)行背對背中斷(back-to-backinterrupt)。以下特性可使能高效的低延遲異常處理。特性:自動的狀態(tài)保存和恢復。處理器在進入ISR之前將狀態(tài)寄存器壓棧,退出ISR之后將它們出棧,實現(xiàn)上述操作時不需要多余的指令。優(yōu)先級屏蔽支持臨界區(qū)Cortex-M3異常處理Cortex-M3處理器和嵌套向Cortex-M3異常處理自動讀取代碼存儲器或SRAM中包含ISR地址的向量表入口。該操作與狀態(tài)保存同時執(zhí)行。支持末尾連鎖(tail-chaining),在末尾連鎖(tail-chaining)中,處理器在兩個ISR之間沒有對寄存器進行出棧和壓棧操作的情況下處理背對背中斷。中斷優(yōu)先級可動態(tài)重新設置。Cortex-M3與NVIC之間采用緊耦合接口,通過該接口可以及早地對中斷和高優(yōu)先級的遲來中斷進行處理。中斷數(shù)目可配置為1~240。中斷優(yōu)先級的數(shù)目可配置為1~8位(1~256級)。處理模式和線程模式具有獨立的堆棧和特權(quán)等級。使用C/C++標準的調(diào)用規(guī)范:ARM架構(gòu)的過程調(diào)用標準(PCSAA)執(zhí)行ISR控制傳輸。Cortex-M3異常處理自動讀取代碼存儲器或SRAM中Cortex-M3電源管理ARMv7-M架構(gòu)支持為減少功耗而讓Cortex-M3和系統(tǒng)時鐘停止運行的系統(tǒng)睡眠模式。睡眠機制描述立即睡眠等待中斷(WFI)或等待事件(WFE)指令請求立即睡眠模式。這些指令使得NVIC讓處理器進入掛起其他異常事件的低功耗狀態(tài)。退出時睡眠當系統(tǒng)控制寄存器的SLEEPONEXIT位置位時,一旦處理器退出最低優(yōu)先級的ISR,它就進入低功耗狀態(tài)。處理器無需將寄存器出棧,就可進入低功耗狀態(tài),并且無需讓寄存器壓棧就可以產(chǎn)生下一個異常事件。內(nèi)核一直處于睡眠狀態(tài)直至別的異常被掛起。這是一個自動的WFI模式。深度睡眠深度睡眠與立即睡眠和“退出時睡眠”機制共用。當系統(tǒng)控制寄存器的SLEEPDEEP位置位時,處理器指示系統(tǒng)可以進入深度睡眠。Cortex-M3電源管理ARMv7-M架構(gòu)支持為減少功耗存儲器保護單元MPUMPU是保護內(nèi)存的一個組件。支持標準的ARMv7(PMSA)“ProtectedMemorySystemArchitecture”

模型。MPU為以下操作提供完整的支持:

保護區(qū)域

重疊保護區(qū)區(qū)域

訪問權(quán)限

將存儲器屬性輸出到系統(tǒng)MPU可以用于:強制執(zhí)行特權(quán)原則分離程序強制執(zhí)行訪問原則存儲器保護單元MPUMPU是保護內(nèi)存的一個組件。支持標準的總線接口ICode存儲器接口。從Code存儲器空間(0x0000000–0x1FFFFFFF)的取指都在這條32位AHBLite總線上執(zhí)行。DCode存儲器接口。對Code存儲器空間(0x0000000–0x1FFFFFFF)進行數(shù)據(jù)和調(diào)試訪問都在這條32位AHBLite總線上執(zhí)行。系統(tǒng)接口。對系統(tǒng)空間(0x20000000–0xDFFFFFFF)進行取指、數(shù)據(jù)和調(diào)試訪問都在這條32位AHBLite總線上執(zhí)行。外部專用外設總線(PPB)。對外部PPB空間(oxE0040000–0xE00FFFFF)進行數(shù)據(jù)和調(diào)試訪問都在這條32位APB總線(AMBAv2.0)上執(zhí)行。跟蹤端口接口單元(TPIU)和廠商特定的外圍器件都在這條總線上。總線接口ICode存儲器接口。從Code存儲器空間(0調(diào)試跟蹤端口內(nèi)核調(diào)試端口:通過內(nèi)核調(diào)試寄存器進行訪問,而調(diào)試訪問這些寄存器時需通過AHB-AP端口。系統(tǒng)調(diào)試端口:其調(diào)試控制和數(shù)據(jù)訪問也是通過AHB-AP端口實現(xiàn)。跟蹤端口:跟蹤端口的接口單元充當嵌入式跟蹤宏單元(ETM)和儀表跟蹤宏單元(ITM)與跟蹤端口分析儀(TPA)之間的橋,跟蹤數(shù)據(jù)從ETM和ITM流入TPIU,并從TPIU流向跟蹤端口,ETM和ITM具有獨立的ID,并在需要的地方將ID封包,然后由跟蹤端口分析儀(TPA)捕獲。調(diào)試跟蹤端口內(nèi)核調(diào)試端口:通過內(nèi)核調(diào)試寄存器進行訪問,而調(diào)試開發(fā)軟件支持KeilRealViewMDK:支持ARM7、ARM9和最新的Cortex-M3核處理器,自動配置啟動代碼,集成Flash燒寫模塊,強大的Simulation設備模擬,性能分析等功能,IAR:被業(yè)界評為最佳專用開發(fā)工具。其中IARJ-TraceforCortex-M3跟蹤仿真器是世界上第一款支持ARMCortex-M3的高速跟蹤仿真器。CooCox

:免費開源其中CoIDE為ARM

Cortex

M系列的開發(fā)者提供了一套完整的集成開發(fā)環(huán)境,包括工程管理、編輯、編譯工具、調(diào)試器及一個開發(fā)者可以分享自己的代碼和看法的交流平臺。開發(fā)軟件支持KeilRealViewMDK:支持ARM7RTOS支持RTX:知名的的Keil公司。uCOS-II:Micrium公司,用于教育和研究是免費的。FreeRTOS:GPL(GeneralPublicLicense)GNU通用公共許可證。RT-Thread:國內(nèi)RT-Thread工作室開發(fā)的開源實時操作系統(tǒng)。VxWorks:WindRiverSystem(風河系統(tǒng)),比較高級,但是不開源。09年被因特爾收購。RTOS支持RTX:知名的的Keil公司。模式&級別模式&級別謝謝!謝謝!Cortex-M3處理器體系結(jié)構(gòu)Cortex-M3處理器體系結(jié)構(gòu)概覽Cortex-M3處理器內(nèi)核Cortex-M3處理器指令集Thumb-2Cortex-M3嵌套向量中斷控制器NVICCortex-M3存儲器管理存儲器保護單元MPU總線接口調(diào)試跟蹤接口開發(fā)軟件和RTOS概覽Cortex-M3處理器內(nèi)核Cortex-M3定位從右邊的圖可以分析出Cortex-M3處理器架構(gòu):ARMv7-M指令集:Thumb-2 ARM架構(gòu)支持各種性能點上的實現(xiàn)。在許多細分市場中它都占有主要架構(gòu)的地位。而其中Cortex-M

處理器,通過配置文件,可快速進行中斷處理,適用于需要高度確定的行為和最少門數(shù)的成本、功耗敏感型設備。而Cortex-M3處理器作為其中的佼佼者,就不得不引起我們的關(guān)注。Cortex-M3定位從右邊的圖可以分析出Cortex-M3Cortex-M3現(xiàn)狀NXP:LPC17000TI->LuminaryMicro:LM3SST:STM32Atmel:SAM3U此四大知名廠商采用Cortex-M3處理器的設計出來的芯片,主要在于片上存儲器容量、集成外設、功能模塊的區(qū)別。Cortex-M3現(xiàn)狀NXP:LPC17000Cortex-M3內(nèi)核方框圖Cortex-M3處理器主要包括:處理器內(nèi)核與處理器內(nèi)核緊密結(jié)合的嵌套向量中斷控制器(NVIC)以實現(xiàn)低延遲的中斷處理存儲器保護單元(MPU),可選部件MPU實現(xiàn)存儲器保護總線接口調(diào)試接口Cortex-M3內(nèi)核方框圖Cortex-M3處理器主要包括Cortex-M3性能參數(shù)Cortex-M3處理器規(guī)范

以下引用的數(shù)字是使用通用TSMC工藝技術(shù)和ARM物理IP

標準單元庫和RAM

的合成核心的說明。Dhrystone:整數(shù)運算能力在1MHz頻率下,每秒執(zhí)行一百二十五萬條指令的整數(shù)運算能力。Cortex-M3性能參數(shù)Cortex-M3處理器規(guī)范Cortex-M3處理器指令集Thumb-2ARMThumb-2技術(shù)的代碼密度和代碼性能引自:ARM公司RichardPhelan撰寫的《如何使用Thumb-2改善代碼密度和性能》Cortex-M3處理器指令集Thumb-2ARMThumCortex-M3處理器指令集Thumb-2Thumb-2技術(shù)可以帶來很多好處:可以實現(xiàn)ARM指令的所有功能。增加了12條新指令,可以改進代碼性能和代碼密度之間的平衡。代碼性能達到了純ARM代碼性能的98%。相對ARM代碼,Thumb-2代碼的大小僅有其74%代碼密度比現(xiàn)有的Thumb指令集更高。代碼大小平均降低5%。代碼速度平均提高2-3%。注:Cortex-M3不支持ARM指令集。Cortex-M3處理器指令集Thumb-2Thumb-2技Cortex-M技術(shù)之CMSISARM

Cortex微控制器軟件接口標準(CMSIS)

Cortex-M

處理器系列的與供應商無關(guān)的硬件抽象層。

使用CMSIS,可以為接口外設、實時操作系統(tǒng)和中間件實現(xiàn)一致且簡單的軟件接口,從而簡化軟件的重用、縮短新微控制器開發(fā)人員的學習過程,并縮短新產(chǎn)品的上市時間。注:此接口標準可以從各自芯片廠家那里得到。例如ST公司把CMSIS放在其開發(fā)的固件庫內(nèi)。CMSIS全稱:CortexMicrocontrollerSoftwareInterfaceStandard以下是CMSIS結(jié)構(gòu)圖Cortex-M技術(shù)之CMSISARM

Cortex微控Cortex-M技術(shù)之CMSISCortex-M技術(shù)之CMSISCortex-M技術(shù)之NVICNVIC為處理器提供了卓越的中斷處理能力。

Cortex-M處理器使用一個矢量表,其中包含要為特定中斷處理程序執(zhí)行的函數(shù)的地址。接受中斷時,處理器會從該矢量表中提取地址。為了減少門數(shù)并增強系統(tǒng)靈活性,Cortex-M處理器使用一個基于堆棧的異常模型。出現(xiàn)異常時,系統(tǒng)會將關(guān)鍵通用寄存器推送到堆棧上。完成入棧和指令提取后,將執(zhí)行中斷服務例程或故障處理程序,然后自動還原寄存器以使中斷的程序恢復正常執(zhí)行。使用此方法,便無需編寫匯編器包裝器了(而這是對基于C語言的傳統(tǒng)中斷服務例程執(zhí)行堆棧操作所必需的),從而使得應用程序的開發(fā)變得非常容易。NVIC支持中斷嵌套(入棧),從而允許通過運用較高的優(yōu)先級來較早地為某個中斷提供服務。Cortex-M技術(shù)之NVICNVIC為處理器提供了卓越Cortex-M技術(shù)之NVIC在硬件中完成對中斷的響應Cortex-M系列處理器的中斷響應是從發(fā)出中斷信號到執(zhí)行中斷服務例程的周期數(shù)。它包括:

檢測中斷背對背或遲到中斷的最佳處理提取矢量地址將易損壞的寄存器入棧跳轉(zhuǎn)到中斷處理程序這些任務在硬件中執(zhí)行,并且包含在為Cortex-M處理器報出的中斷響應周期時間中。在其他許多體系結(jié)構(gòu)中,這些任務必須在軟件的中斷處理程序中執(zhí)行,從而引起延遲并使得過程十分復雜。Cortex-M技術(shù)之NVIC在硬件中完成對中斷的響應Cortex-M技術(shù)之NVICNVIC中的尾鏈在背對背中斷的情況下,傳統(tǒng)系統(tǒng)會重復完整的狀態(tài)保存和還原周期兩次,從而導致更高的延遲。Cortex-M處理器通過在NVIC硬件中實現(xiàn)尾鏈技術(shù)簡化了活動中斷和掛起的中斷之間的轉(zhuǎn)換。處理器狀態(tài)會在比軟件實現(xiàn)時間更少的周期內(nèi)自動保存在中斷條目上并在中斷退出時還原,從而顯著提升低MHz系統(tǒng)的性能。

Cortex-M技術(shù)之NVICNVIC中的尾鏈Cortex-M技術(shù)之NVICNVIC對遲到的較高優(yōu)先級中斷的響應如果在為上一個中斷執(zhí)行堆棧推送期間較高優(yōu)先級的中斷遲到,NVIC會立即提取新的矢量地址來為掛起的中斷提供服務,如上所示。Cortex-MNVIC對這些可能性提供具有確定性的響應并支持遲到和搶占。Cortex-M技術(shù)之NVICNVIC對遲到的較高優(yōu)先級Cortex-M技術(shù)之NVICNVIC進行的堆棧彈出搶占同樣,如果異常到達,NVIC將放棄堆棧彈出并立即為新的中斷提供服務,如上所示。通過搶占并切換到第二個中斷而不完成狀態(tài)還原和保存,NVIC以具有確定性的方式實現(xiàn)了縮短延遲。Cortex-M技術(shù)之NVICNVIC進行的堆棧彈出搶占Cortex-M3編程模式工作模式:線程模式——在復位時處理器進入線程模式,異常返回時也會進入該模式。處理模式——出現(xiàn)異常時處理器進入處理模式。工作狀態(tài):Thumb狀態(tài)——是16位和32位半字對齊的thumb和thumb-2指令的正常執(zhí)行狀態(tài)。調(diào)試狀態(tài)——處理器停機調(diào)試時進入該狀態(tài)。特權(quán)與非特權(quán)訪問:代碼可以是特權(quán)執(zhí)行或非特權(quán)執(zhí)行。非特權(quán)執(zhí)行時對有些資源的訪問受到限制或不允許訪問。特權(quán)執(zhí)行可以訪問所有資源。處理模式始終是特權(quán)訪問,線程模式可以是特權(quán)或非特權(quán)訪問。

Cortex-M3編程模式工作模式:Cortex-M3編程模式

主堆棧和進程堆棧線程模式使用主堆棧還是進程堆棧取決于CONTROL位[1]的值。該位可使用MSR或MRS來訪問,也可以在退出ISR時使用適當?shù)腅XC_RETURN的值來設置。Cortex-M3處理器17個寄存器13個通用寄存器,r0~r12分組的堆棧指針r13,SP_process和SP_main鏈接寄存器,r14,用于異常返回和接受來自PC的返回地址。程序計數(shù)器,r15,由于該寄存器的位0始終為0,所以該指令始終與字或半字邊界對齊。1個程序狀態(tài)寄存器,xPSR,訪問通過MRS和MSR指令。

Cortex-M3編程模式主堆棧和進程堆棧Cortex-M3編程模式寄存器集Cortex-M3編程模式寄存器集Cortex-M3編程模式支持數(shù)據(jù)類型:32位,16位,8位。存儲器格式:Coretx-M3處理器能夠以小端格式和大端格式訪問存儲器的數(shù)據(jù)字,而訪問代碼始終使用小端模式。小端格式中,一個字中最低地址的字節(jié)位為字節(jié)的最低有效字節(jié)。最高地址的字節(jié)為最高有效字節(jié)。在大端格式中,一個字中最低地址的字節(jié)為該字的最高有效字節(jié),而最高地址的字節(jié)為最低有效字節(jié)。

Cortex-M3編程模式支持數(shù)據(jù)類型:32位,16位,8位Cortex-M3存儲器映射固定的存儲器映射,下圖為其映射結(jié)構(gòu)。Cortex-M3存儲器映射固定的存儲器映射,下圖為其映射結(jié)Cortex-M3存儲器映射存儲器接口存儲器映射接口Code取指令在ICode,數(shù)據(jù)訪問在Dcode。SRAM取指令和數(shù)據(jù)訪問都在Systembus。Peripheral同上ExternalRAM同上ExternalDevice同上Periph_bitband數(shù)據(jù)訪問別名,指令訪問非別名。SRAM_bitband同上PrivatePeripheralBus該存儲區(qū)域從不執(zhí)行。不能通過MPU修改System廠商系統(tǒng)外設的系統(tǒng)部分,同樣為不能執(zhí)行。Cortex-M3存儲器映射存儲器接口存儲器映射接口CodeCortex-M3存儲器映射Bit-banding機制

別名區(qū)的一個字映射為Bit-banding的一個位。即更改別名區(qū)里的某個字節(jié)內(nèi)容,相當于更改了Bit-banding區(qū)的某一位內(nèi)容。處理器的存儲器映射包括來兩個Bit-banding區(qū)域,分別位于SRAM和外設存儲區(qū)域中的最低1MB。

別名區(qū)的字對應Bit-banding區(qū)的對應為公式如下: bit_word_offset=(byte_offset*32)+(bit_number*4) bit_word_addr=bit_band_base+bit_word_offset

例如:地址0x23FFFFE0的別名字映射為0x200FFFFF的Bit-banding字節(jié)的位0; 0x23FFFFE0=0x22000000+(0xFFFFF*32)+0*4

下圖為Bit-banding映射圖

Cortex-M3存儲器映射Bit-banding機制Cortex-M3存儲器映射Cortex-M3存儲器映射Cortex-M3異常處理Cortex-M3處理器和嵌套向量中斷控制器(NVIC)對所有異常按優(yōu)先級進行排序并處理。所有異常都在處理模式中操作。出現(xiàn)異常時,自動將處理器狀態(tài)保存到堆棧中,并在中斷服務程序(ISR)結(jié)束時自動從堆棧中恢復。在狀態(tài)保存的同時取出向量快速地進入中斷。處理器支持末尾連鎖(tail-chaining)中斷技術(shù),它能夠在沒有多余的狀態(tài)保存和恢復指令的情況下執(zhí)行背對背中斷(back-to-backinterrupt)。以下特性可使能高效的低延遲異常處理。特性:自動的狀態(tài)保存和恢復。處理器在進入ISR之前將狀態(tài)寄存器壓棧,退出ISR之后將它們出棧,實現(xiàn)上述操作時不需要多余的指令。優(yōu)先級屏蔽支持臨界區(qū)Cortex-M3異常處理Cortex-M3處理器和嵌套向Cortex-M3異常處理自動讀取代碼存儲器或SRAM中包含ISR地址的向量表入口。該操作與狀態(tài)保存同時執(zhí)行。支持末尾連鎖(tail-chaining),在末尾連鎖(tail-chaining)中,處理器在兩個ISR之間沒有對寄存器進行出棧和壓棧操作的情況下處理背對背中斷。中斷優(yōu)先級可動態(tài)重新設置。Cortex-M3與NVIC之間采用緊耦合接口,通過該接口可以及早地對中斷和高優(yōu)先級的遲來中斷進行處理。中斷數(shù)目可配置為1~240。中斷優(yōu)先級的數(shù)目可配置為1~8位(1~256級)。處理模式和線程模式具有獨立的堆棧和特權(quán)等級。使用C/C++標準的調(diào)用規(guī)范:ARM架構(gòu)的過程調(diào)用標準(PCSAA)執(zhí)行ISR控制傳輸。Cortex-M3異常處理自動讀取代碼存儲器或SRAM中Cortex-M3電源管理ARMv7-M架構(gòu)支持為減少功耗而讓Cortex-M3和系統(tǒng)時鐘停止運行的系統(tǒng)睡眠模式。睡眠機制描述立即睡眠等待中斷(WFI)或等待事件(WFE)指令請求立即睡眠模式。這些指令使得NVIC讓處理器進入掛起其他異常事件的低功耗狀態(tài)。退出時睡眠當系統(tǒng)控制寄存器的SLEEPONEXIT位置位時,一旦處理器退出最低優(yōu)先級的ISR,它就進入低功耗狀態(tài)。處理器無需將寄存器出棧,就可進入低功耗狀態(tài),并且無需讓寄存器壓棧就可以產(chǎn)生下一個異常事件。內(nèi)核一直處于睡眠狀態(tài)直至別的異常被掛起。這是一個自動的WFI模式。深度睡眠深度睡眠與立即睡眠和“退出時睡眠”機制共用。當系統(tǒng)控制寄存器的SLEEPDEEP位置位時,處理器指示系統(tǒng)可以進入深度睡眠。Cortex-M3電源管理ARMv7-M架構(gòu)支持為減少功耗存儲器保護單元MPUMPU是保護內(nèi)存的一個組件。支持標準的ARMv7(PMSA)“ProtectedMemorySystemArchitecture”

溫馨提示

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

評論

0/150

提交評論