<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

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

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

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

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

          本文引用地址:http://www.ex-cimer.com/article/201611/315561.htm

          1.1.1 命名規(guī)則
          早期ARM使用如圖1.1所示的命名規(guī)則來描述一個處理器。在“ARM”后的字母和數(shù)字表明了一個處理器的功能特性。隨著更多特性的增加,字母和數(shù)字的組合可能會改變。注意:命名規(guī)則不包含體系結構(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命名規(guī)則

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

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

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

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


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

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

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

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

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

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

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

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

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

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

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

            1.ARM實現(xiàn)方法

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

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

            ARM7TDMI(包括ARM7TDMIS)系列的ARM內核也是面向同一類市場的。這類內核已經存在了十多年之久,并推動了ARM成為處理器內核領域的主導者。眾多的制造商出售基于ARM7系列的處理器以及其他配套的系統(tǒng)軟件、開發(fā)和調試工具。在許多方面,ARM7TDMI都可以稱得上是嵌入式領域的實干家。

            2.兩者差異

            除了使用哈佛結構,Cortex-M3還具有其它顯著的優(yōu)點:具有更小的基礎內核,價格更低,速度更快。與內核集成在一起的是一些系統(tǒng)外設,如中斷控制器、總線矩陣、調試功能模塊,而這些外設通常都是由芯片制造商增加的。Cortex-M3還集成了睡眠模式和可選的完整的八區(qū)域存儲器保護單元。它采用THUMB-2指令集,最大限度降低了匯編器使用率。

            3.指令集

            ARM7可以使用ARM和Thumb兩種指令集,而Cortex-M3只支持最新的Thumb-2指令集。這樣設計的優(yōu)勢在于:
            ●免去Thumb和ARM代碼的互相切換,對于早期的處理器來說,這種狀態(tài)切換會降低性能。
            ●Thumb-2指令集的設計是專門面向C語言的,且包括If/Then結構(預測接下來的四條語句的條件執(zhí)行)、硬件除法以及本地位域操作。
            ●Thumb-2指令集允許用戶在C代碼層面維護和修改應用程序,C代碼部分非常易于重用。
            ●Thumb-2指令集也包含了調用匯編代碼的功能:Luminary公司認為沒有必要使用任何匯編語言。
            ●綜合以上這些優(yōu)勢,新產品的開發(fā)將更易于實現(xiàn),上市時間也大為縮短。

            4.中斷

            Cortex-M3的另一個創(chuàng)新在于嵌套向量中斷控制器NVIC(Nested Vector Interrupt Controller)。相對于ARM7使用的外部中斷控制器,Cortex-M3內核中集成了中斷控制器,芯片制造廠商可以對其進行配置,提供基本的32個物理中斷,具有8層優(yōu)先級,最高可達到240個物理中斷和256個中斷優(yōu)先級。此類設計是確定的且具有低延遲性,特別適用于汽車應用。

            NVIC使用的是基于堆棧的異常模型。在處理中斷時,將程序計數(shù)器,程序狀態(tài)寄存器,鏈接寄存器和通用寄存器壓入堆棧,中斷處理完成后,在恢復這些寄存器。堆棧處理是由硬件完成的,無需用匯編語言創(chuàng)建中斷服務程序的堆棧操作。
          中斷嵌套是可以是實現(xiàn)的。中斷可以改為使用比之前服務程序更高的優(yōu)先級,而且可以在運行時改變優(yōu)先級狀態(tài)。使用末尾連鎖(tail-chaining)連續(xù)中斷技術只需消耗三個時鐘周期,相比于32個時鐘周期的連續(xù)壓、出堆棧,大大降低了延遲,提高了性能。

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

            5.睡眠

            Cortex-M3的電源管理方案通過NVIC支持Sleep Now,Sleep on Exit,(退出最低優(yōu)先級的ISR)和SLEEPDEEP modes這三種睡眠模式。

            為了產生定期的中斷時間間隔,NVIC還集成了系統(tǒng)節(jié)拍計時器,這個計時器也可以作為RTOS和調度任務的心跳。這種做法與先前的ARM架構的不同之處就在于不需要外部時鐘。

            6.存儲器保護單元

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

            7.調試

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

            8.應用范圍

            雖然ARM7內核并沒有像Cortex系列那樣集成很多外設,但是大量的基于ARM7的器件,從通用MCU,到面向應用的MCU、SOC甚至是Actel公司基于ARM7內核的FPGA,都擁有更為眾多的外圍設備。大約有150種MCU是基于ARM7內核的(根據(jù)不同的統(tǒng)計方法,這個數(shù)字可能會更高)。

            你會發(fā)現(xiàn)ARM7都可以實現(xiàn)幾乎所有的嵌入式應用,或采用定制的方式來滿足需求?;跇藴蕛群?,芯片廠商可以加入不同類型、大小的存儲器和其他外圍設備,比如串行接口、總線控制器、存儲器控制器和圖形單元,并針對工業(yè)、汽車或者其他要求苛刻的領域,使用不同的芯片封裝,提供不同溫度范圍的芯片版本。芯片廠商也可能綁定特定的軟件,比如TCP/IP協(xié)議?;蛎嫦蛱囟☉玫能浖?。

            例如,STMicroelectronics公司的STR7產品線有三個主要系列共45個成員,具有不同的封裝和存儲器。每一個系列都針對特定的應用領域,具有不同外設集合。比如STR730家族是專為工業(yè)和汽車應用設計的,因此具有可擴展的溫度范圍,包括多個I/O口和3個CAN總線接口。STR710則是面向于消費市場以及高端的工業(yè)應用,它具有多個通信接口,比如USB、CAN、ISO7816以及4個UART,還有大容量的存儲器和一個外部存儲器接口。

            芯片廠商也可以選擇利于開發(fā)人員開發(fā)產品的措施,比如采用ARM的嵌入式跟蹤宏單元ETM(Embedded Trace Macrocell),并提供開發(fā)和調試工具。

            Luminary、STMicroelectronics這兩家公司已經有基于Cortex-M3的芯片,其他公司如NXP、Atmel也宣布生產該類產品。

            9.配套工具

            ARM7應用已經非常普及,它已經有非常多第三方的開發(fā)和調試工具支持。在ARM的網站上有超過130家工具公司名稱列表。
            
            大多數(shù)廠商提供了基本的開發(fā)板,并提供下載程序的接口、調試工具以及外部設備的驅動,包括LED燈的顯示狀態(tài)或者屏幕上的單行顯示。通常,開發(fā)套件包括編譯器、一些調試軟件以及開發(fā)板。更為高級的套件包括第三方的集成開發(fā)環(huán)境(IDE),IDE中包含編譯器、鏈接器、調試器、編輯器和其他工具,也可能包括仿真硬件,比如說JTAG仿真器。內電路仿真器(ICE)是最早的也是最有用的調試工具形式之一,很多廠商都在ARM7上提供了這一接口。

            軟件開發(fā)工具范圍很廣:從建模到可視化設計,到編譯器?,F(xiàn)在很多的產品也用到實時操作系統(tǒng)(RTOS)和中間件,以加速開發(fā)進程、降低開發(fā)難度。另外,還有一個非常重要的因素,很多的開發(fā)人員對ARM7的開發(fā)經驗非常豐富。
          雖然現(xiàn)在已經有新興的Cortex-M3工具,但顯然還是有一定的差距。不過,Cortex-M3的集成調試性能使調試變得簡單且有效,且無需用到內電路仿真器ICE。

            10.決策

            那么,你應該如何做出何種選擇呢?如果成本是最主要考慮因素,您應該選擇Cortex-M3;如果在低成本的情況下尋求更好的性能和改進功耗,您最好考慮選用Cortex-M3;特別是如果你的應用是汽車和無線領域,最好也采用Cortex-M3,這正是Coretex-M3的主要定位市場。

            由于Cortex-M3內核中的多種集成元素以及采用Thumb-2指令集,其開發(fā)和調試比ARM7TDMI要簡單快捷。然而,由于重定義ARM7TDMI的應用不是一件困難的事,特別是在使用了RTOS的情況下。保守者可能會沿用ARM7TDMI內核的芯片,并避免使用那些會使重定義變得復雜的功能。

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



          評論


          相關推薦

          技術專區(qū)

          關閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();