概要
ARM Cortex-M處理器家族現(xiàn)在有8款處理器成員,。在本文中,,我們會(huì)比較Cortex-M系列處理器之間的產(chǎn)品特性,,重點(diǎn)講述如何根據(jù)產(chǎn)品應(yīng)用選擇正確的Cortex-M處理器。本文中會(huì)詳細(xì)的對(duì)照Cortex-M 系列處理器的指令集和高級(jí)中斷處理能力,,以及 SoC系統(tǒng)級(jí)特性,,調(diào)試和追蹤功能和性能的比較。
1 簡(jiǎn)介
今天,, ARM Cortex-M 處理器家族有8款處理器成員,。除此之外,ARM的產(chǎn)品系列還有很多其他的處理器成員,。對(duì)很多初學(xué)者,,甚至某些芯片設(shè)計(jì)經(jīng)驗(yàn)豐富但是不熟悉ARM系列處理器的設(shè)計(jì)者來(lái)說(shuō),也是很容易混淆這些產(chǎn)品的,。不同的ARM 處理器有不同的指令集,,系統(tǒng)功能和性能。本文會(huì)深入展現(xiàn)Cortex-M系列處理器之間的關(guān)鍵區(qū)別,,以及它們和ARM其他系列處理器的不同,。
1.1 ARM處理器家族
多年來(lái), ARM已經(jīng)研發(fā)了相當(dāng)多的不同的處理器產(chǎn)品,。 如下圖中(圖1): ARM 處理器產(chǎn)品分為經(jīng)典ARM處理器系列和最新的Cortex處理器系列,。并且根據(jù)應(yīng)用范圍的不同,ARM處理器可以分類成3個(gè)系列,。
Application Processors(應(yīng)用處理器)–面向移動(dòng)計(jì)算,,智能手機(jī),服務(wù)器等市場(chǎng)的的高端處理器,。這類處理器運(yùn)行在很高的時(shí)鐘頻率(超過(guò)1GHz),,支持像Linux,Android,,MS Windows和移動(dòng)操作系統(tǒng)等完整操作系統(tǒng)需要的內(nèi)存管理單元(MMU),。 如果規(guī)劃開(kāi)發(fā)的產(chǎn)品需要運(yùn)行上述其中的一個(gè)操作系統(tǒng),你需要選擇ARM 應(yīng)用處理器.
Real-time Processors (實(shí)時(shí)處理器)–面向?qū)崟r(shí)應(yīng)用的高性能處理器系列,,例如硬盤控制器,,汽車傳動(dòng)系統(tǒng)和無(wú)線通訊的基帶控制。多數(shù)實(shí)時(shí)處理器不支持MMU,,不過(guò)通常具有MPU,、Cache和其他針對(duì)工業(yè)應(yīng)用設(shè)計(jì)的存儲(chǔ)器功能。實(shí)時(shí)處理器運(yùn)行在比較高的時(shí)鐘頻率(例如200MHz 到 >1GHz ),,響應(yīng)延遲非常低,。雖然實(shí)時(shí)處理器不能運(yùn)行完整版本的Linux和Windows操作系統(tǒng), 但是支持大量的實(shí)時(shí)操作系統(tǒng)(RTOS)。
Microcontroller Processors(微控制器處理器)–微控制器處理器通常設(shè)計(jì)成面積很小和能效比很高,。通常這些處理器的流水線很短,,最高時(shí)鐘頻率很低(雖然市場(chǎng)上有此類的處理器可以運(yùn)行在200Mhz之上)。 并且,,新的Cortex-M處理器家族設(shè)計(jì)的非常容易使用,。因此,ARM 微控制器處理器在單片機(jī)和深度嵌入式系統(tǒng)市場(chǎng)非常成功和受歡迎,。
表1總結(jié)了三個(gè)處理器系列的主要特征,。
表 1: 處理器特性總結(jié)
1.2 Cortex-M 處理器家族
Cortex-M處理器家族更多的集中在低性能端,但是這些處理器相比于許多微控制器使用的傳統(tǒng)處理器性能仍然很強(qiáng)大,。例如,,Cortex-M4和Cortex-M7處理器應(yīng)用在許多高性能的微控制器產(chǎn)品中,最大的時(shí)鐘頻率可以達(dá)到400Mhz,。
當(dāng)然,,性能不是選擇處理器的唯一指標(biāo)。在許多應(yīng)用中,,低功耗和成本是關(guān)鍵的選擇指標(biāo),。因此,Cortex-M處理器家族包含各種產(chǎn)品來(lái)滿足不同的需求:
不同于老的經(jīng)典ARM處理器(例如,,ARM7TDMI, ARM9),, Cortex-M處理器有一個(gè)非常不同的架構(gòu)。例如:
- 僅支持ARM Thumb?指令,,已擴(kuò)展到同時(shí)支持16位和32位指令Thumb-2版本
- 內(nèi)置的嵌套向量中斷控制負(fù)責(zé)中斷處理,,自動(dòng)處理中斷優(yōu)先級(jí),中斷屏蔽,,中斷嵌套和系統(tǒng)異常處理,。
- 中斷處理函數(shù)可以使用標(biāo)準(zhǔn)的C語(yǔ)言編程,嵌套中斷處理機(jī)制避免了使用軟件判斷哪一個(gè)中斷需要響應(yīng)處理,。同時(shí),,中斷響應(yīng)速度是確定性的,低延遲的
- 向量表從跳轉(zhuǎn)指令變?yōu)橹袛嗪拖到y(tǒng)異常處理函數(shù)的起始地址,。
- 寄存器組和某些編程模式也做了改變,。
這些變化意味著許多為經(jīng)典ARM處理器編寫的匯編代碼需要修改,老的項(xiàng)目需要修改和重新編譯才能遷移到Cortex-M的產(chǎn)品上,。軟件移植具體的細(xì)節(jié)記錄在ARM文檔:
ARM Cortex-M3 Processor Software Development for ARM7TDMI Processor Programmers
http://www.arm.com/files/pdf/Cortex-M3_programming_for_ARM7_developers.pdf
1.3Cortex-M系列處理器的共同特性
Cortex-M0, M0+, M3, M4 and M7之間有很多的相似之處,,例如:
-基本編程模型 (章節(jié) 3.1)
-嵌套向量中斷控制器(NVIC)的中斷響應(yīng)管理
-架構(gòu)設(shè)計(jì)的休眠模式:睡眠模式和深度睡眠模式 (章節(jié) 4.1)
-操作系統(tǒng)支持特性 (章節(jié) 3.3)
-調(diào)試功能 (章節(jié) 6)
-易用性
例如,嵌套向量中斷控制器是內(nèi)置的中斷控制器
圖 2: Cortex-M處理器的嵌套向量中斷控制器
支持許多外圍設(shè)備的中斷輸入,,一個(gè)不可屏蔽的中斷請(qǐng)求,,一個(gè)來(lái)自內(nèi)置時(shí)鐘(SysTick)的中斷請(qǐng)求(見(jiàn)章節(jié) 3.3)和一定數(shù)量的系統(tǒng)異常請(qǐng)求,。NVIC處理這些中斷和異常的優(yōu)先級(jí)和屏蔽管理。
NVIC以及異常處理模型的更多的內(nèi)容在章節(jié)3.2描述,。其他Cortex-M處理器間的異同點(diǎn)會(huì)在本文的其余部分講解,。