国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

ARM Cortex-M3權(quán)威指南-概覽和基礎(chǔ)

這篇具有很好參考價值的文章主要介紹了ARM Cortex-M3權(quán)威指南-概覽和基礎(chǔ)。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

1 ARM Cortex-M3 處理器初探

1.1 Cortex-M3簡評

1.1.1 高性能

? 許多指令都是單周期的——包括乘法相關(guān)指令。并且從整體性能上, Cortex-M3 比得過絕大多數(shù)其它的架構(gòu)。
? 指令總線和數(shù)據(jù)總線被分開,取值和訪內(nèi)可以并行不悖
? Thumb-2 的到來告別了狀態(tài)切換的舊世代,再也不需要花時間來切換于 32 位 ARM 狀態(tài)和16 位 Thumb 狀態(tài)之間了。這簡化了軟件開發(fā)和代碼維護,使產(chǎn)品面市更快。
? Thumb-2 指令集為編程帶來了更多的靈活性。許多數(shù)據(jù)操作現(xiàn)在能用更短的代碼搞定,這意味著 Cortex-M3 的代碼密度更高,也就對存儲器的需求更少。
? 取指都按 32 位處理。同一周期最多可以取出兩條指令,留下了更多的帶寬給數(shù)據(jù)傳輸。
? Cortex-M3 的設(shè)計允許單片機高頻運行(現(xiàn)代半導體制造技術(shù)能保證 100MHz 以上的速度)。即使在相同的速度下運行, CM3 的每指令周期數(shù)(CPI)也更低,于是同樣的 MHz 下可以做更多的工作;另一方面,也使同一個應用在 CM3 上需要更低的主頻。

1.1.2 先進的中斷處理功能

? 內(nèi)建的嵌套向量中斷控制器支持多達 240 條外部中斷輸入。向量化的中斷功能劇烈地縮短了中斷延遲,因為不再需要軟件去判斷中斷源。中斷的嵌套也是在硬件水平上實現(xiàn)的,不需要軟件代碼來實現(xiàn)。
? Cortex-M3 在進入異常服務例程時,自動壓棧了 R0-R3, R12, LR, PSR 和 PC,并且在返回時自動彈出它們,這多清爽!既加速了中斷的響應,也再不需要匯編語言代碼了。
? NVIC 支持對每一路中斷設(shè)置不同的優(yōu)先級,使得中斷管理極富彈性。最粗線條的實現(xiàn)也至少要支持 8 級優(yōu)先級,而且還能動態(tài)地被修改。
? 優(yōu)化中斷響應還有兩招,它們分別是“咬尾中斷機制”和“晚到中斷機制”。
? 有些需要較多周期才能執(zhí)行完的指令,是可以被中斷-繼續(xù)的——就好比它們是一串指令一樣。這些指令包括加載多個寄存器(LDM),存儲多個寄存器(STM),多個寄存器參與的PUSH,以及多個寄存器參與的 POP。
? 除非系統(tǒng)被徹底地鎖定, NMI(不可屏蔽中斷)會在收到請求的第一時間予以響應。對于很多安全-關(guān)鍵(safety-critical)的應用, NMI 都是必不可少的。

1.1.3 調(diào)試支持

? 在支持傳統(tǒng)的 JTAG 基礎(chǔ)上,還支持更新更好的串行線調(diào)試接口。
? 基于 CoreSight 調(diào)試解決方案,使得處理器哪怕是在運行時,也能訪問處理器狀態(tài)和存儲器內(nèi)容。
? 內(nèi)建了對多達 6 個斷點和 4 個數(shù)據(jù)觀察點的支持。
? 可以選配一個 ETM,用于指令跟蹤。數(shù)據(jù)的跟蹤可以使用 DWT
? 在調(diào)試方面還加入了以下的新特性,包括 fault 狀態(tài)寄存器,新的 fault 異常,以及閃存修補 (patch)操作,使得調(diào)試大幅簡化。
? 可選 ITM 模塊,測試代碼可以通過它輸出調(diào)試信息,而且“拎包即可入住”般地方便使用。

1.2 基于cortex-M3的芯片設(shè)計

