電子發(fā)燒友App

硬聲App

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示
創(chuàng)作
電子發(fā)燒友網(wǎng)>電子資料下載>嵌入式開(kāi)發(fā)>STM32經(jīng)典概述,純干貨資料下載

STM32經(jīng)典概述,純干貨資料下載

2021-04-21 | pdf | 431.58KB | 次下載 | 3積分

資料介紹

首先,在學(xué)習(xí)Cortex-M3時(shí),我們必須要知道必要的縮略語(yǔ)。 整理如下:AMBA:先進(jìn)單片機(jī)總線架構(gòu) ADK:AMBA設(shè)計(jì)套件AHB:先進(jìn)高性能總線 AHB-AP:AHB訪問(wèn)端口APB:先進(jìn)外設(shè)總線 ARM ARM:ARM架構(gòu)參考手冊(cè)ASIC:行業(yè)領(lǐng)域?qū)S?a href='http://www.ttokpm.com/v/tag/123/' target='_blank' class='arckwlink_none'>集成電路 ATB :先進(jìn)跟蹤總線BE8:字節(jié)不變式大端模式 CPI:每條指令的周期數(shù)DAP:調(diào)試訪問(wèn)端口 DSP數(shù)字信號(hào)處理(器)DWT:數(shù)據(jù)觀察點(diǎn)及跟蹤 ETM:嵌入式跟蹤宏單元FPB:閃存地址重載及斷點(diǎn) FSR:fault狀態(tài)寄存器HTM:Core Sight AHB跟蹤宏單元ICE:在線仿真器 IDE:集成開(kāi)發(fā)環(huán)境IRQ:中斷請(qǐng)求(通常是外中斷請(qǐng)求)ISA:指令系統(tǒng)架構(gòu) ISR:中斷服務(wù)例程ITM:儀器化跟蹤宏單元 JTAG:連接點(diǎn)測(cè)試行動(dòng)組(一個(gè)關(guān)于測(cè)試和調(diào)試接口的標(biāo)準(zhǔn))LR:連接寄存器LSB:最低有效位MSB:最高有效位LSU:加載存儲(chǔ)單元MCU微控制器單元MPU:存儲(chǔ)器保護(hù)單元MMU:存儲(chǔ)器管理單元MSP:主堆棧指針NMI:不可屏蔽中斷NVIC:嵌套向量中斷控制器PC:程序計(jì)數(shù)器PPB:私有外設(shè)總線同時(shí),還要如下規(guī)定: 數(shù)值:1. 4''hC , 0x123 都表示16進(jìn)制數(shù)2. #3表示數(shù)字3 (e.g., IRQ #3 就是指3號(hào)中斷)3. #immed_12表示一個(gè)12位的立即數(shù)4. 寄存器位。通常是表示一個(gè)位段的數(shù)值,例如bit[15:12] 表示位序號(hào)從15往下數(shù)到12,這一段的數(shù)值。寄存器訪問(wèn)類型1. R 表示只讀2. W表示只寫(xiě)3. RW 表示可讀可寫(xiě)(前3條好像地球人都知道)4. R/Wc 表示可讀,但是寫(xiě)訪問(wèn)將使之清 0Cortex-M3芯片簡(jiǎn)介1、芯片的基本結(jié)構(gòu)如下圖:2、關(guān)于ARMv7的知識(shí)--了解在這個(gè)版本中,內(nèi)核架構(gòu)首次從單一款式變成3種款式:款式A:設(shè)計(jì)用于高性能的“開(kāi)放應(yīng)用平臺(tái)”——越來(lái)越接近電腦了款式R:用于高端的嵌入式系統(tǒng),尤其是那些帶有實(shí)時(shí)要求的——又要快又要實(shí)時(shí)??钍組:用于深度嵌入的,單片機(jī)風(fēng)格的系統(tǒng)中介紹A:用于高性能的“開(kāi)放應(yīng)用平臺(tái)”,應(yīng)用在那些需要運(yùn)行復(fù)雜應(yīng)用程序的處理器。支持大型嵌入式操作系統(tǒng)R:用于高端的嵌入式系統(tǒng),要求實(shí)時(shí)性的M:用于深度嵌入的、單片機(jī)風(fēng)格的系統(tǒng)中3、Cortex-M3處理器的舞臺(tái)高性能+高代碼密度+小硅片面積,使得CM3大面積地成為理想的處理平臺(tái),主要應(yīng)用在以下領(lǐng)域:(1)低成本單片機(jī)(2)汽車電子(3)數(shù)據(jù)通信(4)工業(yè)控制(5)消費(fèi)類電子產(chǎn)品4、Cortex-M3概覽(1)簡(jiǎn)介 Cortex-M3是一個(gè) 32位處理器內(nèi)核。內(nèi)部的數(shù)據(jù)路徑是 32位的,寄存器是 32位的,存儲(chǔ)器接口也是 32 位的。CM3 采用了哈佛結(jié)構(gòu),擁有獨(dú)立的指令總線和數(shù)據(jù)總線,可以讓取指與數(shù)據(jù)訪問(wèn)并行不悖。這樣一來(lái)數(shù)據(jù)訪問(wèn)不再占用指令總線,從而提升了性能。為實(shí)現(xiàn)這個(gè)特性, CM3內(nèi)部含有好幾條總線接口,每條都為自己的應(yīng)用場(chǎng)合優(yōu)化過(guò),并且它們可以并行工作。但是另一方面,指令總線和數(shù)據(jù)總線共享同一個(gè)存儲(chǔ)器空間(一個(gè)統(tǒng)一的存儲(chǔ)器系統(tǒng))。 比較復(fù)雜的應(yīng)用可能需要更多的存儲(chǔ)系統(tǒng)功能,為此CM3提供一個(gè)可選的MPU,而且在需要的情況下也可以使用外部的 cache。另外在CM3中,Both小端模式和大端模式都是支持的。(2)Cortex-M3的簡(jiǎn)化圖(3)寄存器組處理器擁有R0-R15的寄存器組,其中R13最為堆棧指針SP,SP有兩個(gè),但是同一時(shí)刻只能有一個(gè)可以看到,這就是所謂的“banked”寄存器。a、R0-R12都是 32位通用寄存器,用于數(shù)據(jù)操作。但是注意:絕大多數(shù) 16位Thumb指令只能訪問(wèn)R0-R7,而 32位 Thumb-2指令可以訪問(wèn)所有寄存器。 b、Cortex-M3擁有兩個(gè)堆棧指針,然而它們是 banked,因此任一時(shí)刻只能使用其中的一個(gè)。主堆棧指針(MSP):復(fù)位后缺省使用的堆棧指針,用于操作系統(tǒng)內(nèi)核以及異常處理例程(包括中斷服務(wù)例程)進(jìn)程堆棧指針(PSP):由用戶的應(yīng)用程序代碼使用。---堆棧指針的最低兩位永遠(yuǎn)是0,這意味著堆??偸?字節(jié)對(duì)齊的。--- c、R14:連接寄存器--當(dāng)呼叫一個(gè)子程序時(shí),由R14存儲(chǔ)返回地址 d、R15:程序計(jì)數(shù)寄存器--指向當(dāng)前的程序地址,如果修改它的值,就能改變程序的執(zhí)行流(這里有很多高級(jí)技巧) e、Cortex-M3還在內(nèi)核水平上搭載了若干特殊功能寄存器,包括程序狀態(tài)字寄存器組(PSRs)中斷屏蔽寄存器組(PRIMASK, FAULTMASK, BASEPRI)控制寄存器(CONTROL)Cortex-M3處理器支持兩種處理器的操作模式,還支持兩級(jí)特權(quán)操作。兩種操作模式分別為:處理者模式和線程模式(thread mode)。引入兩個(gè)模式的本意,是用于區(qū)別普通應(yīng)用程序的代碼和異常服務(wù)例程的代碼——包括中斷服務(wù)例程的代碼。Cortex-M3 的另一個(gè)側(cè)面則是特權(quán)的分級(jí)——特權(quán)級(jí)和用戶級(jí)。這可以提供一種存儲(chǔ)器訪問(wèn)的保護(hù)機(jī)制,使得普通的用戶程序代碼不能意外地,甚至是惡意地執(zhí)行涉及到要害的操作。處理器支持兩種特權(quán)級(jí),這也是一個(gè)基本的安全模型。在 CM3 運(yùn)行主應(yīng)用程序時(shí)(線程模式),既可以使用特權(quán)級(jí),也可以使用用戶級(jí);但是異常服務(wù)例程必須在特權(quán)級(jí)下執(zhí)行。復(fù)位后,處理器默認(rèn)進(jìn)入線程模式,特權(quán)極訪問(wèn)。在特權(quán)級(jí)下,程序可以訪問(wèn)所有范圍的存儲(chǔ)器(如果有 MPU,還要 在MPU規(guī)定的禁地之外),并且可以執(zhí)行所有指令。在特權(quán)級(jí)下的程序可以為所欲為,但也可能會(huì)把自己給玩進(jìn)去——切換到用戶級(jí)。一旦進(jìn)入用戶級(jí),再想回來(lái)就得走“法律程序”了——用戶級(jí)的程序不能簡(jiǎn)簡(jiǎn)單單地試圖改寫(xiě) CONTROL寄存器就回到特權(quán)級(jí),它必須先“申訴”:執(zhí)行一條系統(tǒng)調(diào)用指令(SVC)。這會(huì)觸發(fā)SVC異常,然后由異常服務(wù)例程(通常是操作系統(tǒng)的一部分)接管,如果批準(zhǔn)了進(jìn)入,則異常服務(wù)例程修改 CONTROL寄存器,才能在用戶級(jí)的線程模式下重新進(jìn)入特權(quán)級(jí)。事實(shí)上,從用戶級(jí)到特權(quán)級(jí)的唯一途徑就是異常:如果在程序執(zhí)行過(guò)程中觸發(fā)了一個(gè)異常,處理器總是先切換入特權(quán)級(jí),并且在異常服務(wù)例程執(zhí)行完畢退出時(shí),返回先前的狀。通過(guò)引入特權(quán)級(jí)和用戶級(jí),就能夠在硬件水平上限制某些不受信任的或者還沒(méi)有調(diào)試好的程序,不讓它們隨便地配置涉及要害的寄存器,因而系統(tǒng)的可靠性得到了提高。進(jìn)一步地,如果配了 MPU,它還可以作為特權(quán)機(jī)制的補(bǔ)充——保護(hù)關(guān)鍵的存儲(chǔ)區(qū)域不被破壞,這些區(qū)域通常是操作系統(tǒng)的區(qū)域。(4)內(nèi)建的嵌套向量中斷控制器 Cortex-M3 在內(nèi)核水平上搭載了一顆中斷控制器——嵌套向量中斷控制器 NVIC(Nested Vectored Interrupt Controller)。它與內(nèi)核有很深的“親密接觸”——與內(nèi)核是緊耦合的。NVIC提供如下的功能:可嵌套中斷支持向量中斷支持動(dòng)態(tài)優(yōu)先級(jí)調(diào)整支持中斷延遲大大縮短中斷可屏蔽 可嵌套中斷支持: 可嵌套中斷支持的作用范圍很廣,覆蓋了所有的外部中斷和絕大多數(shù)系統(tǒng)異常。外在表現(xiàn)是,這些異常都可以被賦予不同的優(yōu)先級(jí)。當(dāng)前優(yōu)先級(jí)被存儲(chǔ)在 xPSR 的專用字段中。當(dāng)一個(gè)異常發(fā)生時(shí),硬件會(huì)自動(dòng)比較該異常的優(yōu)先級(jí)是否比當(dāng)前的異常優(yōu)先級(jí)更高。如果發(fā)現(xiàn)來(lái)了更高優(yōu)先級(jí)的異常,處理器就會(huì)中斷當(dāng)前的中斷服務(wù)例程(或者是普通程序),而服務(wù)新來(lái)的異?!戳⒓磽屨?。 向量中斷支持: 當(dāng)開(kāi)始響應(yīng)一個(gè)中斷后,CM3會(huì)自動(dòng)定位一張向量表,并且根據(jù)中斷號(hào)從表中找出 ISR的入口地址,然后跳轉(zhuǎn)過(guò)去執(zhí)行。不需要像以前的 ARM那樣,由軟件來(lái)分辨到底是哪個(gè)中斷發(fā)生了,也無(wú)需半導(dǎo)體廠商提供私有的中斷控制器來(lái)完成這種工作。這么一來(lái),中斷延遲時(shí)間大為縮短。(5)存儲(chǔ)器映射Cortex-M3支持4G存儲(chǔ)空間,具體分配如下圖:(6)總線接口Cortex-M3內(nèi)部有若干個(gè)總線接口,以使 CM3能同時(shí)取址和訪內(nèi)(訪問(wèn)內(nèi)存),它們是:? 指令存儲(chǔ)區(qū)總線(兩條)? 系統(tǒng)總線? 私有外設(shè)總線有兩條代碼存儲(chǔ)區(qū)總線負(fù)責(zé)對(duì)代碼存儲(chǔ)區(qū)的訪問(wèn),分別是 I-Code 總線和 D-Code 總線。前者用于取指,后者用于查表等操作,它們按最佳執(zhí)行速度進(jìn)行優(yōu)化。系統(tǒng)總線用于訪問(wèn)內(nèi)存和外設(shè),覆蓋的區(qū)域包括 SRAM,片上外設(shè),片外 RAM,片外擴(kuò)展設(shè)備,以及系統(tǒng)級(jí)存儲(chǔ)區(qū)的部分空間。私有外設(shè)總線負(fù)責(zé)一部分私有外設(shè)的訪問(wèn),主要就是訪問(wèn)調(diào)試組件。它們也在系統(tǒng)級(jí)存儲(chǔ)區(qū)。(7)存儲(chǔ)器保護(hù)單元(MPU) Cortex-M3有一個(gè)可選的存儲(chǔ)器保護(hù)單元。配上它之后,就可以對(duì)特權(quán)級(jí)訪問(wèn)和用戶級(jí)訪問(wèn)分別施加不同的訪問(wèn)限制。當(dāng)檢測(cè)到犯規(guī)(violated)時(shí),MPU 就會(huì)產(chǎn)生一個(gè) fault 異常,可以由fault異常的服務(wù)例程來(lái)分析該錯(cuò)誤,并且在可能時(shí)改正它。MPU 有很多玩法。最常見(jiàn)的就是由操作系統(tǒng)使用 MPU,以使特權(quán)級(jí)代碼的數(shù)據(jù),包括操作系統(tǒng)本身的數(shù)據(jù)不被其它用戶程序弄壞。MPU在保護(hù)內(nèi)存時(shí)是按區(qū)管理的。它可以把某些內(nèi)存 region設(shè)置成只讀,從而避免了那里的內(nèi)容意外被更改;還可以在多任務(wù)系統(tǒng)中把不同任務(wù)之間的數(shù)據(jù)區(qū)隔離。一句話,它會(huì)使嵌入式系統(tǒng)變得更加健壯,更加可靠(很多行業(yè)標(biāo)準(zhǔn),尤其是航空的,就規(guī)定了必須使用 MPU來(lái)行使保護(hù)職能——譯注) 。(8)Cortex-M3的簡(jiǎn)評(píng)1、高性能許多指令都是單周期的——包括乘法相關(guān)指令。并且從整體性能上,Cortex-M3比得過(guò)絕大多數(shù)其它的架構(gòu)。指令總線和數(shù)據(jù)總線被分開(kāi),取值和訪內(nèi)可以并行不悖Thumb-2的到來(lái)告別了狀態(tài)切換的舊世代,再也不需要花時(shí)間來(lái)切換于 32位 ARM狀態(tài)和16位Thumb狀態(tài)之間了。這簡(jiǎn)化了軟件開(kāi)發(fā)和代碼維護(hù),使產(chǎn)品面市更快。Thumb-2指令集為編程帶來(lái)了更多的靈活性。許多數(shù)據(jù)操作現(xiàn)在能用更短的代碼搞定,這意味著 Cortex-M3的代碼密度更高,也就對(duì)存儲(chǔ)器的需求更少。取指都按 32位處理。同一周期最多可以取出兩條指令,留下了更多的帶寬給數(shù)據(jù)傳輸。Cortex-M3的設(shè)計(jì)允許單片機(jī)高頻運(yùn)行(現(xiàn)代半導(dǎo)體制造技術(shù)能保證 100MHz以上的速度)即使在相同的速度下運(yùn)行,CM3的每指令周期數(shù)(CPI)也更低,于是同樣的 MHz下可以做更多的工作;另一方面,也使同一個(gè)應(yīng)用在 CM3上需要更低的主頻。2、先進(jìn)的中斷處理功能內(nèi)建的嵌套向量中斷控制器支持240條外部中斷輸入。向量化的中斷功能大大減少了中斷延遲,因?yàn)椴辉谛枰浖ヅ袛嘀袛嘣础V袛嗟那短滓彩窃谟布缴蠈?shí)現(xiàn)的,不需要軟件代碼來(lái)實(shí)現(xiàn)。Cortex-M3在進(jìn)入異常服務(wù)例程時(shí),自動(dòng)壓棧了 R0-R3, R12, LR, PSR 和PC,并且在返回時(shí)自動(dòng)彈出它們,這多清爽!既加速了中斷的響應(yīng),也再不需要匯編語(yǔ)言代碼了NVIC支持對(duì)每一路中斷設(shè)置不同的優(yōu)先級(jí),使得中斷管理極富彈性。最粗線條的實(shí)現(xiàn)也至少要支持 8級(jí)優(yōu)先級(jí),而且還能動(dòng)態(tài)地被修改。優(yōu)化中斷響應(yīng)還有兩招,它們分別是“咬尾中斷機(jī)制”和“晚到中斷機(jī)制”。有些需要較多周期才能執(zhí)行完的指令,是可以被中斷-繼續(xù)的——就好比它們是一串指令一樣。這些指令包括加載多個(gè)寄存器(LDM),存儲(chǔ)多個(gè)寄存器(STM),多個(gè)寄存器參與的PUSH,以及多個(gè)寄存器參與的 POP。除非系統(tǒng)被徹底地鎖定,NMI(不可屏蔽中斷)會(huì)在收到請(qǐng)求的第一時(shí)間予以響應(yīng)。對(duì)很多安全-關(guān)鍵(safety-critical)的應(yīng)用,NMI都是必不可少的(如化學(xué)反應(yīng)即將失控時(shí)的緊急停機(jī))。(mbbeetchina)
下載該資料的人也在下載 下載該資料的人還在閱讀
更多 >

