1.寄存器
CM3擁有R0~R15通用寄存器和一些特殊功能寄存器
R0~R12這些通用寄存器,復位初始值都是不可預料的
2.CM3有R0到R15的通用寄存器組
注:絕大部分的16位thumb只能訪問R0到R7,而32位thumb-2可以訪問全部寄存器
3.特殊功能寄存器
3.1程序狀態寄存器組(應用程序PSR+中斷號PSR+執行PSR)
3.2中斷屏蔽寄存器組:用于控制異常的除能和使能
3.3控制寄存器:用于定義特權級別和當前使用哪個堆棧指針
4.操作模式和特權級別:
兩種操作模式(處理器模式):Handler模式和線程模式(用于區分異常服務例程的代碼和普通程序的代碼)
兩種特權等級:特權級和用戶級(是指在硬件層面上對存儲器訪問權限的設置)
注:CM3在運行主程序(即線程模式)可以使用特權級別和用戶級別;但是異常服務例程(即handler模式)只能使用特權級別。當處于線程+用戶模式時一些訪問權限將被禁止
將代碼區分成用戶級和特權級,有利于程序架構的穩定,如某一個用戶代碼出問題,不會使其成為害群之狗,因為用戶級別的代碼是禁止對一些要害寄存器操作的。
5.異常處理
5.1CONTROL[0]=0;
5.2CONTROL[0]=1;
CONTROL[0]只有在特權級別下可以訪問,若在用戶級別想訪問先通過"系統服務呼叫指令(SVC)"來觸發SVC異常,然后在該異常的服務例程中可以修改CONTROL[0]。
6.下面是各操作模式的轉換
7.異常和中斷
可以有11個系統異常和最多240個外部中斷(IRQ),具體芯片使用了多少要看芯片制造廠商。
作為中斷功能的強化,NVIC 還有一條NMI輸入信號線,具體做什么由芯片制造商決定,NMI(not masked interrupted)
8.向量表:當一個異常被CM3內核接受。對應的異常Handler就會執行,向量表用來決定Handler的入口地址。
9.CM3的雙堆棧:主堆棧(MSP)和進程堆棧(PSP)。是由CONTROL[1]控制的。
10.復位序列:
先從0X00地址取出MSP的值再從0x04地址取出PC的初始值,0X04處存的值是復位向量,而不是跳轉指令。
此處CM3與ARM及單片機不同。以前ARM都是從0X00地址開始執行第一條指令,一般第一條指令都是跳轉指令
11.MSP及PC初始化的一個例程
-
寄存器
+關注
關注
31文章
5355瀏覽量
120531 -
Cortex-M3
+關注
關注
9文章
270瀏覽量
59500
原文標題:Cortex-M3寄存器等基礎知識
文章出處:【微信號:mcu168,微信公眾號:硬件攻城獅】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論