Cortex-M3處理器內(nèi)核是芯片的中央處理單元,完整的MCU還需要很多其他組件,例如存儲,外設(shè),IO等。芯片設(shè)計商得到CM3核的授權(quán)后,就會把CM3用到自己的芯片中,做一些定制化的設(shè)計,所以不同的廠商有不同的配置,想了解具體型號的處理器需要查閱廠家提供的文檔,比如stm32,nxp,ti,F(xiàn)reescale?;贏RM低成本和高效的處理器設(shè)計方案, 得到授權(quán)的廠商生產(chǎn)了多種多樣的的處理器、 單片機以及片上系統(tǒng)(SoC)。這種商業(yè)模式就是所謂的“知識產(chǎn)權(quán)授權(quán)”。
m3權(quán)威開發(fā)指南,arm開發(fā)

1.3 ARM發(fā)展歷史

ARMv7架構(gòu)的閃亮登場。在這個版本中,內(nèi)核架構(gòu)首次從單一款式變成3種款式。
? 款式A:設(shè)計用于高性能的“開放應用平臺”——越來越接近電腦了
? 款式R:用于高端的嵌入式系統(tǒng),尤其是那些帶有實時要求的——又要快又要實時。
? 款式M:用于深度嵌入的,單片機風格的系統(tǒng)中——本書的主角。
m3權(quán)威開發(fā)指南,arm開發(fā)

2 Cortex-M3 概覽和基礎(chǔ)

2.1 M3架構(gòu)圖

Cortex-M3 是一個32位處理器內(nèi)核。內(nèi)部的數(shù)據(jù)路徑是32位的,寄存器是32位的,存儲器接口也是32位的。 CM3采用了哈佛結(jié)構(gòu),擁有獨立的指令總線和數(shù)據(jù)總線,可以讓取指與數(shù)據(jù)訪問并行不悖。這樣一來數(shù)據(jù)訪問不再占用指令總線,從而提升了性能。Both 小端模式和大端模式都是支持的。
m3權(quán)威開發(fā)指南,arm開發(fā)

2.2 寄存器組

Cortex-M3 處理器擁有 R0-R15 的寄存器組。其中 R13 作為堆棧指針 SP。 SP 有兩個,但在同一時刻只能有一個可以看到,這也就是所謂的“banked”寄存器。復位后,寄存器默認值不確定。

R0-R12通用寄存器:R0-R12 都是32位通用寄存器,用于數(shù)據(jù)操作。但是注意:絕大多數(shù)16位 Thumb 指令只能訪問 R0-R7,而 32 位 Thumb-2 指令可以訪問所有寄存器。
Banked R13兩個堆棧指針:Cortex-M3 擁有兩個堆棧指針,然而它們是 banked,因此任一時刻只能使用其中的一個。

  • 主堆棧指針(MSP):復位后缺省使用的堆棧指針,用于操作系統(tǒng)內(nèi)核以及異常處理例程(包括中斷服務例程)
  • 進程堆棧指針(PSP):由用戶的應用程序代碼使用。

堆棧指針的最低兩位永遠是 0,這意味著堆??偸?4 字節(jié)對齊的。

R14鏈接寄存器:當呼叫一個子程序時,由 R14 存儲返回地址。
R15程序計數(shù)寄存器:指向當前的程序地址。如果修改它的值,就能改變程序的執(zhí)行流(很多高級技巧就在這里面)。
m3權(quán)威開發(fā)指南,arm開發(fā)
特殊功能寄存器,Cortex-M3 還在內(nèi)核水平上搭載了若干特殊功能寄存器,包括:

  • 程序狀態(tài)字寄存器組(PSRs)
  • 中斷屏蔽寄存器組(PRIMASK, FAULTMASK, BASEPRI)
  • 控制寄存器(CONTROL)
    m3權(quán)威開發(fā)指南,arm開發(fā)
    Cortex-M3 中的特殊能寄存器只能被專用的 MSR/MRS 指令訪問,而且它們也沒有與之相關(guān)聯(lián)的訪問地址。
MRS <gp_reg>, <special_reg> ;讀特殊功能寄存器的值到通用寄存器
MSR <special_reg>, <gp_reg> ;寫通用寄存器的值到特殊功能寄存器

