經過前一期的芝識課堂,我們了解了東芝MCU產品所基于Arm Cortex-M3內核的基本結構和寄存器分配的細節。大家一定迫不及待地想知道Arm Cortex-M3內核的操作模式又有哪些技巧吧?今天芝子就帶大家詳細學習一下吧!
Arm Cortex-M3有兩個特權(特權/非特權)和兩種操作模式(線程/處理者)。對于嵌入式使用,可以選擇只有特權級別的基本配置或在特權和非特權之間切換的配置。在特權/非特權級別下,通過在分配給寄存器R13的主棧指針(MSP)與進程棧指針(PSP)之間切換,堆棧區域可由操作系統內核以及用戶例程等處理功能分離和管理。
如果發生異常/中斷的程序,控制寄存器的狀態以及堆棧指針的切換情況是怎么樣的呢?如圖1所示,當發生異常/中斷時,使用中的堆棧會隨控制寄存器CONTROL的狀態而改變。以顯示主棧指針(MSP)和進程棧指針(PSP)之間的切換狀態。
圖1 發生異常/中斷的程序時控制寄存器的狀態
以及堆棧指針的切換
Arm Cortex-M3內核的所有異常都在特權模式下運行,且具有中斷特權并支持嵌套中斷,所有異常都集成在NVIC寄存器中。值得注意的是,因每個設備而異,部分設備中斷過程支持外部中斷。異常可通過復位、中斷、故障和系統調用執行。異常類型和特權級別如圖2所示。
圖2 異常類型和特權級別
對于集成異常的NVIC控制寄存器,當發生異常和中斷操作時,它作為從主內核到存儲器的設備被訪問,用于控制各中斷使能的設置與清除、控制各中斷請求的設置與清除(釋放保留)以及控制中斷的優先級。
下面我們再帶大家了解NVIC塊的基本功能之一——外部中斷處理控制,將使能位和掛起位分配給每個外部中斷信號,并配置控制寄存器。控制寄存器分為僅設置寄存器和僅清除寄存器。外部中斷的產生通過優先級寄存器的信息來控制。該寄存器用于設置中斷優先級以及使能位和掛起位的狀態,如圖3。Arm Cortex-M3通過NVIC控制實現高速入棧/出棧處理,此外,如果中斷處理過程中同時發生中斷請求或發生高優先級的中斷請求,則入棧/出棧處理的寄存器自動保存將被忽略,從而改善處理時間。
圖3
介紹完異常和中斷操作,我們再來看看Arm Cortex-M3規格的存儲器映射。圖4是Arm Cortex-M3規格的存儲器映射示意圖,可以清楚看到每個存儲器對應的存儲功能。圖5則展示了這款MCU的存儲器映射細節,從中可以看到相比于Arm Cortex-M3標準的規格,該芯片的部分存儲器映射進行了深度優化。
圖4
圖5
在CPU接收到外部中斷/異常時,它會先查詢向量表,以查找到相應的中斷服務程序地址。向量表是指中斷服務程序入口地址的偏移量與段基址,一個中斷向量占據4字節空間。各種異常的處理者(處理例程)的起始地址是分別設置的。當異常或中斷事件發生時,從地址開始獲取異常處理者。各種異常的向量表如圖6所示。
圖6
此外,關于位帶和位帶別名區的詳細信息如圖7所示。存儲器中的數據通過1位單元進行有效運算。1位單元通過將位帶區的數據加載或存儲到位帶別名區來訪問這些數據。
那么位帶區數據和位帶別名區的地址如何分配?位帶別名區的地址以字為單位進行分配(1個字=32位):位帶別名區的字地址bit0訪問位帶區的每個位;位帶別名區的字地址的分配方式為,每個地址分配給位帶區的每個位。
圖7
今天的芝識課堂,我們深入探討了Arm Cortex-M3內核的操作模式,并分析了存儲器映射的具體細節。接下來我們會一起進入東芝MCU產品的外圍電路部分,學習如何針對不同應用增加各種功能單元,從而助力低功耗高性能解決方案開發的,敬請期待!
審核編輯:劉清
-
存儲器
+關注
關注
38文章
7644瀏覽量
167127 -
Cortex-M3
+關注
關注
9文章
276瀏覽量
60237 -
NVIC
+關注
關注
0文章
36瀏覽量
12019 -
外部中斷
+關注
關注
1文章
133瀏覽量
16178 -
控制寄存器
+關注
關注
0文章
34瀏覽量
11645
原文標題:芝識課堂——強大的Arm? Cortex?-M3內核(下)
文章出處:【微信號:toshiba_semicon,微信公眾號:東芝半導體】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
針對ARM Cortex M3平臺的代碼移植
特大好消息:ARM Cortex-M0/M3免收授權費了
如何定制基于Cortex-M0/M3免費內核的自主SoC
如何定制基于Cortex-M0/M3免費內核的自主SoC | 直播報名(11.25)
Cortex‐M3的架構指南
Cortex M3權威指南
使用FreeRTOS TM實時內核ARM Cortex M3版
芝識課堂【TX03微控制器】—強大的Arm? Cortex?-M3內核(上)

評論