STM32是cortex-m3內核芯片,擁有cortex-m3的特性,以下介紹了cortex-m3的特權級別。
1、先來說一下操作模式:
cortex-m3有兩種操作模式:筆者覺得也可以稱為代碼執(zhí)行模式,線程模式(thread mode)和異常模式(handler mode),用于表示處理器在執(zhí)行什么代碼。
thread mode:執(zhí)行非異常代碼,也就是用戶代碼。
handler mode:執(zhí)行異常代碼,如中斷服務程序。
2、再來說一下特權級別:
cortex-m3有兩種權利級別:特權級(Privilege)和用戶級(user)。這兩種模式主要用于阻止對硬件的異常訪問,比如存儲資源、關鍵寄存器等。
特權級別:能夠訪問硬件所有存儲資源,能夠執(zhí)行所有指令。
用戶級別:禁止使用MSR和MRS訪問特殊功能寄存器(APSR除外),不能使用CPS指令。對系統(tǒng)控制空間的訪問有限制,即,不能訪問system tick、NVIC、system control block(SCB)。
如何才能在這兩個級別切換呢?答案是修改寄存器CONTROL[0]。這個寄存器只能在特權級別下修改,用戶級別下是不能修改此寄存器的,要想從用戶級別轉到特權級別,只能進入異常/中斷,然后在異常/中斷中修改寄存器,因為在異常/中斷中總是特權級別。
在線程模式,可以是特權級,也可以是用戶級。handler模式總是特權級的。在復位后,處理器處于線程模式+特權級。
3、介紹一下系統(tǒng)控制空間(SCS):
系統(tǒng)控制空間(system control space):在地址空間的位置,如下圖所示,地址區(qū)間0xE000E000-0xE000F000,這部分區(qū)域包含:System control block、system tick、Nested Vectored Interrupt Controller(NVIC)、PMU等。這些寄存器是處理器能夠工作的根本,必須有相應權限才能修改,即,特權級才能修改。
System control block(SCB)包含了系統(tǒng)相關的寄存器,如下:
4、總結:
特權級有特權,權利大,能訪問所有資源,用戶級權利小,不能所有資源。說實話這權利級別一般不做修改,即,保持默認的特權級別。因為cortex-M3內核是個低端內核,很大一部分應用都是無操作系統(tǒng)的裸機執(zhí)行程序,在沒有特殊安全要求的前提下沒必要切來切去的,比較麻煩。
5、題外話:
我們在使用STM32跑實時操作系統(tǒng)的時候經(jīng)常使用systick作為操作系統(tǒng)的心跳,很多人不知道這個systick和普通的定時器有什么區(qū)別,通過上面介紹這個systick相關寄存器位于系統(tǒng)控制空間(SCS),用戶級別不能訪問systick寄存器,防止用戶級別代碼誤操作,篡改systick寄存器威脅系統(tǒng)安全。
-
寄存器
+關注
關注
31文章
5396瀏覽量
122481 -
內核
+關注
關注
3文章
1402瀏覽量
40872 -
STM32
+關注
關注
2281文章
10979瀏覽量
360770 -
Cortex
+關注
關注
2文章
203瀏覽量
46952 -
Cortex-M3
+關注
關注
9文章
270瀏覽量
59948
發(fā)布評論請先 登錄
相關推薦
【圖書分享】Cortex-M3 + μC/OS-II嵌入式系統(tǒng)開發(fā)入門與應用
【安富萊】【RTX操作系統(tǒng)教程】第9章 任務運行在特權級或非特權級模式
嵌入式MCU ARM Cortex-M3工作模式與異常
Cortex-M3簡述
Cortex-M3 技術參考手冊
ARM Cortex-M3 內核的不同功能模塊

Cortex-M3處理器內核與基于Cortex-M3的MCU關系

評論