m3權(quán)威開發(fā)指南,arm開發(fā)

2.2.1 R13堆棧指針

要注意的是,并不是每個程序都要用齊兩個堆棧指針才算圓滿。簡單的應用程序只使用 MSP 就夠了。堆棧指針用于訪問堆棧,并且 PUSH 指令和 POP 指令默認使用 SP。
m3權(quán)威開發(fā)指南,arm開發(fā)
通常在進入一個子程序后,第一件事就是把寄存器的值先 PUSH 入堆棧中,在子程序退出前再 POP 曾經(jīng) PUSH 的那些寄存器。另外, PUSH 和 POP 還能一次操作多個寄存器。

操作一個寄存器
m3權(quán)威開發(fā)指南,arm開發(fā)
操作多個寄存器
m3權(quán)威開發(fā)指南,arm開發(fā)
Cortex-M3 的堆棧實現(xiàn)
m3權(quán)威開發(fā)指南,arm開發(fā)

2.2.2 R14:連接寄存器(LR)

R14 是連接寄存器(LR)。在一個匯編程序中,你可以把它寫作 both LR 和 R14。 LR 用于在調(diào)用子程序時存儲返回地址。例如,當你在使用 BL(分支并連接, Branch and Link)指令時,就自動填充 LR的值。
m3權(quán)威開發(fā)指南,arm開發(fā)
賦值PC/LR時,LSB總是1,用以表明是Thumb狀態(tài)下執(zhí)行,倘若寫了0,就會產(chǎn)生fault異;但是讀取PC時LSB是0,LR的LSR是1。

2.2.3 程序狀態(tài)寄存器組(PSRs或曰PSR)

程序狀態(tài)寄存器在其內(nèi)部又被分為三個子狀態(tài)寄存器:
? 應用程序 PSR(APSR)
? 中斷號 PSR(IPSR)
? 執(zhí)行 PSR(EPSR)
通過 MRS/MSR 指令,這 3 個 PSRs 即可以單獨訪問,也可以組合訪問(2 個組合,3 個組合都可以)。當使用三合一的方式訪問時,應使用名字“xPSR”或者“PSR”。
m3權(quán)威開發(fā)指南,arm開發(fā)

2.2.4 中斷屏蔽寄存器組PRIMASK, FAULTMASK 和 BASEPRI

m3權(quán)威開發(fā)指南,arm開發(fā)
對于時間-關(guān)鍵任務而言,恰如其分地使用 PRIMASK 和 BASEPRI 來暫時關(guān)閉一些中斷是非常重要的。而 FAULTMASK 則可以被 OS 用于暫時關(guān)閉 fault 處理機能,這種處理在某個任務崩潰時可能需要。因為在任務崩潰時,常常伴隨著一大堆 faults。在系統(tǒng)料理“后事”時,通常不再需要響應這些 fault——人死帳清??傊?FAULTMASK 就是專門留給 OS 用的。

注意:如果是在idle流程中觀察PRIMASK,由于idle流程鎖中斷了,連接仿真器時剛從WFI指令退出,還停留在idle流程中,因此PRIMASK是1。

2.2.5 控制寄存器(CONTROL)

控制寄存器有兩個用途,1用于定義特權(quán)級別,其二用于選擇當前使用哪個堆棧指針。由兩個比特來行使這兩個職能。

CONTROL[1]:在 Cortex-M3 的 handler 模式中,CONTROL[1]總是 0。在線程模式中則可以為 0 或 1。因此,僅當處于特權(quán)級的線程模式下,此位才可寫,其它場合下禁止寫此位。
CONTROL[0]:僅當在特權(quán)級下操作時才允許寫該位。一旦進入了用戶級,唯一返回特權(quán)級的途徑,就是觸發(fā)一個(軟)中斷,再由服務例程改寫該位。
m3權(quán)威開發(fā)指南,arm開發(fā)

2.3 操作模式和特權(quán)級別

