選擇ARM處理器的ARM7還是Cortex-M3
每個(gè)ARM處理器都有一個(gè)特定的指令集架構(ISA),而一個(gè)ISA版本又可以有多種處理器實(shí)現。ISA隨著(zhù)嵌入式市場(chǎng)的需求而發(fā)展,至今已經(jīng)有多個(gè)版本。ARM公司規劃該發(fā)展過(guò)程,使得在較早的架構版本上編寫(xiě)的代碼也可以在后繼版本上執行(即代碼的兼容性)。
本文引用地址:http://dyxdggzs.com/article/201611/315561.htm1.1.1 命名規則
早期A(yíng)RM使用如圖1.1所示的命名規則來(lái)描述一個(gè)處理器。在“ARM”后的字母和數字表明了一個(gè)處理器的功能特性。隨著(zhù)更多特性的增加,字母和數字的組合可能會(huì )改變。注意:命名規則不包含體系結構(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——向量浮點(diǎn)單元
S——可綜合版本
圖1.1 早期A(yíng)RM命名規則
關(guān)于A(yíng)RM命名法則,還有一些附加的要點(diǎn):
? ARM7TDMI之后的所有ARM內核,即使“ARM”標志后沒(méi)有包含那些字符,也都包括了TDMI功能特性。
? 處理器系列是共享相同硬件特性的一組處理器具體實(shí)現。例如,ARM7TDMI、ARM740T和ARM720T都共享相同的系列特性,都屬于A(yíng)RM7系列。
? JTAG是由IEEE1149.1標準測試訪(fǎng)問(wèn)端口(Standard Test Access
Port)和邊界掃描結構來(lái)描述的。它是ARM用來(lái)發(fā)送和接收處理器內核與測試儀器之間調試信息的一系列協(xié)議。
? 嵌入式ICE宏單元(EmbeddedICE macrocell)是建立在處理器內部用來(lái)設置斷點(diǎn)和觀(guān)察點(diǎn)的調試硬件。
? 可綜合的——意味著(zhù)處理器內核是以源代碼形式提供的,這種源代碼形式又可以被編譯成一種易于EDA工具使用的形式。
隨著(zhù)近年來(lái)ARM架構的產(chǎn)品爆炸性地涌入市場(chǎng),以及對于維護架構一致性的高層次的要求,ARM重新組織了ARM架構的規范,定義了以ARM v7架構的Cortex系列。
1.1.2 ARM處理器系列
ARM公司設計了許多處理器,它們可以根據使用的不同內核劃分到各個(gè)系列中。系列劃分是基于A(yíng)RM7、ARM9、ARM10、ARM11和Cortex內核。后綴數字7、9、10和11表示不同的內核設計。數字的升序說(shuō)明性能和復雜度的提高。ARM8開(kāi)發(fā)出來(lái)以后很快就被取代了。
在每個(gè)系列中,存儲器管理、cache和TCM處理器擴展也有多種變化。ARM繼續在可用的產(chǎn)品系列和每個(gè)系列內部的不同變種兩方面做進(jìn)一步開(kāi)發(fā)。
表1.1總結了各種處理器的不同功能特性。值得注意的是,指令集架構(
ISA)是體現CPU核性能特點(diǎn)的重要因素,如采用v5TEJ架構的ARM926EJ-S與采用v4T架構的
ARM920T處理器,在相同的工作頻率下,前者的處理能力要高得多。
表1.1 ARM處理器不同功能特性
a: E擴展提供了增強的乘法指令和飽和運算指令(DSP)
1.1.2.1 ARM7系列
ARM7內核是馮?諾伊曼體系結構,數據和指令使用同一條總線(xiàn)。內核有一條3級流水線(xiàn),執行ARMv4指令集。
ARM7TDMI是ARM公司于1995年推出的新系列中的第一個(gè)處理器內核。是目前一個(gè)非常流行的內核,已被用在許多32位嵌入式處理器上。它提供了非常好的性能——功耗比。ARM7TDMI處理器內核已經(jīng)許可給許多世界頂級半導體公司,它是第一個(gè)包括Thumb指令集、快速乘法指令和嵌入式ICE調試技術(shù)的內核。
ARM7系列中一個(gè)重要的變化是ARM7TDMI-S。ARM7TDMI-S與標準ARM7TDMI有相同的操作特性,但它是可綜合的(見(jiàn)2.6.1小節)。
ARM720T是ARM7系列中最具靈活性的成員,因為它包含了一個(gè)MMU。MMU的存在意味著(zhù)ARM720T能夠處理Linux和Microsoft嵌入式操作系統(如WinCE)。這一處理器還包括了一個(gè)8KB的統一cache(指令/數據混合cache)。向量表可以通過(guò)設置一個(gè)協(xié)處理器15(CP15)寄存器來(lái)重定位到更高的地址。
另一個(gè)成員是ARM7EJ-S處理器,它也是可綜合的。ARM7EJ-S與其他ARM7處理器有很大不同,因為它有一條5級流水線(xiàn),并且執行ARMv5TEJ指令。這個(gè)版本是ARM7中唯一一個(gè)提供java加速和增強指令,而沒(méi)有任何存儲器保護的處理器。
1.1.2.2 ARM9系列
ARM9系列于1997年問(wèn)世。由于采用了5級指令流水線(xiàn),ARM9處理器能夠運行在比ARM7更高的時(shí)鐘頻率上,提高了處理器的整體性能。存儲器系統根據哈佛體系結構重新設計,區分了數據D和指令I(lǐng)總線(xiàn)。
ARM9系列的第一個(gè)處理器是ARM920T,它包含獨立的D+I
cache和一個(gè)MMU。這個(gè)處理器能夠被用在要求有虛擬存儲器(虛存)支持的操作系統上。ARM922T是ARM920T的變種,只有一半大小的D+I cache。
ARM940T包括一個(gè)更小的D+I cache和一個(gè)MPU。它是針對不要求運行平臺操作系統的應用而設計的。ARM920T和ARM940T都執行v4T架構指令。
ARM9系列的下一個(gè)處理器是基于A(yíng)RM9E-S
內核的。這個(gè)內核是ARM9內核帶有E擴展的一個(gè)可綜合版本。它有二個(gè)變種:ARM946E-S和ARM966E-S。兩者都執行v5TE架構指令。它們也支持可選的嵌入式跟蹤宏單元(ETM),它允許開(kāi)發(fā)者實(shí)時(shí)跟蹤處理器上指令和數據的執行。當調試對時(shí)間敏感(time-critical)的程序段時(shí),這種方法非常重要。
ARM946E-S包括TCM、cache和一個(gè)MPU。TCM和cache的大小可配置。該處理器是針對要求有確定的實(shí)時(shí)響應的嵌入式控制應用而設計的。而ARM966E有可配置的TCM,但沒(méi)有MPU和cache擴展。
ARM9產(chǎn)品線(xiàn)的最新內核是ARM926EJ-S可綜合的處理器內核,發(fā)布于2000年。它是針對小型便攜式j(luò )ava設備,諸如3G手機和個(gè)人數字助理(PDA)應用而設計的。ARM926EJ-S是第一個(gè)包含Jazelle技術(shù)(可加速java字節碼的執行)的ARM處理器內核。它還有一個(gè)MMU、可配置的TCM,以及具有零或非零等待存儲器的D+I
cache。
1.1.2.3 ARM10系列
ARM10發(fā)布于1999年,主要是針對高性能的設計。它把ARM9的流水線(xiàn)擴展到6級,也支持可選的向量浮點(diǎn)單元(VFP),它對ARM10的流水線(xiàn)加入了第7段。VFP明顯提高了浮點(diǎn)運算的性能,并與IEEE754.1985浮點(diǎn)標準兼容。
ARM1020E是第一個(gè)使用ARM10E內核的處理器。像ARM9E一樣,它包括了增強的E指令。它有獨立的32KB D+I
cache、可選向量浮點(diǎn)單元(VFP),以及MMU。ARM1020E還有一個(gè)雙64位總線(xiàn)接口以提高性能。
ARM1026EJ-S非常類(lèi)似于A(yíng)RM926EJ-S,但同時(shí)具有MPU和MMU。這一處理器具有ARM10的性能和ARM926EJ-S的靈活性。
1.1.2.4 ARM11系列
ARM1136J-S發(fā)布于2003年,是針對高性能和高能效應用而設計的。ARM1136J-S是第一個(gè)執行ARMv6架構指令的處理器。它集成了一條具有獨立的load-store和算術(shù)流水線(xiàn)的8級流水線(xiàn)。ARMv6指令包含了針對媒體處理的單指令流多數據流(SIMD)擴展,特殊的設計以提高視頻處理性能。
ARM1136JF-S就是為了進(jìn)行快速浮點(diǎn)運算,而在A(yíng)RM1136J-S增加了向量浮點(diǎn)單元。
1.1.2.5 ARM Cortex系列
ARM Cortex發(fā)布于2005年,為各種不同性能需求的應用提供了一整套完整的優(yōu)化解決方案,該系列的技術(shù)劃分完全針對不同的市場(chǎng)應用和性能需求。目前ARM
Cortex定義了三個(gè)系列:
Cortex-A系列:針對復雜OS和應用程序(如多媒體)的應用處理器。支持ARM、Thumb和Thumb-2指令集,強調高性能與合理的功耗,存儲器管理支持虛擬地址。
Cortex-R系列:針對實(shí)時(shí)系統的嵌入式處理器。支持ARM、Thumb和Thumb-2指令集,強調實(shí)時(shí)性,存儲器管理只支持物理地址。
Cortex-M系列:針對價(jià)格敏感應用領(lǐng)域的嵌入式處理器,只支持Thumb-2指令集,強調操作的確定性,以及性能、功耗和價(jià)格的平衡。
這些系列曾在A(yíng)RMv7發(fā)展過(guò)程中被正式介紹過(guò),A系列和R系列就已經(jīng)隱式地出現在早期的版本中了,以及虛擬存儲系統架構(VMSA)和保護存儲系統架構(PMSA)。
到目前為止,Cortex系列正式發(fā)布的版本為Cortex-A8、Cortex-R4和Cortex_M3,他們全部實(shí)現了Thumb-2指令集(或子集),可滿(mǎn)足不同的性能、價(jià)格市場(chǎng)需求。
ARM
Cortex-M3不支持ARM指令集,支持的指令集包括ARMv6的大部分16位Thumb指令和ARMv7的Thumb-2指令集。Thumb-2指令集是一個(gè)16/32位混合指令系統。Cortex-M3支持的16位、32位Thumb指令
要使用低成本的32位處理器,開(kāi)發(fā)人員面臨兩種選擇,基于Cortex-M3內核或者ARM7TDMI內核的處理器。如何做出選擇?選擇標準又是什么?本文主要介紹了ARM Cortex-M3內核微控制器區別于A(yíng)RM7的一些特點(diǎn),幫助您快速選擇。
1.ARM實(shí)現方法
ARM Cortex-M3是一種基于A(yíng)RM7v架構的最新ARM嵌入式內核,它采用哈佛結構,使用分離的指令和數據總線(xiàn)(馮諾伊曼結構下,數據和指令共用一條總線(xiàn))。從本質(zhì)上來(lái)說(shuō),哈佛結構在物理上更為復雜,但是處理速度明顯加快。根據摩爾定理,復雜性并不是一件非常重要的事,而吞吐量的增加卻極具價(jià)值。
ARM公司對Cortex-M3的定位是:向專(zhuān)業(yè)嵌入式市場(chǎng)提供低成本、低功耗的芯片。在成本和功耗方面,Cortex-M3具有相當好的性能,ARM公司認為它特別適用于汽車(chē)和無(wú)線(xiàn)通信領(lǐng)域。和所有的ARM內核一樣,ARM公司將內該設計授權給各個(gè)制造商來(lái)開(kāi)發(fā)具體的芯片。迄今為止,已經(jīng)有多家芯片制造商開(kāi)始生產(chǎn)基于Cortex-M3內核的微控制器。
ARM7TDMI(包括ARM7TDMIS)系列的ARM內核也是面向同一類(lèi)市場(chǎng)的。這類(lèi)內核已經(jīng)存在了十多年之久,并推動(dòng)了ARM成為處理器內核領(lǐng)域的主導者。眾多的制造商出售基于A(yíng)RM7系列的處理器以及其他配套的系統軟件、開(kāi)發(fā)和調試工具。在許多方面,ARM7TDMI都可以稱(chēng)得上是嵌入式領(lǐng)域的實(shí)干家。
2.兩者差異
除了使用哈佛結構,Cortex-M3還具有其它顯著(zhù)的優(yōu)點(diǎn):具有更小的基礎內核,價(jià)格更低,速度更快。與內核集成在一起的是一些系統外設,如中斷控制器、總線(xiàn)矩陣、調試功能模塊,而這些外設通常都是由芯片制造商增加的。Cortex-M3還集成了睡眠模式和可選的完整的八區域存儲器保護單元。它采用THUMB-2指令集,最大限度降低了匯編器使用率。
3.指令集
ARM7可以使用ARM和Thumb兩種指令集,而Cortex-M3只支持最新的Thumb-2指令集。這樣設計的優(yōu)勢在于:
●免去Thumb和ARM代碼的互相切換,對于早期的處理器來(lái)說(shuō),這種狀態(tài)切換會(huì )降低性能。
●Thumb-2指令集的設計是專(zhuān)門(mén)面向C語(yǔ)言的,且包括If/Then結構(預測接下來(lái)的四條語(yǔ)句的條件執行)、硬件除法以及本地位域操作。
●Thumb-2指令集允許用戶(hù)在C代碼層面維護和修改應用程序,C代碼部分非常易于重用。
●Thumb-2指令集也包含了調用匯編代碼的功能:Luminary公司認為沒(méi)有必要使用任何匯編語(yǔ)言。
●綜合以上這些優(yōu)勢,新產(chǎn)品的開(kāi)發(fā)將更易于實(shí)現,上市時(shí)間也大為縮短。
4.中斷
Cortex-M3的另一個(gè)創(chuàng )新在于嵌套向量中斷控制器NVIC(Nested Vector Interrupt Controller)。相對于A(yíng)RM7使用的外部中斷控制器,Cortex-M3內核中集成了中斷控制器,芯片制造廠(chǎng)商可以對其進(jìn)行配置,提供基本的32個(gè)物理中斷,具有8層優(yōu)先級,最高可達到240個(gè)物理中斷和256個(gè)中斷優(yōu)先級。此類(lèi)設計是確定的且具有低延遲性,特別適用于汽車(chē)應用。
NVIC使用的是基于堆棧的異常模型。在處理中斷時(shí),將程序計數器,程序狀態(tài)寄存器,鏈接寄存器和通用寄存器壓入堆棧,中斷處理完成后,在恢復這些寄存器。堆棧處理是由硬件完成的,無(wú)需用匯編語(yǔ)言創(chuàng )建中斷服務(wù)程序的堆棧操作。
中斷嵌套是可以是實(shí)現的。中斷可以改為使用比之前服務(wù)程序更高的優(yōu)先級,而且可以在運行時(shí)改變優(yōu)先級狀態(tài)。使用末尾連鎖(tail-chaining)連續中斷技術(shù)只需消耗三個(gè)時(shí)鐘周期,相比于32個(gè)時(shí)鐘周期的連續壓、出堆棧,大大降低了延遲,提高了性能。
如果在更高優(yōu)先級的中斷到來(lái)之前,NVIC已經(jīng)壓堆棧了,那就只需要獲取一個(gè)新的向量地址,就可以為更高優(yōu)先級的中斷服務(wù)了。同樣的,NVIC不會(huì )用出堆棧的操作來(lái)服務(wù)新的中斷。這種做法是完全確定的且具有低延遲性。
5.睡眠
Cortex-M3的電源管理方案通過(guò)NVIC支持Sleep Now,Sleep on Exit,(退出最低優(yōu)先級的ISR)和SLEEPDEEP modes這三種睡眠模式。
為了產(chǎn)生定期的中斷時(shí)間間隔,NVIC還集成了系統節拍計時(shí)器,這個(gè)計時(shí)器也可以作為RTOS和調度任務(wù)的心跳。這種做法與先前的ARM架構的不同之處就在于不需要外部時(shí)鐘。
6.存儲器保護單元
存儲器保護單元是一個(gè)可選組建。選用了這個(gè)選項,內存區域就可以與應用程序特定進(jìn)程按照其他進(jìn)程所定義的規則聯(lián)系在一起。例如,一些內存可以完全被其他進(jìn)程阻止,而另外一部分內存能對某些進(jìn)程表現為只讀。還可以禁止進(jìn)程進(jìn)入存儲器區域??煽啃?,特別是實(shí)時(shí)性因此得到重大改進(jìn)。
7.調試
對Cortex-M3處理器系統進(jìn)行調試和追蹤是通過(guò)調試訪(fǎng)問(wèn)端口(Debug Access Port)來(lái)實(shí)現的。調試訪(fǎng)問(wèn)端口可以是一個(gè)2針的串行調試端口(Serial Wire Debug Port)或者串行JTAG調試端口(Serial Wire JTAG Debug Port)。通過(guò)Flash片、斷點(diǎn)單元、數據觀(guān)察點(diǎn)、跟蹤單元,以及可選的嵌入式跟蹤宏單元(Embedded Trace Macrocell)和指令跟蹤宏單元(InstrumentaTIon Trace Macrocell)等一系列功能相結合,在內核部分就可以采用多種類(lèi)型的調試方法及監控函數。例如,可以設置斷點(diǎn)、觀(guān)察點(diǎn)、定義缺省條件或執行調試請求、監控停止操作或繼續操作。所有的這些功能在A(yíng)RM架構的產(chǎn)品中已經(jīng)實(shí)現,只是Cortex-M3將這些功能整合起來(lái),方便開(kāi)發(fā)人員使用。
8.應用范圍
雖然ARM7內核并沒(méi)有像Cortex系列那樣集成很多外設,但是大量的基于A(yíng)RM7的器件,從通用MCU,到面向應用的MCU、SOC甚至是Actel公司基于A(yíng)RM7內核的FPGA,都擁有更為眾多的外圍設備。大約有150種MCU是基于A(yíng)RM7內核的(根據不同的統計方法,這個(gè)數字可能會(huì )更高)。
你會(huì )發(fā)現ARM7都可以實(shí)現幾乎所有的嵌入式應用,或采用定制的方式來(lái)滿(mǎn)足需求?;跇藴蕛群?,芯片廠(chǎng)商可以加入不同類(lèi)型、大小的存儲器和其他外圍設備,比如串行接口、總線(xiàn)控制器、存儲器控制器和圖形單元,并針對工業(yè)、汽車(chē)或者其他要求苛刻的領(lǐng)域,使用不同的芯片封裝,提供不同溫度范圍的芯片版本。芯片廠(chǎng)商也可能綁定特定的軟件,比如TCP/IP協(xié)議?;蛎嫦蛱囟☉玫能浖?。
例如,STMicroelectronics公司的STR7產(chǎn)品線(xiàn)有三個(gè)主要系列共45個(gè)成員,具有不同的封裝和存儲器。每一個(gè)系列都針對特定的應用領(lǐng)域,具有不同外設集合。比如STR730家族是專(zhuān)為工業(yè)和汽車(chē)應用設計的,因此具有可擴展的溫度范圍,包括多個(gè)I/O口和3個(gè)CAN總線(xiàn)接口。STR710則是面向于消費市場(chǎng)以及高端的工業(yè)應用,它具有多個(gè)通信接口,比如USB、CAN、ISO7816以及4個(gè)UART,還有大容量的存儲器和一個(gè)外部存儲器接口。
芯片廠(chǎng)商也可以選擇利于開(kāi)發(fā)人員開(kāi)發(fā)產(chǎn)品的措施,比如采用ARM的嵌入式跟蹤宏單元ETM(Embedded Trace Macrocell),并提供開(kāi)發(fā)和調試工具。
Luminary、STMicroelectronics這兩家公司已經(jīng)有基于Cortex-M3的芯片,其他公司如NXP、Atmel也宣布生產(chǎn)該類(lèi)產(chǎn)品。
9.配套工具
ARM7應用已經(jīng)非常普及,它已經(jīng)有非常多第三方的開(kāi)發(fā)和調試工具支持。在A(yíng)RM的網(wǎng)站上有超過(guò)130家工具公司名稱(chēng)列表。
大多數廠(chǎng)商提供了基本的開(kāi)發(fā)板,并提供下載程序的接口、調試工具以及外部設備的驅動(dòng),包括LED燈的顯示狀態(tài)或者屏幕上的單行顯示。通常,開(kāi)發(fā)套件包括編譯器、一些調試軟件以及開(kāi)發(fā)板。更為高級的套件包括第三方的集成開(kāi)發(fā)環(huán)境(IDE),IDE中包含編譯器、鏈接器、調試器、編輯器和其他工具,也可能包括仿真硬件,比如說(shuō)JTAG仿真器。內電路仿真器(ICE)是最早的也是最有用的調試工具形式之一,很多廠(chǎng)商都在A(yíng)RM7上提供了這一接口。
軟件開(kāi)發(fā)工具范圍很廣:從建模到可視化設計,到編譯器?,F在很多的產(chǎn)品也用到實(shí)時(shí)操作系統(RTOS)和中間件,以加速開(kāi)發(fā)進(jìn)程、降低開(kāi)發(fā)難度。另外,還有一個(gè)非常重要的因素,很多的開(kāi)發(fā)人員對ARM7的開(kāi)發(fā)經(jīng)驗非常豐富。
雖然現在已經(jīng)有新興的Cortex-M3工具,但顯然還是有一定的差距。不過(guò),Cortex-M3的集成調試性能使調試變得簡(jiǎn)單且有效,且無(wú)需用到內電路仿真器ICE。
10.決策
那么,你應該如何做出何種選擇呢?如果成本是最主要考慮因素,您應該選擇Cortex-M3;如果在低成本的情況下尋求更好的性能和改進(jìn)功耗,您最好考慮選用Cortex-M3;特別是如果你的應用是汽車(chē)和無(wú)線(xiàn)領(lǐng)域,最好也采用Cortex-M3,這正是Coretex-M3的主要定位市場(chǎng)。
由于Cortex-M3內核中的多種集成元素以及采用Thumb-2指令集,其開(kāi)發(fā)和調試比ARM7TDMI要簡(jiǎn)單快捷。然而,由于重定義ARM7TDMI的應用不是一件困難的事,特別是在使用了RTOS的情況下。保守者可能會(huì )沿用ARM7TDMI內核的芯片,并避免使用那些會(huì )使重定義變得復雜的功能。
IAR Systems公司是最早做C編譯器的廠(chǎng)商,提供一系列ARM開(kāi)發(fā)工具,包括IAR visualSTATE 建模工具、IAR Embedded Workbench for ARM集成開(kāi)發(fā)環(huán)境、IAR PowerPac實(shí)時(shí)操作系統和中間件、J-Link硬件仿真工具以及開(kāi)發(fā)套件。不管用戶(hù)的選擇是ARM7還是Cortex-M3,IAR都會(huì )讓開(kāi)發(fā)變得簡(jiǎn)單而有趣。
評論