查看: 3221|回復: 0
打印 上一主題 下一主題

純干貨|最經(jīng)典的STM32-M3概述!

[復制鏈接]
跳轉到指定樓層
樓主
發(fā)表于 2017-8-6 09:20:35 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
關(guān)鍵詞: STM32
4、Cortex-M3概覽
1)簡(jiǎn)介     
Cortex-M3是一個(gè) 32位處理器內核。內部的數據路徑是 32位的,寄存器是 32位的,存儲器接口也是 32 位的。CM3 采用了哈佛結構,擁有獨立的指令總線(xiàn)和數據總線(xiàn),可以讓取指與數據訪(fǎng)問(wèn)并行不悖。這樣一來(lái)數據訪(fǎng)問(wèn)不再占用指令總線(xiàn),從而提升了性能。為實(shí)現這個(gè)特性, CM3內部含有好幾條總線(xiàn)接口,每條都為自己的應用場(chǎng)合優(yōu)化過(guò),并且它們可以并行工作。但是另一方面,指令總線(xiàn)和數據總線(xiàn)共享同一個(gè)存儲器空間(一個(gè)統一的存儲器系統)。     
比較復雜的應用可能需要更多的存儲系統功能,為此CM3提供一個(gè)可選的MPU,而且在需要的情況下也可以使用外部的 cache。另外在CM3中,Both小端模式和大端模式都是支持的。
2)Cortex-M3的簡(jiǎn)化圖
file:///C:/Users/%E9%83%AD%E6%99%93%E5%A8%9F/AppData/Local/Temp/ksohtml/wps78DB.tmp.png
3)寄存器組
處理器擁有R0-R15的寄存器組,其中R13最為堆棧指針SP,SP有兩個(gè),但是同一時(shí)刻只能有一個(gè)可以看到,這就是所謂的“banked”寄存器。
file:///C:/Users/%E9%83%AD%E6%99%93%E5%A8%9F/AppData/Local/Temp/ksohtml/wps78DC.tmp.png
a、R0-R12都是 32位通用寄存器,用于數據操作。但是注意:絕大多數 16位Thumb指令只能訪(fǎng)問(wèn)R0-R7,而 32位 Thumb-2指令可以訪(fǎng)問(wèn)所有寄存器。  
b、Cortex-M3擁有兩個(gè)堆棧指針,然而它們是 banked,因此任一時(shí)刻只能使用其中的一個(gè)。
主堆棧指針(MSP):復位后缺省使用的堆棧指針,用于操作系統內核以及異常處理例程(包括中斷服務(wù)例程)
進(jìn)程堆棧指針(PSP):由用戶(hù)的應用程序代碼使用。
堆棧指針的最低兩位永遠是0,這意味著(zhù)堆?偸4字節對齊的。
c、R14:連接寄存器--當呼叫一個(gè)子程序時(shí),由R14存儲返回地址
d、R15:程序計數寄存器--指向當前的程序地址,如果修改它的值,就能改變程序的執行流(這里有很多高級技巧)
e、Cortex-M3還在內核水平上搭載了若干特殊功能寄存器,包括
程序狀態(tài)字寄存器組(PSRs)
中斷屏蔽寄存器組(PRIMASK, FAULTMASK, BASEPRI)
控制寄存器(CONTROL)
file:///C:/Users/%E9%83%AD%E6%99%93%E5%A8%9F/AppData/Local/Temp/ksohtml/wps78ED.tmp.png
Cortex-M3處理器支持兩種處理器的操作模式,還支持兩級特權操作。
      