Cortex-M3 支持 2 個模式和兩個特權(quán)等級。
m3權(quán)威開發(fā)指南,arm開發(fā)
操作模式:處理者模式(handler mode)和線程模式(thread mode)。引入兩個模式的本意,是用于區(qū)別普通應用程序的代碼和異常服務例程的代碼——包括中斷服務例程的代碼。
特權(quán)分級:特權(quán)級和用戶級。這可以提供一種存儲器訪問的保護機制,使得普通的用戶程序代碼不能意外地,甚至是惡意地執(zhí)行涉及到要害的操作。處理器支持兩種特權(quán)級,這也是一個基本的安全模型。
特權(quán)級和用戶級區(qū)別:在 CM3 運行主應用程序時(線程模式),既可以使用特權(quán)級,也可以使用用戶級;但是異常服務例程必須在特權(quán)級下執(zhí)行。復位后,處理器默認進入線程模式,特權(quán)極訪問。在特權(quán)級下,程序可以訪問所有范圍的存儲器并且可以執(zhí)行所有指令。
特權(quán)級和用戶級切換:在特權(quán)級下的程序可以為所欲為,但也可能會把自己給玩進去——切換到用戶級。一旦進入用戶級,再想回來就得走“法律程序”了——用戶級的程序不能簡簡單單地試圖改寫 CONTROL 寄存器就回到特權(quán)級,它必須先“申訴”:執(zhí)行一條系統(tǒng)調(diào)用指令(SVC)。這會觸發(fā) SVC 異常,然后由異常服務例程(通常是操作系統(tǒng)的一部分)接管,如果批準了進入,則異常服務例程修改 CONTROL 寄存器,才能在用戶級的線程模式下重新進入特權(quán)級。事實上,從用戶級到特權(quán)級的唯一途徑就是異常:如果在程序執(zhí)行過程中觸發(fā)了一個異常,處理器總是先切換入特權(quán)級, 并且在異常服務例程執(zhí)行完畢退出時,返回先前的狀態(tài)。
引入特權(quán)級和用戶級目的:能夠在硬件水平上限制某些不受信任的或者還沒有調(diào)試好的程序,不讓它們隨便地配置涉及要害的寄存器,因而系統(tǒng)的可靠性得到了提高。
m3權(quán)威開發(fā)指南,arm開發(fā)
m3權(quán)威開發(fā)指南,arm開發(fā)

2.4 嵌套向量中斷控制器

NVIC 共支持 1 至 240 個外部中斷輸入(通常外部中斷寫作 IRQs)。具體的數(shù)值由芯片廠商在設(shè)計芯片時決定。此外,NVIC 還支持一個“永垂不朽”的不可屏蔽中斷(NMI)輸入。NMI 的實際功能亦由芯片制造商決定。在某些情況下,NMI 無法由外部中斷源控制。

可嵌套中斷支持
可嵌套中斷支持的作用范圍很廣,覆蓋了所有的外部中斷和絕大多數(shù)系統(tǒng)異常。外在表現(xiàn)是,這些異常都可以被賦予不同的優(yōu)先級。當前優(yōu)先級被存儲在 xPSR 的專用字段中。當一個異常發(fā)生時,硬件會自動比較該異常的優(yōu)先級是否比當前的異常優(yōu)先級更高。如果發(fā)現(xiàn)來了更高優(yōu)先級的異常,處理器就會中斷當前的中斷服務例程(或者是普通程序),而服務新來的異常——即立即搶占。

向量中斷支持
向量中斷與直接中斷的好處:當開始響應一個中斷后, CM3 會自動定位一張向量表,并且根據(jù)中斷號從表中找出 ISR 的入口地址,然后跳轉(zhuǎn)過去執(zhí)行。不需要像以前的 ARM 那樣, 由軟件來分辨到底是哪個中斷發(fā)生了,也無需半導體廠商提供私有的中斷控制器來完成這種工作。這么一來,中斷延遲時間大為縮短。

中斷延遲大大縮短
Cortex-M3 為了縮短中斷延遲,引入了好幾個新特性。包括自動的現(xiàn)場保護和恢復,以及其它的措施,用于縮短中斷嵌套時的 ISR 間延遲。咬尾中斷、晚到中斷。

動態(tài)優(yōu)先級調(diào)整支持
軟件可以在運行時期更改中斷的優(yōu)先級。如果在某ISR中修改了自己所對應中斷的優(yōu)先級,而且這個中斷又有新的實例處于懸起中(pending),也不會自己打斷自己,從而沒有重入(reentry) 風險。