評(píng)論

查看更多

下載排行

本周

  1. 1TC358743XBG評(píng)估板參考手冊(cè)
  2. 1.36 MB  |  330次下載  |  免費(fèi)
  3. 2開(kāi)關(guān)電源基礎(chǔ)知識(shí)
  4. 5.73 MB  |  6次下載  |  免費(fèi)
  5. 3100W短波放大電路圖
  6. 0.05 MB  |  4次下載  |  3 積分
  7. 4嵌入式linux-聊天程序設(shè)計(jì)
  8. 0.60 MB  |  3次下載  |  免費(fèi)
  9. 5基于FPGA的光纖通信系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)
  10. 0.61 MB  |  2次下載  |  免費(fèi)
  11. 6基于FPGA的C8051F單片機(jī)開(kāi)發(fā)板設(shè)計(jì)
  12. 0.70 MB  |  2次下載  |  免費(fèi)
  13. 751單片機(jī)窗簾控制器仿真程序
  14. 1.93 MB  |  2次下載  |  免費(fèi)
  15. 8基于51單片機(jī)的RGB調(diào)色燈程序仿真
  16. 0.86 MB  |  2次下載  |  免費(fèi)

本月

  1. 1OrCAD10.5下載OrCAD10.5中文版軟件
  2. 0.00 MB  |  234315次下載  |  免費(fèi)
  3. 2555集成電路應(yīng)用800例(新編版)
  4. 0.00 MB  |  33564次下載  |  免費(fèi)
  5. 3接口電路圖大全
  6. 未知  |  30323次下載  |  免費(fèi)
  7. 4開(kāi)關(guān)電源設(shè)計(jì)實(shí)例指南
  8. 未知  |  21548次下載  |  免費(fèi)
  9. 5電氣工程師手冊(cè)免費(fèi)下載(新編第二版pdf電子書(shū))
  10. 0.00 MB  |  15349次下載  |  免費(fèi)
  11. 6數(shù)字電路基礎(chǔ)pdf(下載)
  12. 未知  |  13750次下載  |  免費(fèi)
  13. 7電子制作實(shí)例集錦 下載
  14. 未知  |  8113次下載  |  免費(fèi)
  15. 8《LED驅(qū)動(dòng)電路設(shè)計(jì)》 溫德?tīng)栔?/a>
  16. 0.00 MB  |  6653次下載  |  免費(fèi)

總榜

  1. 1matlab軟件下載入口
  2. 未知  |  935054次下載  |  免費(fèi)
  3. 2protel99se軟件下載(可英文版轉(zhuǎn)中文版)
  4. 78.1 MB  |  537796次下載  |  免費(fèi)
  5. 3MATLAB 7.1 下載 (含軟件介紹)
  6. 未知  |  420026次下載  |  免費(fèi)
  7. 4OrCAD10.5下載OrCAD10.5中文版軟件
  8. 0.00 MB  |  234315次下載  |  免費(fèi)
  9. 5Altium DXP2002下載入口
  10. 未知  |  233046次下載  |  免費(fèi)
  11. 6電路仿真軟件multisim 10.0免費(fèi)下載
  12. 340992  |  191185次下載  |  免費(fèi)
  13. 7十天學(xué)會(huì)AVR單片機(jī)與C語(yǔ)言視頻教程 下載
  14. 158M  |  183278次下載  |  免費(fèi)
  15. 8proe5.0野火版下載(中文版免費(fèi)下載)
  16. 未知  |  138040次下載  |  免費(fèi)