1907_Arm?Cortex-M3的基本了解
全部學習匯總:?g_arm_cores:?ARM內核的學習筆記?(gitee.com)
我發現Arm?Coretex-M3有一個專門的DataSheet,看起來這個的確是被當做了一個設計的產品來對待的。正好,基于這個文件來看看M3具備哪些基本的特性,尤其是我關注的軟件設計方面。
- ATB是高級trace總線的意思。一直聽說trace是很高級的調試功能,但是時至今日我沒有用過。慚愧、慚愧!
- M3的MPU這里描述是可選的,在之前看M系列內核的對比表的時候還以為這個是必然會集成的。
- 串口的調試方式,就是調試器設置的時候需要選擇的SWD模式。
增加之前看過的文檔關于MPU部分的截圖,的確是讓我在這里產生了疑惑。
支持的基本功能:內核、NVIC中斷控制器、各種總線、可選的MPU、調試以及trace的支持。
這里提到了一個printf風格的調試,不知道是一個什么樣的具體功能。而我個人的確是很喜歡在軟件調試的時候一通printf的。
調試口是直接接到總線上而不是CPU上,trace的模塊ETM則是靠近CPU一些。
指令中是支持基本的push以及pop操作的。不過,這兩個指令在我看各種匯編代碼的時候似乎是沒看到。
看起來,trace不僅是硬件到位了就能夠順利開啟的一個功能。這個也是需要軟件配置寄存器來支持一下的,或者,也可能是調試器來修改寄存器?
這個是一個指令集的圖,看的一知半解。幾個想到的點記錄一下:
- M3和M4都是基于v7的指令集的,但是在指令集上也有不同。其實,從之前的M系列的對比表上也是可以看出一些信息的。M4是有DSP的,而M3是沒有DSP的。DSP肯定是有自己的指令集的,因此M4肯定有多于M3的指令。
- v6以及v7中似乎有一些指令是完全相同的名稱,比如ADC、ADD等。大概看了下,可能左下角的小方塊是v6的架構,其他的全都是v7?這么看,v7相對于v6來說在指令集上的擴種的確是多很多。
- 兩個坐標方向中的箭頭,我覺得可能是劃定對應矩形的意思。如果是這樣,M4比M3多出來的指令是很多的。不過,從這個包含的關系上來看,或許M4可以完全按照M3來使用?
- 這么看下來,可能M4的優勢是在于DSP的指令擴展。不知道現在的編譯器是否會優先考慮這方面的使用,否則兩者的算力或者性能豈不是沒有過多的差距?
這個術語表還是可以復習看一下的,里面很多功能塊需要關注下。算是豐富對這個架構理解的很好的語言元素。