中斷可屏蔽
既可以屏蔽優(yōu)先級低于某個閾值的中斷/異常(設(shè)置BASEPRI寄存器),也可以全體封殺(設(shè)置PRIMASK和FAULTMASK寄存器)。這是為了讓時間關(guān)鍵( time-critical)的任務能在死線 (deadline,或曰最后期限)到來前完成,而不被干擾。

Cortex-M3 支持大量異常,包括 16-4-1=11 個系統(tǒng)異常,和最多 240 個外部中斷——簡稱 IRQ。具體使用了這 240 個中斷源中的多少個,則由芯片制造商決定。由外設(shè)產(chǎn)生的中斷信號,除了 SysTick的之外,全都連接到 NVIC 的中斷輸入信號線。典型情況下,處理器一般支持 16 到 32 個中斷,當然也有在此之外的。

作為中斷功能的強化, NVIC 還有一條 NMI 輸入信號線。 NMI 究竟被拿去做什么,還要視處理器的設(shè)計而定。在多數(shù)情況下, NMI 會被連接到一個看門狗定時器,有時也會是電壓監(jiān)視功能塊,以便在電壓掉至危險級別后警告處理器。 NMI 可以在任何時間被激活,甚至是在處理器剛剛復位之后。
表 3.4 列出了 Cortex-M3 可以支持的所有異常。有一定數(shù)量的系統(tǒng)異常是用于 fault 處理的,它們可以由多種錯誤條件引發(fā)。 NVIC 還提供了一些 fault 狀態(tài)寄存器,以便于 fault 服務例程找出導致異常的具體原因。
m3權(quán)威開發(fā)指南,arm開發(fā)

2.5 存儲器映射

待補充

2.6 總線接口

Cortex-M3 內(nèi)部有若干個總線接口,以使 CM3 能同時取址和訪內(nèi)(訪問內(nèi)存),它們是:

指令和存儲總線(兩條)
系統(tǒng)總線
私有外設(shè)總線
指令和存儲總線:有兩條代碼存儲區(qū)總線負責對代碼存儲區(qū)的訪問,分別是 I-Code 總線和 D-Code 總線。前者用于取指,后者用于查表等操作,它們按最佳執(zhí)行速度進行優(yōu)化。
系統(tǒng)總線:用于訪問內(nèi)存和外設(shè),覆蓋的區(qū)域包括 SRAM,片上外設(shè),片外 RAM,片外擴展設(shè)備,以及系統(tǒng)級存儲區(qū)的部分空間。
私有外設(shè)總線:負責一部分私有外設(shè)的訪問,主要就是訪問調(diào)試組件。它們也在系統(tǒng)級存儲區(qū)。

2.7 存儲器保護單元(MPU)

Cortex-M3 有一個可選的存儲器保護單元。配上它之后,就可以對特權(quán)級訪問和用戶級訪問分別施加不同的訪問限制。當檢測到犯規(guī)(violated)時, MPU 就會產(chǎn)生一個 fault 異常,可以由fault 異常的服務例程來分析該錯誤,并且在可能時改正它。
MPU 有很多玩法。最常見的就是由操作系統(tǒng)使用 MPU,以使特權(quán)級代碼的數(shù)據(jù),包括操作系統(tǒng)本身的數(shù)據(jù)不被其它用戶程序弄壞。 MPU 在保護內(nèi)存時是按區(qū)管理的(“區(qū)”的原文是 region,以后不再中譯此名詞——譯注)。它可以把某些內(nèi)存 region 設(shè)置成只讀,從而避免了那里的內(nèi)容意外被更改;還可以在多任務系統(tǒng)中把不同任務之間的數(shù)據(jù)區(qū)隔離。一句話,它會使嵌入式系統(tǒng)變得更加健壯,更加可靠(很多行業(yè)標準,尤其是航空的,就規(guī)定了必須使用 MPU 來行使保護職能——譯注)。

2.8 指令集

