Cortex-M3與ARM7的比較

要使用低成本的 32位處理器,開發人員面臨兩種選擇,基於Cortex-M3內核或者ARM7TDMI內核的處理器。如何做出選擇?選擇標準又是什麼?本文主要介紹了ARM Cortex-M3內核微控制器區別於ARM7的一些特點,幫助您快速選擇。

1.ARM實現方法

        ARM Cortex-M3是一種基於ARM V7架構的最新ARM嵌入式內核,它採用哈佛結構,使用分離的指令和數據總線( 馮諾伊曼結構下,數據和指令共用一條總線 )。從本質上來說,哈佛結構在物理上更爲複雜,但是處理速度明顯加快。根據摩爾定理,複雜性並不是一件非常重要的事,而吞吐量的增加卻極具價值。

       ARM公司對Cortex-M3的定位是:向專業嵌入式市場提供低成本、低功耗的芯片。在成本和功耗方面,Cortex-M3具有相當好的性能,ARM公司認爲它特別適用於汽車和無線通信領域。和所有的ARM內核一樣,ARM公司將內該設計授權給各個製造商來開發具體的芯片。迄今爲止,已經有多家芯片製造商開始生產基於Cortex-M3內核的微控制器。

        ARM7TDMI(包括ARM7TDMIS)系列的ARM內核也是面向同一類市場的。這類內核已經存在了十多年之久,並推動了ARM成爲處理器內核領域的主導者。衆多的製造商(據ARM宣稱,多達16家)出售基於ARM7系列的處理器以及其他配套的系統軟件、開發和調試工具。在許多方面,ARM7TDMI都可以稱得上是嵌入式領域的實幹家。

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 Vector Interrupt Controller)。相對於ARM7使用的外部中斷控制器,Cortex-M3內核中集成了中斷控制器,芯片製造廠商可以對其進行配置,提供基本的32個物理中斷,具有8層優先級,最高可達到240個物理中斷和256箇中斷優先級。此類設計是確定的且具有低延遲性,特別適用於汽車應用。

       NVIC使用的是基於堆棧的異常模型。在處理中斷時,將程序計數器,程序狀態寄存器,鏈接寄存器和通用寄存器壓入堆棧,中斷處理完成後,在恢復這些寄存器。堆棧處理是由硬件完成的,無需用彙編語言創建中斷服務程序的堆棧操作。

       中斷嵌套是可以是實現的。中斷可以改爲使用比之前服務程序更高的優先級,而且可以在運行時改變優先級狀態。使用末尾連鎖( tail-chaining )連續中斷技術只需消耗三個時鐘週期,相比於 32個時鐘週期的連續壓、出堆棧,大大降低了延遲,提高了性能。

       如果在更高優先級的中斷到來之前, NVIC已經壓堆棧了,那就只需要獲取一個新的向量地址,就可以爲更高優先級的中斷服務了。同樣的,NVIC不會用出堆棧的操作來服務新的中斷。這種做法是完全確定的且具有低延遲性。

5.睡眠

         Cortex-M3的電源管理方案通過NVIC支持Sleep Now, Sleep on Exit (退出最低優先級的ISR) and SLEEPDEEP modes這三種睡眠模式。爲了產生定期的中斷時間間隔, NVIC還集成了系統節拍計時器,這個計時器也可以作爲RTOS和調度任務的心跳。這種做法與先前的ARM架構的不同之處就在於不需要外部時鐘。

6.存儲器保護單元

       存儲器保護單元是一個可選組建。選用了這個選項,內存區域就可以與應用程序特定進程按照其他進程所定義的規則聯繫在一起。例如,一些內存可以完全被其他進程阻止,而另外一部分內存能對某些進程表現爲只讀。還可以禁止進程進入存儲器區域。可靠性,特別是實時性因此得到重大改進。

7.調試

        對 Cortex-M3 處理器系統進行調試和追蹤是通過調試訪問端口( Debug Access Port )來實現的。調試訪問端口可以是一個 2針的串行調試端口( Serial Wire Debug Port )或者串行 JTAG調試端口( Serial Wire JTAG Debug Port )。通過 Flash片、斷點單元、數據觀察點、跟蹤單元,以及可選的嵌入式跟蹤宏單元( Embedded Trace Macrocell )和指令跟蹤宏單元( Instrumentation Trace Macrocell )等一系列功能相結合,在內核部分就可以採用多種類型的調試方法及監控函數。例如,可以設置斷點、觀察點、定義缺省條件或執行調試請求、監控停止操作或繼續操作。所有的這些功能在 ARM架構的產品中已經實現,只是 Cortex-M3 將這些功能整合起來,方便開發人員使用。

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 Trace Macrocell ),並提供開發和調試工具。

      截止至這篇文章寫作之時, Luminary、STMicroelectronics這兩家公司已經有基於Cortex-M3的芯片,其他公司如NXP、Atmel也宣佈生產該類產品。

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內核的芯片,並避免使用那些會使重定義變得複雜的功能。