兩種操作模式分別為:處理者模式和線(xiàn)程模式(thread mode)。引入兩個(gè)模式的本意,是用于區別普通應用程序的代碼和異常服務(wù)例程的代碼——包括中斷服務(wù)例程的代碼。
Cortex-M3 的另一個(gè)側面則是特權的分級——特權級和用戶(hù)級。這可以提供一種存儲器訪(fǎng)問(wèn)的保護機制,使得普通的用戶(hù)程序代碼不能意外地,甚至是惡意地執行涉及到要害的操作。處理器支持兩種特權級,這也是一個(gè)基本的安全模型。
file:///C:/Users/%E9%83%AD%E6%99%93%E5%A8%9F/AppData/Local/Temp/ksohtml/wps78FE.tmp.png
CM3 運行主應用程序時(shí)(線(xiàn)程模式),既可以使用特權級,也可以使用用戶(hù)級;但是異常服務(wù)例程必須在特權級下執行。復位后,處理器默認進(jìn)入線(xiàn)程模式,特權極訪(fǎng)問(wèn)。在特權級下,程序可以訪(fǎng)問(wèn)所有范圍的存儲器(如果有 MPU,還要 在MPU規定的禁地之外),并且可以執行所有指令。
在特權級下的程序可以為所欲為,但也可能會(huì )把自己給玩進(jìn)去——切換到用戶(hù)級。一旦進(jìn)入用戶(hù)級,再想回來(lái)就得走“法律程序”了——用戶(hù)級的程序不能簡(jiǎn)簡(jiǎn)單單地試圖改寫(xiě) CONTROL寄存器就回到特權級,它必須先“申訴”:執行一條系統調用指令(SVC)。這會(huì )觸發(fā)SVC異常,然后由異常服務(wù)例程(通常是操作系統的一部分)接管,如果批準了進(jìn)入,則異常服務(wù)例程修改 CONTROL寄存器,才能在用戶(hù)級的線(xiàn)程模式下重新進(jìn)入特權級。信盈達,扣扣:一以七捂捂吧就領(lǐng)久要!
        
事實(shí)上,從用戶(hù)級到特權級的唯一途徑就是異常:如果在程序執行過(guò)程中觸發(fā)了一個(gè)異常,處理器總是先切換入特權級,并且在異常服務(wù)例程執行完畢退出時(shí),返回先前的狀態(tài)。
通過(guò)引入特權級和用戶(hù)級,就能夠在硬件水平上限制某些不受信任的或者還沒(méi)有調試好的程序,不讓它們隨便地配置涉及要害的寄存器,因而系統的可靠性得到了提高。進(jìn)一步地,如果配了 MPU,它還可以作為特權機制的補充——保護關(guān)鍵的存儲區域不被破壞,這些區域通常是操作系統的區域。
(4)內建的嵌套向量中斷控制器
Cortex-M3 在內核水平上搭載了一顆中斷控制器——嵌套向量中斷控制器 NVIC(Nested Vectored Interrupt Controller)。它與內核有很深的“親密接觸”——與內核是緊耦合的。
NVIC提供如下的功能:
·   可嵌套中斷支持
·   向量中斷支持
·   動(dòng)態(tài)優(yōu)先級調整支持
·   中斷延遲大大縮短
·   中斷可屏蔽
可嵌套中斷支持:  可嵌套中斷支持的作用范圍很廣,覆蓋了所有的外部中斷和絕大多數系統異常。外在表現是,這些異常都可以被賦予不同的優(yōu)先級。當前優(yōu)先級被存儲在 xPSR 的專(zhuān)用字段中。當一個(gè)異常發(fā)生時(shí),硬件會(huì )自動(dòng)比較該異常的優(yōu)先級是否比當前的異常優(yōu)先級更高。如果發(fā)現來(lái)了更高優(yōu)先級的異常,處理器就會(huì )中斷當前的中斷服務(wù)例程(或者是普通程序),而服務(wù)新來(lái)的異!戳⒓磽屨。
向量中斷支持:  當開(kāi)始響應一個(gè)中斷后,CM3會(huì )自動(dòng)定位一張向量表,并且根據中斷號從表中找出 ISR的入口地址,然后跳轉過(guò)去執行。不需要像以前的 ARM那樣,由軟件來(lái)分辨到底是哪個(gè)中斷發(fā)生了,也無(wú)需半導體廠(chǎng)商提供私有的中斷控制器來(lái)完成這種工作。這么一來(lái),中斷延遲時(shí)間大為縮短。

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

關(guān)于我們  -  服務(wù)條款  -  使用指南  -  站點(diǎn)地圖  -  友情鏈接  -  聯(lián)系我們
電子工程網(wǎng) © 版權所有   京ICP備16069177號 | 京公網(wǎng)安備11010502021702
快速回復 返回頂部 返回列表
午夜高清国产拍精品福利|亚洲色精品88色婷婷七月丁香|91久久精品无码一区|99久久国语露脸精品|动漫卡通亚洲综合专区48页