32位的ARM指令集。對應處理器狀態(tài):ARM狀態(tài)。
16位的Thumb指令集。對應處理器狀態(tài):Thumb狀態(tài),代碼密度高,功能相對來說就少一些。
Thumb-2真不愧是一個突破性的指令集。它強大,它易用,它輕佻,它高效。Thumb-2是16位Thumb指令集的一個超集,在Thumb-2中, 16位指令首次與32位指令并存,結(jié)果在Thumb狀態(tài)下可以做的事情一下子豐富了許多,同樣工作需要的指令周期數(shù)也明顯下降。 在支持了both 16位和32位指令之后,就無需煩心地把處理器狀態(tài)在Thumb和ARM之間來回的切換了。
m3權(quán)威開發(fā)指南,arm開發(fā)
Cortex-M3 只使用Thumb-2指令集。這是個了不起的突破,因為它允許 32 位指令和 16 位指令水乳交融,代碼密度與處理性能兩手抓,兩手都硬。而且雖然它很強大,卻依然易于使用。注意:CM3 并不支持所有的Thumb-2 指令。
在過去,做 ARM 開發(fā)必須處理好兩個狀態(tài)。這兩個狀態(tài)是井水不犯河水的,它們是:32 位的ARM 狀態(tài)和16 位的 Thumb 狀態(tài)。當處理器在 ARM 狀態(tài)下時,所有的指令均是 32 位的(哪怕只是個”NOP”指令),此時性能相當高。而在 Thumb 狀態(tài)下,所有的指令均是16 位的,代碼密度提高了一倍。不過,thumb 狀態(tài)下的指令功能只是 ARM 下的一個子集,結(jié)果可能需要更多條的指令去完成相同的工作,導致處理性能下降。
為了取長補短,很多應用程序都混合使用 ARM 和 Thumb 代碼段。然而,這種混合使用是有額外開銷(overhead)的,時間上的和空間上的都有,主要發(fā)生在狀態(tài)切換之時。另一方面, ARM 代碼和 Thumb 代碼需要以不同的方式編譯,這也增加了軟件開發(fā)管理的復雜度。
m3權(quán)威開發(fā)指南,arm開發(fā)
伴隨著 Thumb-2 指令集的橫空出世,終于可以在單一的操作模式下搞定所有處理了,再也沒有來回切換的事來煩你了。 事實上, Cortex-M3 內(nèi)核干脆都不支持 ARM 指令,中斷也在 Thumb 態(tài)下處理(以前的 ARM 總是在 ARM 狀態(tài)下處理所有的中斷和異常)。這可不是小便宜,它使 CM3 在好幾個方面都比傳統(tǒng)的ARM處理器更先進:

消滅了狀態(tài)切換的額外開銷,節(jié)省了 both 執(zhí)行時間和指令空間。
消除文件編譯管理:不再需要把源代碼文件分成按ARM編譯的和按Thumb編譯的,軟件開發(fā)的管理大大減負。
無需再反復地求證和測試:究竟該在何時何地切換到何種狀態(tài)下,我的程序才最有效率。開發(fā)軟件容易多了。

2.9 調(diào)試支持

Cortex-M3 在內(nèi)核水平上搭載了若干種調(diào)試相關(guān)的特性。最主要的就是程序執(zhí)行控制,包括停機(halting)、單步執(zhí)行(stepping)、指令斷點、數(shù)據(jù)觀察點、寄存器和存儲器訪問、性能速寫(profiling)以及各種跟蹤機制。

Cortex-M3 的調(diào)試系統(tǒng)基于ARM最新的 CoreSight 架構(gòu)。不同于以往的 ARM 處理器,內(nèi)核本身不再含有 JTAG 接口。取而代之的,是 CPU 提供稱為“調(diào)試訪問接口(DAP)”的總線接口。通過這個總線接口,可以訪問芯片的寄存器,也可以訪問系統(tǒng)存儲器,甚至是在內(nèi)核運行的時候訪問!對此總線接口的使用,是由一個調(diào)試端口(DP)設(shè)備完成的。 調(diào)試端口DPs 不屬于CM3內(nèi)核,但它們是在芯片的內(nèi)部實現(xiàn)的。目前可用的 DPs 包括 SWJ-DP(既支持傳統(tǒng)的 JTAG 調(diào)試,也支持新的串行線調(diào)試協(xié)議),另一個 SW-DP 則去掉了對 JTAG 的支持。另外,也可以使用 ARM CoreSignt 產(chǎn)品家族的 JTAG-DP模塊。這下就有 3 個 DPs 可以選了,芯片制造商可以從中選擇一個,以提供具體的調(diào)試接口(通常都是選 SWJ-DP)。

