新唐科技 盧泰均
ARM公司在2009年初發(fā)布了其嵌入式處理器系列中最小型、最低功耗的Cortex-M0處理器。Cortex-M0低功耗、高性能與極精簡程序代碼的特性,能應用于各種微控制器(MCU)中,并可讓研發(fā)業(yè)者以8位的價位創(chuàng)造32位的效能,并進一步將傳統(tǒng)的8位和16位的處理器推進至更高效能、更低功耗的32位處理器。
ARM一改其傳統(tǒng)的命名法則,以Cortex來為其全新的微處理器系列命名。在這個系列中,核心采用全新的ARMv7架構,引進了許多革命性的突破與創(chuàng)新,并首次由單一款式延伸成3種款式,并各自定義其相對應的架構,分別為 Cortex-A(ARMv7-A)、Cortex-R(ARMv7-R)、Cortex-M(ARMv7-M)。Cortex-A系列適于高性能的開放應用平臺,Cortex-R系列適于實時信號處理控制系統(tǒng),而Cortex-M系列則瞄準了對成本和功耗敏感卻又有高性能需求的嵌入式應用領域,成為在微控制器、工業(yè)控制系統(tǒng)、汽車控制系統(tǒng)及無線網(wǎng)絡等各種手持應用系統(tǒng)中的最佳解決方案。
Cortex-M0是Cortex-M家族中的微處理器核心,其擁有最低閘數(shù)、最低功耗以及強悍性能的優(yōu)異表現(xiàn)。Cortex-M0為32位、3級流水線 RISC處理器,其核心與ARM7同為馮·諾依曼(Von Neumann)架構,采指令和數(shù)據(jù)共享同一總線的設計。作為新一代的微處理器,Cortex-M0在整體的設計架構上進行了許多改革與創(chuàng)新,如折中效率和程序代碼密度的全新指令集架構(ISA)、事先定義的系統(tǒng)存儲器地址映像(system address map)、改善效率并增強確定性的嵌套向量中斷系統(tǒng)(NVIC)與不可屏蔽中斷(NMI)、全新的硬件除錯單元等等,都帶給了使用者全新的體驗和更便利、更有效率的操作。
Cortex-M0其核心架構為ARMv6-M,為Cortex-M 家族架構ARMv7-M的一個子集,去除了許多復雜的支持,所以大幅降低基本核心之門數(shù)至12K,從而擁有極低之動態(tài)功耗85 μ W/Hz。而在低成本、低功耗的前提下,由于采用了全新的指令集架構Thumb-2指令集,Cortex-M0并沒有犧牲掉應有的效能,其運算能力可以達到0.9 DM IPS/M Hz,而與其他的16位與8位處理器相比,由于Cortex-M0的運算性能大幅提高,所以在同樣任務的執(zhí)行上Cortex-M0只需較低的運行速度,而大幅降低了整體的動態(tài)功耗。
在傳統(tǒng)的ARM7TDMI處理器系統(tǒng)中,系統(tǒng)重置后都是從ARM狀態(tài)/指令集開始運行,處理器核心可以根據(jù)特定的應用需求切換到Thumb狀態(tài)/指令集執(zhí)行。ARM指令集為一32位長度之指令碼,由于指令碼長度較長,所以指令集都可以是有條件的執(zhí)行,以獲得較出色的效能。Thumb指令集為一16位長度之指令碼,為ARM指令集之子集,程序代碼密度提高了一倍,但可能需要更多的指令去執(zhí)行相同的任務,所以造成了性能的下降。程序設計者可以根據(jù)不同的需求在兩種狀態(tài)下切換,以在程序代碼效能和密度中取得平衡,但在狀態(tài)切換中會有額外的程序執(zhí)行,導致性能進一步的下降。另外ARM和 Thumb指令集需要以不同方式編譯,而增加的軟件開發(fā)管理上的復雜度。Thumb-2指令集則是一全新的技術,為一16位和32位指令碼的結合,兩種長度的指令碼可共存于同一模式。所以全新的Thumb-2技術結合了16位指令集高程序代碼密度與32位指令集高效能的各自優(yōu)點,并免去了狀態(tài)切換之復雜度,而提升了整體的效能。
Cortex-M0同時支持了Thumb和部分的Thumb-2指令集,核心不論是在正常程序執(zhí)行還是處理中斷異常模式均保持在單一Thumb狀態(tài)下執(zhí)行,免去了不必要的狀態(tài)切換,大幅地節(jié)省了執(zhí)行時間和指令碼大小。
Cortex-M0核心采用一個系統(tǒng)存儲器地址映像,為高達4 GB的可尋址存儲空間提供簡單和固定的映像機制。這個存儲器映像機制為程序代碼、SRAM、外部內(nèi)存和外圍設備提供了預先定義的專用地址。在傳統(tǒng)的ARM微處理器架構中,并沒有預先定義好存儲器映像地址,而是由各家芯片制造商自行定義和設計,因此即使采用了相同的核心處理器,卻有完全不同的存儲器映像地址,給相互間程序代碼移植帶來了很大困難。Cortex-M0則是預先定義好了完整的存儲器地址映像表,詳細載明了每個區(qū)間地址內(nèi)存儲器的作用和特性,但也預留了某些區(qū)域給各家廠商自行設計。這種預先定義的映像關系,使得各家廠商可以對存取速度從事高度的優(yōu)化,而且對于單芯片上的系統(tǒng)設計而言更易整合。
嵌套式向量中斷系統(tǒng)(NVIC)是Cortex-M0另一個令人注目的創(chuàng)新設計,它可以依據(jù)使用者不同的需求進行高度配置。Cortex-M0中的NVIC支持16個系統(tǒng)異常(exception,部分為系統(tǒng)保留)與最多32個外部中斷(interrupt,外部中斷支持數(shù)量由芯片設計商自行配置)供芯片設計商使用,搭配4級優(yōu)先權的設置并借助NVIC與Cortex-M0核心緊密的結合為整個系統(tǒng)提供豐富且實時的中斷處理能力。
Cortex-M0采用一個事先定義的向量表,屬于程序代碼的一部分,向量表定義了堆棧的起始地址和各個異常/中斷的入口地址。當某個中斷被接受之后,Cortex-M0通過內(nèi)部總線從向量表中獲取其地址來執(zhí)行。硬件支持的向量化中斷功能大幅地縮短了進入中斷的延遲,提高了程序效能,因為程序不再需要判斷中斷來源和進行必要的寄存器堆棧,完全由硬件自動完成。當異常發(fā)生時,程序狀態(tài)寄存器(PSR)、程序計數(shù)器(PC)、鏈接寄存器(LR)和 R0~R3、R12等通用寄存器將自動被存進堆棧;同時,處理器從中斷向量表中讀取出相對應的中斷服務程序地址,并獲取中斷服務程序的第一條指令。一旦堆疊存儲和取指完成后,中斷服務或異常處理程序便開始執(zhí)行,展現(xiàn)了極高且確切的效能。隨后在中斷服務程序結束前,相關寄存器將自動從堆棧中取出,原本中斷了的正常程序也因此恢復執(zhí)行,完全不需要軟件的介入。由于可以在硬件中處理堆棧操作,Cortex-M0避免了傳統(tǒng)的C語言中斷服務程序中為了完成堆棧處理所要編寫的匯編程序,這使應用程序的開發(fā)變得更加簡單與便利。另外,值得一提的是,Cortex-M0還支持了所謂的Tail-Chaining和 Late-Arrival先進技術,大幅改善了傳統(tǒng)ARM微處理器在相異的中斷請求交互發(fā)生時的處理效率,縮短了中斷延遲,進一步提升了Cortex-M0在實時系統(tǒng)的處理能力。
基于ARM7核心的微處理器在過去幾十年襲卷了32位MCU市場,在此將Cortex-M0和這位師出同門的老大哥加以比較,使大家清楚它們的差異。
表1
微控制器(MCU)廠商新唐科技(Nuvoton Technology Inc.)前身為華邦電子邏輯事業(yè)群,近期推出以ARM Cortex-M0為核心的 32位微控制器——NuMicro家族。該家族采用ARM公司最新發(fā)布的最小型、最低功耗、低門數(shù)、精簡程序代碼的Cortex-M0處理器,內(nèi)建各種模擬與混合信號組件以及多種高速通信能力裝置,執(zhí)行效能約為傳統(tǒng)8051的72倍?;贙eil開發(fā)環(huán)境下,客戶很容易從8051升級至NuMicro來創(chuàng)造產(chǎn)品價值與競爭力。
NuMicro家族的成員包括了四大系列,NUC100系列、NUC120系列、NUC130系列、NUC140系列。其核心Cortex-M0的執(zhí)行頻率為50 M Hz,具有先進的嵌套向量中斷控制(NVIC)、喚醒中斷控制(WIC)、單周期32位乘法器與Serial Wire硬件除錯單元支持等優(yōu)異特性,并擁有Sleep與Power-Down不同的節(jié)能模式;并且配置了一個遞減計數(shù)24位SysTick Timer,它可定時產(chǎn)生中斷,提供理想的計時功能來驅(qū)動實時操作系統(tǒng)或其他預定的任務。此家族配備了多達128 KB的閃存和 16 KB的SRAM,外圍設備提供了高達12位、800 ksps的8通道ADC、多組 UART、SPI、I2C 與 USB2.0等高速總線等接口。其他外設則包括至多80個GPIO腳、4組通用計數(shù)器/定時器、RTC、看門狗定時器與PWM、CAN總線控制器豐富的外圍裝置可供客戶依需求搭配使用,并提供多種封裝樣式供選擇。
Cortex-M0核心的邏輯門數(shù)很少,非常適合低成本、低功耗要求的應用。由于支持全新的Thumb-2指令集,免除了狀態(tài)間的切換,增強了整體效能,提升了程序代碼密度,簡化了軟件的開發(fā)與維護,縮短了產(chǎn)品的開發(fā)時間。Cortex-M0內(nèi)建除錯系統(tǒng),在支持傳統(tǒng)的JTAG基礎上,開發(fā)了更新更好的Serial Wire除錯接口,并配置了多達4個斷點和2個觀察點。Cortex-M0已獲得ARM微控制器開發(fā)套Keil RealView MDK的支持,結合了ARM Real-View編譯工具以及強大完善的Keil uVision IDE與Debugger工具。Cortex-M0擁有許多實時操作系統(tǒng)與第三方工具的支持,包括IAR Systems、Mentor Graphics等。該處理器并向上兼容于其家族系列中的產(chǎn)品開發(fā)工具以及二進制程序代碼,保證其程序代碼未來的移植和發(fā)展性。相信在不久的未來,Cortex-M0將在整個微控制器市場和嵌入式應用系統(tǒng)中大放光彩。