新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 選擇ARM處理器的ARM7還是Cortex-M3

        選擇ARM處理器的ARM7還是Cortex-M3

        作者: 時間:2016-11-17 來源:網絡 收藏
        1.1 ARM處理器系列

        每個ARM處理器都有一個特定的指令集架構(ISA),而一個ISA版本又可以有多種處理器實現。ISA隨著嵌入式市場的需求而發展,至今已經有多個版本。ARM公司規劃該發展過程,使得在較早的架構版本上編寫的代碼也可以在后繼版本上執行(即代碼的兼容性)。

        本文引用地址:http://www.104case.com/article/201611/315561.htm

        1.1.1 命名規則
        早期ARM使用如圖1.1所示的命名規則來描述一個處理器。在“ARM”后的字母和數字表明了一個處理器的功能特性。隨著更多特性的增加,字母和數字的組合可能會改變。注意:命名規則不包含體系結構(ISA)的版本信息。

        ARM {x}{y}{z}{T}{D}{M}{I}{E}{J}{F}{-S}
        x——系列
        y——存儲管理/保護單元
        z——cache
        T——Thumb 16位譯碼器
        D——JTAG調試器
        M——快速乘法器
        I——嵌入式跟蹤宏單元
        E——增強指令(基于TDMI)
        J——Jazelle
        F——向量浮點單元
        S——可綜合版本
        圖1.1 早期ARM命名規則

        關于ARM命名法則,還有一些附加的要點:
        ? ARM7TDMI之后的所有ARM內核,即使“ARM”標志后沒有包含那些字符,也都包括了TDMI功能特性。
        ? 處理器系列是共享相同硬件特性的一組處理器具體實現。例如,ARM7TDMI、ARM740T和ARM720T都共享相同的系列特性,都屬于ARM7系列。
        ? JTAG是由IEEE1149.1標準測試訪問端口(Standard Test Access
        Port)和邊界掃描結構來描述的。它是ARM用來發送和接收處理器內核與測試儀器之間調試信息的一系列協議。
        ? 嵌入式ICE宏單元(EmbeddedICE macrocell)是建立在處理器內部用來設置斷點和觀察點的調試硬件。
        ? 可綜合的——意味著處理器內核是以源代碼形式提供的,這種源代碼形式又可以被編譯成一種易于EDA工具使用的形式。

        隨著近年來ARM架構的產品爆炸性地涌入市場,以及對于維護架構一致性的高層次的要求,ARM重新組織了ARM架構的規范,定義了以ARM v7架構的Cortex系列。

        1.1.2 ARM處理器系列
        ARM公司設計了許多處理器,它們可以根據使用的不同內核劃分到各個系列中。系列劃分是基于ARM7、ARM9、ARM10、ARM11和Cortex內核。后綴數字7、9、10和11表示不同的內核設計。數字的升序說明性能和復雜度的提高。ARM8開發出來以后很快就被取代了。
        在每個系列中,存儲器管理、cache和TCM處理器擴展也有多種變化。ARM繼續在可用的產品系列和每個系列內部的不同變種兩方面做進一步開發。
        表1.1總結了各種處理器的不同功能特性。值得注意的是,指令集架構(
        ISA)是體現CPU核性能特點的重要因素,如采用v5TEJ架構的ARM926EJ-S與采用v4T架構的
        ARM920T處理器,在相同的工作頻率下,前者的處理能力要高得多。

        表1.1 ARM處理器不同功能特性


        a: E擴展提供了增強的乘法指令和飽和運算指令(DSP

        1.1.2.1 ARM7系列
        ARM7內核是馮?諾伊曼體系結構,數據和指令使用同一條總線。內核有一條3級流水線,執行ARMv4指令集。
        ARM7TDMI是ARM公司于1995年推出的新系列中的第一個處理器內核。是目前一個非常流行的內核,已被用在許多32位嵌入式處理器上。它提供了非常好的性能——功耗比。ARM7TDMI處理器內核已經許可給許多世界頂級半導體公司,它是第一個包括Thumb指令集、快速乘法指令和嵌入式ICE調試技術的內核。
        ARM7系列中一個重要的變化是ARM7TDMI-S。ARM7TDMI-S與標準ARM7TDMI有相同的操作特性,但它是可綜合的(見2.6.1小節)。
        ARM720T是ARM7系列中最具靈活性的成員,因為它包含了一個MMU。MMU的存在意味著ARM720T能夠處理Linux和Microsoft嵌入式操作系統(如WinCE)。這一處理器還包括了一個8KB的統一cache(指令/數據混合cache)。向量表可以通過設置一個協處理器15(CP15)寄存器來重定位到更高的地址。
        另一個成員是ARM7EJ-S處理器,它也是可綜合的。ARM7EJ-S與其他ARM7處理器有很大不同,因為它有一條5級流水線,并且執行ARMv5TEJ指令。這個版本是ARM7中唯一一個提供java加速和增強指令,而沒有任何存儲器保護的處理器。

        1.1.2.2 ARM9系列
        ARM9系列于1997年問世。由于采用了5級指令流水線,ARM9處理器能夠運行在比ARM7更高的時鐘頻率上,提高了處理器的整體性能。存儲器系統根據哈佛體系結構重新設計,區分了數據D和指令I總線。
        ARM9系列的第一個處理器是ARM920T,它包含獨立的D+I
        cache和一個MMU。這個處理器能夠被用在要求有虛擬存儲器(虛存)支持的操作系統上。ARM922T是ARM920T的變種,只有一半大小的D+I cache。
        ARM940T包括一個更小的D+I cache和一個MPU。它是針對不要求運行平臺操作系統的應用而設計的。ARM920T和ARM940T都執行v4T架構指令。
        ARM9系列的下一個處理器是基于ARM9E-S
        內核的。這個內核是ARM9內核帶有E擴展的一個可綜合版本。它有二個變種:ARM946E-S和ARM966E-S。兩者都執行v5TE架構指令。它們也支持可選的嵌入式跟蹤宏單元(ETM),它允許開發者實時跟蹤處理器上指令和數據的執行。當調試對時間敏感(time-critical)的程序段時,這種方法非常重要。
        ARM946E-S包括TCM、cache和一個MPU。TCM和cache的大小可配置。該處理器是針對要求有確定的實時響應的嵌入式控制應用而設計的。而ARM966E有可配置的TCM,但沒有MPU和cache擴展。
        ARM9產品線的最新內核是ARM926EJ-S可綜合的處理器內核,發布于2000年。它是針對小型便攜式java設備,諸如3G手機和個人數字助理(PDA)應用而設計的。ARM926EJ-S是第一個包含Jazelle技術(可加速java字節碼的執行)的ARM處理器內核。它還有一個MMU、可配置的TCM,以及具有零或非零等待存儲器的D+I
        cache。

        1.1.2.3 ARM10系列
        ARM10發布于1999年,主要是針對高性能的設計。它把ARM9的流水線擴展到6級,也支持可選的向量浮點單元(VFP),它對ARM10的流水線加入了第7段。VFP明顯提高了浮點運算的性能,并與IEEE754.1985浮點標準兼容。
        ARM1020E是第一個使用ARM10E內核的處理器。像ARM9E一樣,它包括了增強的E指令。它有獨立的32KB D+I
        cache、可選向量浮點單元(VFP),以及MMU。ARM1020E還有一個雙64位總線接口以提高性能。
        ARM1026EJ-S非常類似于ARM926EJ-S,但同時具有MPU和MMU。這一處理器具有ARM10的性能和ARM926EJ-S的靈活性。

        1.1.2.4 ARM11系列
        ARM1136J-S發布于2003年,是針對高性能和高能效應用而設計的。ARM1136J-S是第一個執行ARMv6架構指令的處理器。它集成了一條具有獨立的load-store和算術流水線的8級流水線。ARMv6指令包含了針對媒體處理的單指令流多數據流(SIMD)擴展,特殊的設計以提高視頻處理性能。
        ARM1136JF-S就是為了進行快速浮點運算,而在ARM1136J-S增加了向量浮點單元。

        1.1.2.5 ARM Cortex系列
        ARM Cortex發布于2005年,為各種不同性能需求的應用提供了一整套完整的優化解決方案,該系列的技術劃分完全針對不同的市場應用和性能需求。目前ARM
        Cortex定義了三個系列:

        Cortex-A系列:針對復雜OS和應用程序(如多媒體)的應用處理器。支持ARM、Thumb和Thumb-2指令集,強調高性能與合理的功耗,存儲器管理支持虛擬地址。

        Cortex-R系列:針對實時系統的嵌入式處理器。支持ARM、Thumb和Thumb-2指令集,強調實時性,存儲器管理只支持物理地址。

        Cortex-M系列:針對價格敏感應用領域的嵌入式處理器,只支持Thumb-2指令集,強調操作的確定性,以及性能、功耗和價格的平衡。

        這些系列曾在ARMv7發展過程中被正式介紹過,A系列和R系列就已經隱式地出現在早期的版本中了,以及虛擬存儲系統架構(VMSA)和保護存儲系統架構(PMSA)。
        到目前為止,Cortex系列正式發布的版本為Cortex-A8、Cortex-R4和Cortex_M3,他們全部實現了Thumb-2指令集(或子集),可滿足不同的性能、價格市場需求。

        ARM
        Cortex-M3不支持ARM指令集,支持的指令集包括ARMv6的大部分16位Thumb指令和ARMv7的Thumb-2指令集。Thumb-2指令集是一個16/32位混合指令系統。Cortex-M3支持的16位、32位Thumb指令

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

          1.ARM實現方法

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

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

          ARM7TDMI(包括ARM7TDMIS)系列的ARM內核也是面向同一類市場的。這類內核已經存在了十多年之久,并推動了ARM成為處理器內核領域的主導者。眾多的制造商出售基于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)和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內核的芯片,并避免使用那些會使重定義變得復雜的功能。

          IAR Systems公司是最早做C編譯器的廠商,提供一系列ARM開發工具,包括IAR visualSTATE 建模工具、IAR Embedded Workbench for ARM集成開發環境、IAR PowerPac實時操作系統和中間件、J-Link硬件仿真工具以及開發套件。不管用戶的選擇是ARM7還是Cortex-M3,IAR都會讓開發變得簡單而有趣。



        評論


        技術專區

        關閉
        主站蜘蛛池模板: 永年县| 碌曲县| 延庆县| 吉安市| 乌鲁木齐市| 滁州市| 定结县| 广州市| 基隆市| 五河县| 渭南市| 中超| 夏河县| 永济市| 中宁县| 称多县| 那曲县| 深水埗区| 文化| 金沙县| 张家界市| 吉安市| 双鸭山市| 奇台县| 鹤壁市| 焦作市| 汉沽区| 威远县| 漠河县| 营山县| 黔西| 余干县| 马尔康县| 杭锦后旗| 株洲县| 东乌| 威宁| 夏河县| 吕梁市| 仙游县| 涡阳县|