11.IAR YellowSuite for ARM

        IAR YellowSuite for ARM是一整套支持ARM的開發工具整體解決方案,包括:visualSTATE狀態機建模工具、IAR Embedded Workbench集成開發環境、PowerPac RTOS和中間件、仿真器等。不管選用 ARM7還是Cortex-M3,IAR的開發工具都能支持。

visualSTATE狀態機建模工具

        visualSTATE是一套精緻、易用的開發工具, 包含圖形設計器、測試工具包,代碼生成器和文檔生成器, 用於設計、測試和實現基於狀態圖設計的嵌入式應用。
• 基於統一建模語言 (UML)狀態機理論的圖形化模型設計;
• 對設計模型進行規範性驗證,檢查系統的邏輯一致性,鑑別出系統設計漏洞或錯誤;
• 設計過程的早期階段,甚至在硬件設計尚未完成之前,就可以使用測試工具來確保應用能按照預想方式運行;
• 自動代碼生成功能可以生成極爲緊湊的 C/C++代碼,100%與設計保持一致;
• 自動文檔生成功能提供了詳盡的信息;
• 與 IAR Embedded Workbench 無縫集成,提供多種微控制器和評估板的現成示例代碼;
• 通過 CSPYLink或RealLink對目標器件進行綜合的圖形化狀態機調試;
• 支持多種硬件調試接口,例如 J-Link、通用JTAG仿真器、NEXUS仿真器等

IAR Embedded Workbench for ARM集成開發環境

        IAR Embedded Workbench for ARM集成開發環境(簡稱EWARM) 是一套支持 ARM所有處理器的集成開發環境,包含項目管理器、編輯器、C/C++ 編譯器 、彙編器、連接器和調試器。

       IAR Embedded Workbench for ARM集成開發環境支持所有的ARM內核,並提供大多數芯片外設計的支持:

ARM7 (ARM7TDMI, ARM7TDMI-S, ARM720T) ARM9 (ARM9TDMI, ARM920T, ARM922T, ARM940T)
ARM9E (ARM926EJ-S, ARM946E-S, ARM966E-S) ARM10E (ARM1020E, ARM1022E), ARM11
SecurCore (SC100, SC110, SC200, SC210) CortexM3, Cortex-M1 XScale

        EWARM允許對用戶選擇對代碼大小或執行速度實行多級優化,同時還允許對項目中作不同的全局和局部優化配置,以達到速度和代碼尺寸的平衡。EWARM還支持對優化級別的微調,以及對單個函數的特定優化配置。高級的全局優化與針對特定芯片優化相結合,可以生成最爲緊湊、有效的代碼。

       EWARM中的C-SPY調試器免費集成了μC/OS-II等的內核識別(Kernel Awareness)插件,通過它可以在IAR調試器中顯示μC/OS-II內部數據結構窗口,從而瞭解每一個項目應用中運行任務的信息,每一個信號燈、互斥量、郵箱、隊列、事件標誌信息,以及等待上述內核對象的所有任務列表信息。

        EWARM爲絕大多數ARM芯片提供了Flash Loader。當調試器啓動時,Flash Loader同時被調用,自動將程序下載到Flash。Flash Loader完全集成在EWARM中,燒寫過程中無需特殊的Flash編程工具和軟件。

        IAR J-Link仿真器可以直接與EWARM集成開發環境無縫連接,無需安裝任何驅動程序, 操作方便、連接方便、簡單易學,是學習開發ARM最實用的開發工具。下載速度高達800K/S,支持ARM7/9/11/Cortex-M3,並支持JTAG、SWD兩種調試接口。

IAR PowerPac RTOS和中間件家族

         IAR PowerPac 家族包括 RTOS 、文件系統、 USB 、 TCP/IP 等協議棧,支持所有 ARM 內核。它與 IAR Embedded Workbench 無縫集成 , 並有大量的代碼例程和板級支持包 ( BSP) 。 其授權方式是 按座席收取 License 費, 沒有版稅 , 降低了最終用戶的風險。用戶可以自主選擇庫形式或源代碼形式的 IAR PowerPac。

本文來源北京麥克泰公司

公司信息:
ARM-英國ARM公司
BMR--北京麥克泰技術

發佈了94 篇原創文章 · 獲贊 96 · 訪問量 40萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章