ARM7與Cortex-M3的區別
2.兩者差異除了使用哈佛結構,Cortex-M3還具有其它顯著的優點:具有更小的基礎內核,價格更低,速度更快。與內核集成在一起的是一些系統外設,如中斷控制器、總線矩陣、調試功能模塊,而這些外設通常都是由芯片制造商增加的。Cortex-M3還集成了睡眠模式和可選的完整的八區域存儲器保護單元。它采用THUMB-2指令集,最大限度降低了匯編器使用率。
3.指令集ARM7可以使用ARM和Thumb兩種指令集,而Cortex-M3只支持最新的Thumb-2指令集。這樣設計的優勢在于:
●免去Thumb和ARM代碼的互相切換,對于早期的處理器來說,這種狀態切換會降低性能。
●Thumb-2指令集的設計是專門面向C語言的,且包括If/Then結構(預測接下來的四條語句的條件執行)、硬件除法以及本地位域操作。
●Thumb-2指令集允許用戶在C代碼層面維護和修改應用程序,C代碼部分非常易于重用。
●Thumb-2指令集也包含了調用匯編代碼的功能:Luminary公司認為沒有必要使用任何匯編語言。
●綜合以上這些優勢,新產品的開發將更易于實現,上市時間也大為縮短。
4.中斷Cortex-M3的另一個創新在于嵌套向量中斷控制器NVIC(Nested
中斷嵌套是可以是實現的。中斷可以改為使用比之前服務程序更高的優先級,而且可以在運行時改變優先級狀態。使用末尾連鎖(tail-chaining)連續中斷技術只需消耗三個時鐘周期,相比于32個時鐘周期的連續壓、出堆棧,大大降低了延遲,提高了性能。如果在更高優先級的中斷到來之前,NVIC已經壓堆棧了,那就只需要獲取一個新的向量地址,就可以為更高優先級的中斷服務了。同樣的,NVIC不會用出堆棧的操作來服務新的中斷。這種做法是完全確定的且具有低延遲性。
5.睡眠Cortex-M3的電源管理方案通過NVIC支持Sleep
6.存儲器保護單元存儲器保護單元是一個可選組建。選用了這個選項,內存區域就可以與應用程序特定進程按照其他進程所定義的規則聯系在一起。例如,一些內存可以完全被其他進程阻止,而另外一部分內存能對某些進程表現為只讀。還可以禁止進程進入存儲器區域。可靠性,特別是實時性因此得到重大改進。
7.調試對Cortex-M3處理器系統進行調試和追蹤是通過調試訪問端口(Debug
8.應用范圍雖然ARM7內核并沒有像Cortex系列那樣集成很多外設,但是大量的基于ARM7的器件,從通用MCU,到面向應用的MCU、SOC甚至是Actel公司基于ARM7內核的FPGA,都擁有更為眾多的外圍設備。大約有150種MCU是基于ARM7內核的(根據不同的統計方法,這個數字可能會更高)。你會發現ARM7都可以實現幾乎所有的嵌入式應用,或采用定制的方式來滿足需求。基于標準內核,芯片廠商可以加入不同類型、大小的存儲器和其他外圍設備,比如串行接口、總線控制器、存儲器控制器和圖形單元,并針對工業、汽車或者其他要求苛刻的領域,使用不同的芯片封裝,提供不同溫度范圍的芯片版本。芯片廠商也可能綁定特定的軟件,比如TCP/IP協議棧或面向特定應用的軟件。例如,STMicroelectronics公司的STR7產品線有三個主要系列共45個成員,具有不同的封裝和存儲器。每一個系列都針對特定的應用領域,具有不同外設集合。比如STR730家族是專為工業和汽車應用設計的,因此具有可擴展的溫度范圍,包括多個I/O口和3個CAN總線接口。STR710則是面向于消費市場以及高端的工業應用,它具有多個通信接口,比如USB、CAN、ISO7816以及4個UART,還有大容量的存儲器和一個外部存儲器接口。芯片廠商也可以選擇利于開發人員開發產品的措施,比如采用ARM的嵌入式跟蹤宏單元ETM(Embedded
9.配套工具ARM7應用已經非常普及,它已經有非常多第三方的開發和調試工具支持。在ARM的網站上有超過130家工具公司名稱列表。大多數廠商提供了基本的開發板,并提供下載程序的接口、調試工具以及外部設備的驅動,包括LED燈的顯示狀態或者屏幕上的單行顯示。通常,開發套件包括編譯器、一些調試軟件以及開發板。更為高級的套件包括第三方的集成開發環境(IDE),IDE中包含編譯器、鏈接器、調試器、編輯器和其他工具,也可能包括仿真硬件,比如說JTAG仿真器。內電路仿真器(ICE)是最早的也是最有用的調試工具形式之一,很多廠商都在ARM7上提供了這一接口。軟件開發工具范圍很廣:從建模到可視化設計,到編譯器。現在很多的產品也用到實時操作系統(RTOS)和中間件,以加速開發進程、降低開發難度。另外,還有一個非常重要的因素,很多的開發人員對ARM7的開發經驗非常豐富。
雖然現在已經有新興的Cortex-M3工具,但顯然還是有一定的差距。不過,Cortex-M3的集成調試性能使調試變得簡單且有效,且無需用到內電路仿真器ICE。
10.決策那么,你應該如何做出何種選擇呢?如果成本是最主要考慮因素,您應該選擇Cortex-M3;如果在低成本的情況下尋求更好的性能和改進功耗,您最好考慮選用Cortex-M3;特別是如果你的應用是汽車和無線領域,最好也采用Cortex-M3,這正是Coretex-M3的主要定位市場。由于Cortex-M3內核中的多種集成元素以及采用Thumb-2指令集,其開發和調試比ARM7TDMI要簡單快捷。然而,由于重定義ARM7TDMI的應用不是一件困難的事,特別是在使用了RTOS的情況下。保守者可能會沿用ARM7TDMI內核的芯片,并避免使用那些會使重定義變得復雜的功能。
IAR
Cortex-M3和ARM7的比較
| 比較項目 | ARM7 | Cortex-M3 |
| 架構 | ARMv4T(馮諾依曼) 指令和數據總線共用,會出現瓶頸 | ARMv7-M(哈佛) 指令和數據總線分開,無瓶頸 |
| 指令集 | 32位ARM指令+16位Thumb指令 兩套指令之間需要進行狀態切換 | Thumb/Thumb-2指令集 指令可直接混寫,無需狀態切換 |
| 流水線 | 3級流水線 | 3級流水線+分支預測 |
| 性能 | 0.95DMIPS/MHz(ARM模式) | 1.25DMIPS/MHz |
| 功耗 | 0.28mW/MHz | 0.19mW/MHz |
| 低功耗模式 | 無 | 內置睡眠模式 |
| 面積 | 0.62mm2(僅內核) | 0.86mm2(內核+外設) |
| 中斷 | 普通中斷IRQ和快速中斷FIQ太少,大量外設不得不復用中斷 | 不可屏蔽中斷NMI+1-240個物理中斷 每個外設都可以獨占一個中斷,效率高 |
| 中斷延遲 | 24-42個時鐘周期,緩慢 | 12個時鐘周期,最快只需6個 |
| 中斷壓棧 | 軟件手工壓棧,代碼長且效率低 | 硬件自動壓棧,無需代碼且效率高 |
| 存儲器保護 | 無 | 8段存儲器保護單元(MPU) |
| 內核寄存器 | 寄存器分為多組、結構復雜、占核面積多 | 寄存器不分組(SP除外),結構簡單 |
| 工作模式 | 7種工作模式,比較復雜 | 只有線程模式和處理模式兩種,簡單 |
| 乘除法指令 | 多周期乘法指令,無除法指令 | 單周期乘法指令,2-12周期除法指令 |
| 位操作 | 無 | 先進的Bit-band位操作技術,可直接訪問外設寄存器的某個值 |
| 系統節拍定時 | 無 | 內置系統節拍定時器,有利于操作系統移植 |


評論