此外, CM3 還能掛載一個所謂的“嵌入式跟蹤宏單元(ETM)”。 ETM 可以不斷地發(fā)出跟蹤信息,這些信息通過一個被稱為“跟蹤端口接口單元(TPIU)”的模塊而送到內(nèi)核的外部,再在芯片外面使用一個“跟蹤信息分析儀”,就可以把 TIPU 輸出的“已執(zhí)行指令信息”捕捉到,并且送給調(diào)試主機——也就是 PC。所有這些調(diào)試組件都可以由 DAP 總線接口來控制, CM3 內(nèi)核提供 DAP 接口。此外,運行中的程序也能控制它們。所有的跟蹤信息都能通過 TPIU 來訪問到。文章來源地址http://www.zghlxwxcb.cn/news/detail-770405.html

到了這里,關(guān)于ARM Cortex-M3權(quán)威指南-概覽和基礎(chǔ)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權(quán),不承擔相關(guān)法律責任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務器費用

相關(guān)文章

  • 【ARM Cortex-M 系列 2 -- CPU 之 Cortex-M7 介紹】

    【ARM Cortex-M 系列 2 -- CPU 之 Cortex-M7 介紹】

    請閱讀 【ARM Coresight | AMBA BUS| Armv8/v9 | GCC 專欄導讀】 上篇文章:ARM Cortex-M 系列 1 番外篇-- Cortex-M0, M3, M4, M7, M33 , M35P 差異 下篇文章:ARM Cortex-M 系列 2.1 – RT-Thread Cortex-M7 異常處理及 hardfault 處理分析 Cortex-M7是基于ARMv7架構(gòu),ARMv7 架構(gòu)主要分為以下三類: 其中 Cortex-M 系列應用

    2024年02月17日
    瀏覽(23)
  • 【ARM Cortex-M 系列 1.1 -- Cortex-M33 與 M4 差異 詳細介紹】

    【ARM Cortex-M 系列 1.1 -- Cortex-M33 與 M4 差異 詳細介紹】

    請閱讀 【嵌入式開發(fā)學習必備專欄 之 Cortex-Mx 專欄】 在移植 RT-Thread 到 瑞薩RA4M2(Cortex-M33)上時,遇到了hardfault 問題,最后使用了Cortex-M4中的調(diào)度相關(guān)的函數(shù)后,OS 可以正常調(diào)度了。所以這里做下 M33與 M4的關(guān)系梳理。 ARM Cortex-M33 和 Cortex-M4 都是 ARM 公司設(shè)計的32位RISC微處理

    2024年01月21日
    瀏覽(21)
  • ARM Cortex-M3內(nèi)核

    目錄 ARM Cortex-M3內(nèi)核 存儲器系統(tǒng) 外設(shè)接口 時鐘和電源管理 中斷控制器 DMA控制器 STM32F1系列微控制器是一款基于ARM Cortex-M3內(nèi)核的嵌入式芯片,其架構(gòu)組成主要包括以下幾個方面: ?ARM Cortex-M3內(nèi)核:STM32F1系列微控制器采用了ARM Cortex-M3內(nèi)核,該內(nèi)核是一種高性能、低功耗的32位

    2024年02月07日
    瀏覽(18)
  • arm cortex-m 架構(gòu)簡述

    arm cortex-m 架構(gòu)簡述

    本文僅討論 cortex-m0/m0+/m3/m4/m7 armv8架構(gòu)暫不討論 cortex-m0/m0+/m1 基于 ARMv6-M 架構(gòu) cortex-m3 基于 ARMv7-M 架構(gòu)( ARMv7-M 隨 cortex-m3 處理器一起發(fā)布) cortex-m4/m7 基于 ARMv7E-M 架構(gòu)( ARMv7-M 隨 cortex-m4 處理器一起發(fā)布) corte-m處理器都支持Thumb-2指令集(既支持16位指令,也支持32位指令)。 上圖

    2024年01月16日
    瀏覽(22)
  • ARM Cortex-M 的 SP

    ARM Cortex-M 的 SP

    在嵌入式開發(fā)中,堆棧是一個很基礎(chǔ),同時也是非常重要的名詞,堆??煞譃槎?(Heap) 和棧 (Stack) 。 棧(Stack): 一種順序數(shù)據(jù)結(jié)構(gòu),滿足后進先出(Last-In / First-Out)的原則,由編譯器自動分配和釋放。 堆(Heap):類似于鏈表結(jié)構(gòu),可對任意位置進行操作,通常由程序員手動分配

    2024年02月10日
    瀏覽(18)
  • ARM Cortex-M3內(nèi)核理解

    ARM Cortex-M3內(nèi)核理解

    做一個對社會有用的人!不抱怨,不氣餒! 目錄 前言 1 ARM處理器家族 2 什么是ARM?Cortex-M處理器 2.1?Cortex-M3 2.2 M3處理器到微控制器 2.3 ARM處理器的發(fā)展 2.4 Thumb ISA的架構(gòu)版本 2.4.1 指令集的概念 2.5 軟件開發(fā)流程? 2.5.1 輪詢 3、技術(shù)綜述 3.1、Cortex-M3簡介 3.1.1 處理器類型 3.1.2 指令

    2024年02月08日
    瀏覽(25)
  • ARM及Cortex-M4介紹

    ARM及Cortex-M4介紹

    ARM的含義有三種。1.ARM是一個公司但是其本身并不生產(chǎn)芯片,而是制定芯片設(shè)計標準以及相關(guān)芯片體系結(jié)構(gòu)技術(shù),以技術(shù)出售和標準制定盈利。2.ARM是一種技術(shù)的名稱,是一種高級RISC處理器的體系結(jié)構(gòu)。3.ARM是一類微處理器芯片或產(chǎn)品的統(tǒng)稱,是采用ARM技術(shù)開發(fā)的RISC處理器的

    2024年02月12日
    瀏覽(22)
  • ARM Cortex-M 內(nèi)核調(diào)試相關(guān)

    ARM Cortex-M 內(nèi)核調(diào)試相關(guān)

    推薦博文1: SWD協(xié)議通信的簡單總結(jié) 根據(jù)《ARM Technical Reference Manual cortex_m3_r1p1_trm》和《Arm? Debug Interface Architecture Specification ADI v6.0.pdf》進行梳理。 Cortex-M3 處理器實現(xiàn)了ARM v7-M架構(gòu)。這包括整個 16 位的Thumb指令集和基本的 Thumb-2 32位指令集架構(gòu)。處理器無法執(zhí)行ARM指令。 Thumb

    2024年02月03日
    瀏覽(20)
  • 【ARM CPU 之 Cortex-M7 介紹】

    【ARM CPU 之 Cortex-M7 介紹】

    請閱讀 【ARM Coresight | AMBA BUS| Armv8/v9 | GCC 專欄導讀】 上篇文章:ARM Cortex-M 系列 1 番外篇-- Cortex-M0, M3, M4, M7, M33 , M35P 差異 下篇文章:ARM Cortex-M 系列 2.1 – RT-Thread Cortex-M7 異常處理及 hardfault 處理分析 Cortex-M7是基于ARMv7架構(gòu),ARMv7 架構(gòu)主要分為以下三類: 其中 Cortex-M 系列應用

    2024年02月16日
    瀏覽(16)
  • 嵌入式筆記1.1 ARM Cortex-M3M4簡介

    嵌入式筆記1.1 ARM Cortex-M3M4簡介

    目錄 微型計算機的硬件共性結(jié)構(gòu)及基本性能指標 關(guān)于存儲器的介紹 微型計算機的基本性能指標 1. 字長 2. 主頻 3. 存儲容量 4. 外設(shè)擴展能力 5. 軟件配置情況 Arm Cortex 系列微處理器系列概述 Arm Cortex-A 系列處理器 Arm Cortex-R 系列處理器 Arm Cortex-M 系列處理器 Cortex-M3 和 Cortex-M4簡

    2024年03月27日
    瀏覽(35)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包