Cortex-M3的整体风景
一、流水線
? 1、Cortex-CM3處理器使用一個(gè)3級流水線,流水線的3級分別是:取指,解碼和執(zhí)行:
? 2、當(dāng)運(yùn)行的指令大多數(shù)是16位時(shí),處理器會(huì)每隔一個(gè)周期做一次取指。當(dāng)執(zhí)行到跳轉(zhuǎn)指令時(shí)需要清洗流水線,處理器會(huì)不得不跳轉(zhuǎn)目的地重新取指。為了改善這種情
??????? 況,Cortex-CM3支持一定數(shù)量的v7M指令可以避免很多短程跳轉(zhuǎn)。
? 3、由于流水線的存在,以及出于對Thumb代碼兼容的考慮,讀取PC會(huì)返回當(dāng)前指令地址+4的值。
? 4、在處理器內(nèi)核的預(yù)取單元中也有一個(gè)指令緩沖區(qū),它允許后續(xù)的指令在執(zhí)行前現(xiàn)在里面排隊(duì),也能在執(zhí)行未對齊的32位指令時(shí),避免流水線斷流。
二、詳細(xì)框圖
? 1、Cortex-CM3處理器里面除了處理核心外,還有其他好多組件,以用于系統(tǒng)管理和調(diào)試支持:
?? 1)、MPUI和ETM是可選組件,不一定會(huì)包含在每一個(gè)Cortex-CM3的MCU中。
?? 2)、方框圖中的縮寫及定義
? 2、Cortex-CM3處理器是以一個(gè)處理器子系統(tǒng)呈現(xiàn)的,其CPU內(nèi)核本身與NVIC和一系列調(diào)試塊都緊密耦合:
?? 1)、CM3core:Cortex-CM3處理器的中央處理核心。
?? 2)、嵌套向量中斷控制器NVIC:NVIC是一個(gè)在Cortex-CM3中內(nèi)建的中斷控制器。
?? 3)、SysTick定時(shí)器:系統(tǒng)滴答定時(shí)器是一個(gè)非常基本的到時(shí)器定時(shí)器,用于在每隔一定的時(shí)間產(chǎn)生一個(gè)中斷,即使是系統(tǒng)在睡眠模式下也能工作。
?? 4)、存儲(chǔ)器保護(hù)單元:MPU是一個(gè)選配的單元,有些Cortex-CM3可能沒有配置此組件。如果有,則它可以把存儲(chǔ)器分成一些regions,并分別給予保護(hù)。
?? 5)、BusMatrix:BusMatrix是Cortex-CM3內(nèi)部總線系統(tǒng)的核心。
?? 6)、AHB to APB:它是一個(gè)總線橋,用于把若干個(gè)APB設(shè)備鏈接到Cortex-CM3處理器的私有外設(shè)總線上。
?? 7)、圖框中其他的組件都用于調(diào)試,通常不會(huì)再應(yīng)用程序中使用它們。
? 3、其他調(diào)試組件
?? 1)、SW-DP/SWJ-DP:串行線調(diào)試端口(SW-DP)/串口線JTAG調(diào)試端口(SWJ-DP)都與AHB訪問端口(AHB-PB)協(xié)同工作,以使外部調(diào)試器可以發(fā)起AHB上的數(shù)據(jù)傳
???????????? 送,從而執(zhí)行調(diào)試活動(dòng)。
?? 2)、AHB-AP:AHB訪問端口通過少量的寄存器,提供了對全部Cortex-CM3存儲(chǔ)器的訪問機(jī)能。
?? 3)、嵌入式跟蹤單元ETM:ETM用于實(shí)現(xiàn)實(shí)時(shí)指令跟蹤,但它是一個(gè)選配件,所以不是所有的Cortex-CM3產(chǎn)品都具有實(shí)時(shí)指令跟蹤能力。
?? 4)、數(shù)據(jù)觀察點(diǎn)及跟蹤單元:通過DWT,可以設(shè)置數(shù)據(jù)觀察點(diǎn)。
?? 5)、指令跟蹤單元ITM:軟件可以通過該模塊直接把消息送給TPIU;還可以讓DWT匹配命中事件通過ITM產(chǎn)生數(shù)據(jù)跟蹤包,并把它輸出到一個(gè)數(shù)據(jù)跟蹤流中。
?? 6)、跟蹤端口的接口單元TPIU:TPIU用于跟外部的跟蹤硬件交互。
?? 7)、FPB:FPB提供flash地址重載和斷點(diǎn)功能。
?? 8)、ROM表:只是一個(gè)簡單的查找表,提供了存儲(chǔ)器映射信息,這些信息包括多種系統(tǒng)設(shè)備和調(diào)試組件。
三、Cortex-CM3的總線接口
? 1、I-Code總線
?? 1)、I-Code總線是一條基于AHB-lite總線的32位總線,負(fù)責(zé)在0x0000_0000-0x1FFF_FFFF之間取指操作。
?? 2)、取指以字的長度執(zhí)行,即使是對于16位指令也是如此.因此CPU內(nèi)核可以一次取出兩條16位指令。
? 2、D-Code總線
?? 1)、D-Code總線是一條基于AHB-lite總線的32位總線,負(fù)責(zé)在0x0000_0000-0x1FFF_FFFF之間取指操作。
?? 2)、鏈接到D-Code總線上的任何設(shè)備都只需支持AHB-Lite的對齊訪問,不需要支持非對齊訪問。
? 3、系統(tǒng)總線
? 1)、系統(tǒng)總線是一條基于AHB-lite總線的32位總線,負(fù)責(zé)在0x2000_0000-0xDFFF-FFFF和0xE010_0000-0xFFFF_FFFF之間的所有數(shù)據(jù)傳送。取指和數(shù)據(jù)訪問都有。
?? 2)、所有的數(shù)據(jù)傳輸都是對齊的。
? 4、外部私有外設(shè)總線
?? 1)、基于APBzing總線協(xié)議的32位總線。此總線負(fù)責(zé)0xE004_0000-0xE00F_FFFF之間的私有外設(shè)訪問。
?? 2)、但是APB的一部分空間已經(jīng)被TPIU、ETM以及ROM表用掉了,就只留下0xE004_2000-0xE00F_F000這個(gè)區(qū)間用于附加的(私有)外設(shè)。
? 5、調(diào)試訪問端口總線
?? 1)、調(diào)試訪問端口總線接口是一條基于”增強(qiáng)型APB規(guī)格“的32位總線,它專用于掛接調(diào)試接口。
四、Cortex-CM3的其他接口
? 1、除了總線接口之外,Cortex-CM3還有幾個(gè)用于其它目的的接口,這些接口的信號都不大可能會(huì)引出到引腳上,而只用于連接SoC不同的部分,或者干脆就沒有使用。
? 2、雜項(xiàng)接口信號
五、外部私有外設(shè)總線
? 1、Cortex-CM3處理器有一個(gè)外部私有外設(shè)總線(PPB)接口。外部PPB接口是基于高級外設(shè)總線(APB)協(xié)議構(gòu)造的。用于非共享的系統(tǒng)設(shè)備。
? 2、為了支持CoreSight設(shè)備,該接口又包含了稱為“PADDR31”的信號,給出傳送的發(fā)源地:
?? 1)、若該信號為0,則表示是運(yùn)行在Cortex-CM3內(nèi)部的軟件產(chǎn)生的傳送操作。
?? 2)、若為1,則表示是調(diào)試軟件產(chǎn)生了傳送操作。
? 3、外部私有外設(shè)總線是專用的,不服務(wù)于普通的外設(shè),這惡鬼規(guī)矩只能靠芯片設(shè)計(jì)者自覺遵守。
? 4、外部PPB不支持非對齊訪問。
六、典型的連接方式
? 1、總線接口與其他設(shè)備和存儲(chǔ)器的典型連接
? 2、代碼存儲(chǔ)區(qū)既可以被指令總線(I-CODE)訪問,也可以被數(shù)據(jù)總線(D-CODE)訪問,此時(shí)需要在中間插入一個(gè)總線開關(guān),稱為總線矩陣或者使用一個(gè)AHB總線復(fù)用器。
?? 1)、如果使用了總線矩陣,則閃存和附加的SRAM可以被both I-CODE和D-CODE訪問。
?? 2)、當(dāng)數(shù)據(jù)訪問和指令訪問同時(shí)嘗試訪問同一個(gè)區(qū)域時(shí),可以賦予數(shù)據(jù)訪問更高的優(yōu)先級以提高性能。
?? 3)、通過AHB總線矩陣把取指和數(shù)據(jù)訪問分開后,如果指令總線和數(shù)據(jù)總線在同一時(shí)刻訪問不同的存儲(chǔ)器設(shè)備,則兩者可以并行不勃。但是若只使用了總線復(fù)用器則數(shù)據(jù)傳
???????????? 送就不能同時(shí)發(fā)生。
? 3、有些引腳比較多的接口會(huì)帶外部總線接口(EMI)。在此情況下,需要一個(gè)外部存儲(chǔ)器控制器。其他的AHB設(shè)備則可以簡單的鏈接到系統(tǒng)總線上,而不需要額外的總線矩
??????? 陣。
七、復(fù)位信號
? 1、Cortex-CM3中各種復(fù)位信號
? 2、典型的Cortex-CM3芯片內(nèi)部復(fù)位信號和其作用范圍示意圖
總結(jié)
以上是生活随笔為你收集整理的Cortex-M3的整体风景的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 电子科大计算机学院毕业照,电子科大毕业照
- 下一篇: 宣战抖音!腾讯与头条之战的新局面与猜想