Cortex-M3

32位的處理器內核

Cortex-M3是一個32位的核,在傳統的單片機領域中,有一些不同於通用32位CPU應用的要求。譚軍舉例說,在工控領域,用戶要求具有更快的中斷速度,Cortex-M3採用了Tail-Chaining中斷技術,完全基於硬體進行中斷處理,最多可減少12個時鐘周期數,在實際應用中可減少70%中斷。

概述


Cortex-M3是一個32位處理器內核。內部的數據路徑是32位的,寄存器是32位的,存儲器介面也是32位的。CM3採用了哈佛結構,擁有獨立的指令匯流排和數據匯流排,可以讓取指與數據訪問并行不悖。這樣一來數據訪問不再佔用指令匯流排,從而提升了性能。為實現這個特性,CM3內部含有好幾條匯流排介面,每條都為自己的應用場合優化過,並且它們可以并行工作。但是另一方面,指令匯流排和數據匯流排共享同一個存儲器空間(一個統一的存儲器系統)。換句話說,不是因為有兩條匯流排,可定址空間就變成8GB了。
比較複雜的應用可能需要更多的存儲系統功能,為此CM3提供一個可選的MPU,而且在需要的情況下也可以使用外部的cache。另外在CM3中,Both小端模式和大端模式都是支持的。
CM3內部還附贈了好多調試組件,用於在硬體水平上支持調試操作,如指令斷點,數據觀察點等。另外,為支持更高級的調試,還有其它可選組件,包括指令跟蹤和多種類型的調試介面。

內核架構


ARMCortex-M3採用哈佛結構,並選擇了適合於微控制器應用的三級流水線,但增加了分支預測功能。
現代處理器大多採用指令預取和流水線技術,以提高處理器的指令執行速度。流水線處理器在正常執行指令時,如果碰到分支(跳轉)指令,由於指令執行的順序可能會發生變化,指令預取隊列和流水線中的部分指令就可能作廢,而需要從新的地址重新取指、執行,這樣就會使流水線“斷流”,處理器性能因此而受到影響。特別是現代C語言程序,經編譯器優化生成的目標代碼中,分支指令所佔的比例可達10-20%,對流水線處理器的影響會的更大。為此,現代高性能流水線處理器中一般都加入了分支預測部件,就是在處理器從存儲器預取指令時,當遇到分支(跳轉)指令時,能自動預測跳轉是否會發生,再從預測的方向進行取指,從而提供給流水線連續的指令流,流水線就可以不斷地執行有效指令,保證了其性能的發揮。
ARMCortex-M3內核的預取部件具有分支預測功能,可以預取分支目標地址的指令,使分支延遲減少到一個時鐘周期。
針對業界對ARM處理器中斷響應的問題,Cortex-M3首次在內核上集成了嵌套向量中斷控制器(NVIC)。Cortex-M3的中斷延遲只有12個時鐘周期(ARM7需要24-42個周期);Cortex-M3還使用尾鏈技術,使得背靠背(back-to-back)中斷的響應只需要6個時鐘周期(ARM7需要大於30個周期)。Cortex-M3採用了基於棧的異常模式,使得晶元初始化的封裝更為簡單。
Cortex-M3加入了類似於8位處理器的內核低功耗模式,支持3種功耗管理模式:通過一條指令立即睡眠;異常/中斷退出時睡眠;深度睡眠。使整個晶元的功耗控制更為有效。

特點


高性能
 許多指令都是單周期的——包括乘法相關指令。並且從整體性能上,Cortex-M3比得過絕大多數其它的架構。
 指令匯流排和數據匯流排被分開,取值和訪內可以并行不悖
 Thumb-2的到來告別了狀態切換的舊世代,再也不需要花時間來切換於32位ARM狀態和16位Thumb狀態之間了。這簡化了軟體開發和代碼維護,使產品面市更快。
 Thumb-2指令集為編程帶來了更多的靈活性。許多數據操作現在能用更短的代碼搞定,這意味著Cortex-M3的代碼密度更高,也就對存儲器的需求更少。
 取指都按32位處理。同一周期最多可以取出兩條指令,留下了更多的帶寬給數據傳輸。
 Cortex-M3的設計允許單片機高頻運行(現代半導體製造技術能保證100MHz以上的速度)。即使在相同的速度下運行,CM3的每指令周期數(CPI)也更低,於是同樣的MHz下可以做更多的工作;另一方面,也使同一個應用在CM3上需要更低的主頻
2.11.2 先進的中斷處理功能
 內建的嵌套向量中斷控制器支持多達240條外部中斷輸入。向量化的中斷功能劇烈地縮短了中斷延遲,因為不再需要軟體去判斷中斷源。中斷的嵌套也是在硬體水平上實現的,不需要軟體代碼來實現。
 Cortex-M3在進入異常服務常式時,自動壓棧了R0-R3, R12, LR, PSR和PC,並且在返回時自動彈出它們,這多清爽!既加速了中斷的響應,也再不需要彙編語言代碼了(第8章有詳述)。
 NVIC支持對每一路中斷設置不同的優先順序,使得中斷管理極富彈性。最粗線條的實現也至少要支持8級優先順序,而且還能動態地被修改。
 優化中斷響應還有兩招,它們分別是“咬尾中斷機制”和“晚到中斷機制”。
 有些需要較多周期才能執行完的指令,是可以被中斷-繼續的——就好比它們是一串指令一樣。這些指令包括載入多個寄存器(LDM),存儲多個寄存器(STM),多個寄存器參與的PUSH,以及多個寄存器參與的POP。
 除非系統被徹底地鎖定,NMI(不可屏蔽中斷)會在收到請求的第一時間予以響應。對於很多安全-關鍵(safety-critical)的應用,NMI都是必不不可少的(如化學反應即將失控時的緊急停機)。
低功耗
 Cortex-M3需要的邏輯門數少,所以先天就適合低功耗要求的應用(功率低於0.19mW/MHz)在內核水平上支持節能模式(SLEEPING和SLEEPDEEP位)。通過使用“等待中斷指令(WFI)”和“等待事件指令(WFE)”,內核可以進入睡眠模式,並且以不同的方式喚醒。另外,模塊的時鐘是儘可能地分開供應的,所以在睡眠時可以把CM3的大多數“官能團”給停掉。
 CM3的設計是全靜態的、同步的、可綜合的。任何低功耗的或是標準的半導體工藝均可放心飲用。
系統特性
 系統支持“位定址帶”操作(8051位定址機制的“威力大幅加強版”),位元組不變的大端模式,並且支持非對齊的數據訪問。
 擁有先進的fault處理機制,支持多種類型的異常和faults,使故障診斷更容易。
 通過引入banked堆棧指針機制,把系統程序使用的堆棧和用戶程序使用的堆棧劃清界線。如果再配上可選的MPU,處理器就能徹底滿足對軟體健壯性和可靠性有嚴格要求的應用。
調試支持
 在支持傳統的JTAG基礎上,還支持更新更好的串列線調試介面。
 基於CoreSight調試解決方案,使得處理器哪怕是在運行時,也能訪問處理器狀態和存儲器內容。
 內建了對多達6個斷點和4個數據觀察點的支持。
 可以選配一個ETM,用於指令跟蹤。數據的跟蹤可以使用DWT
 在調試方面還加入了以下的新特性,包括fault狀態寄存器,新的fault異常,以及快閃記憶體修補(patch)操作,使得調試大幅簡化。
 可選ITM模塊,測試代碼可以通過它輸出調試信息,而且“拎包即可入住”般地方便使用。

產品概述


cortex-m3
cortex-m3
單片機的另外一個特點是調試工具非常便宜,不象ARM的模擬器動輒幾千上萬。針對這個特點,Cortex-M3採用了新型的單線調試(Single Wire)技術,專門拿出一個引腳來做調試,從而節約了大筆的調試工具費用。同時,Cortex-M3中還集成了大部分存儲器控制器,這樣工程師可以直接在MCU外連接Flash,降低了設計難度和應用障礙。
ARM Cortex-M3處理器結合了多種突破性技術,令晶元供應商提供超低費用的晶元,僅33000門的內核性能可達1.2DMIPS/MHz。該處理器還集成了許多緊耦合系統外設,令系統能滿足下一代產品的控制需求。ARM公司希望Cortex-M3核的推出,能幫助單片機廠商。
Cortex的優勢應該在於低功耗、低成本、高性能3者(或2者)的結合。
Cortex如果能做到 合理的低功耗(肯定要比Arm7 & Arm9要低,但不大可能比430、PICAVR低) + 合理的高性能(10~50MIPS是比較可能出現的範圍) + 適當的低成本(1~5$應該不會奇怪)。
簡單的低成本不大可能比典型的8位MCU低。對於已經有8位MCU的廠商來說,比如Philips、AtmelFreescaleMicrochip還有ST和Silocon Lab,不大可能用Cortex來打自己的8位MCU。對於沒有8位MCU的廠商來說,當然是另外一回事,但他們在國內進行推廣的實力在短期內還不夠。
對於已經有32位ARM的廠商來說,比如Philips、Atmel、ST,又不大可能用Cortex來打自己的Arm7/9,對他們來說,比較合理的定位把Cortex與Arm7/9錯開,即<40MIPS的性能+低於Arm7的價格,當然功耗也會更低些;當然這樣做的結果很可能是,斷了16位MCU的後路。
對於仍然在推廣16位MCU的廠商來說,比如Freescal、Microchip,處境比較尷尬,因為Cortex基本上可以完全替代16位MCU。
所以,未來的1~2年,來自新廠商的Cortex比較值得期待-包括國內的供應商;對於已有32位ARM的廠商,情況比較有趣;對於16位MCU的廠商,反應比較有意思。

編程模式


Cortex-M3處理器採用ARMv7-M架構,它包括所有的16位Thumb指令集和基本的32位Thumb-2指令集架構,Cortex-M3處理器不能執行ARM指令集
Thumb-2在Thumb指令集架構(ISA)上進行了大量的改進,它與Thumb相比,具有更高的代碼密度並提供16/32位指令的更高性能。
關於工作模式
Cortex-M3處理器支持2種工作模式:線程模式和處理模式。在複位時處理器進入“線程模式”,異常返回時也會進入該模式,特權和用戶(非特權)模式代碼能夠在“線程模式”下運行。
出現異常模式時處理器進入“處理模式”,在處理模式下,所有代碼都是特權訪問的。
關於工作狀態
Coretx-M3處理器有2種工作狀態。
Thumb狀態:這是16位和32位“半字對齊”的Thumb和Thumb-2指令的執行狀態。
調試狀態:處理器停止並進行調試,進入該狀態。

開發工具


Keil ULINK模擬器
IAR JLink模擬器
對客戶來說用什麼技術、晶元不是主要的。主要的是能否滿足要求。高性價比、開發門檻底、易於使用才是硬道理。Cortex M3從理論上來說是高性價比。但目前已有的晶元的功能太少。Cortex M系列在處理能力基本與ARM7同,主要是成本低,功耗小。如果周立功自己來做加上豐富的外設,如UART/USB/MAC以及無線通訊等功能,加上FLASHRAM這樣的SOC可以替換現在的許多應用,但這樣的話不知道什麼時候可以看到成品。內核是好,外設也是很重要的。

產品構造


synchronous serial 匯流排
完全可編程的16C550-型 UART
兩個獨立的模擬比較器
可配置為輸出來驅動一個輸出引腳,或產生一個中斷
可在外部輸入引腳或外部輸入引腳和內部參考電壓之間比較
2到18個GPIO 這取決於用戶的配置
在所有的引腳上具有可編程的GPIO中斷,可以邊沿觸發或電平觸發
可編程的GPIO 襯墊配置:
弱上拉或下拉電阻
2 mA, 4 mA, and 8 mA 襯墊驅動
8 mA驅動斜率控制
開漏使能
數字輸入使能
片內LDO電壓調整器
處理器低功率選項:睡眠模式和深度睡眠模式
外設低功率選項:軟體控制關閉個別外設
用戶使能的LDO 未調整電壓檢測和自動複位
通過中斷或複位方式檢測並報告3.3 V 電源電壓下降
IEEE 1149.1-1990 兼容的TAP控制器
經過 JTAG 或串列線調試
28腳SOIC
商業或工業級工作溫度
LM3S316 比 LM3S101 的增強如下:
25 MHz下工作
8級優先順序的24個中斷通道
16 kB 的單周期flash存儲器,在2 kB塊的基礎上提供2種形式的flash保護。
4 kB 的單周期SRAM存儲器
4 通道 10-bit ADC 250K採樣/秒
片內溫度感測器
4個專用的電機控制PWM 輸出
I2C 主從收發 傳輸速度100 kbps標準模式 400 kbps高速模式
3到32個GPIO 這取決於用戶的配置
48腳SOIC

主要控制


LM3S101 是一個高性能的ARM® Cortex?-M3 v7M架構的微控制器,適用於成本敏感的應用。它支持完全兼容Thumb的Thumb-2-only指令集,具有硬體除法和單周期的乘法器。集成的嵌套式的中斷控制器NVIC)提供確定性的中斷處理。目標應包括:工廠自動化及控制,工業控制動力設備,以及樓宇家庭自動化

產品特性


32位ARM®Cortex™-M3v7M架構
Thumb兼容的Thumb-2-only指令集
20MHz下工作
硬體除法和單周期的乘法器
集成的嵌套式的中斷控制器(NVIC)提供確定性的中斷處理
8級優先順序的14個中斷通道
8kB的單周期flash存儲器,在2kB塊的基礎上提供2種形式的flash保護。
2kB的單周期SRAM存儲器
2個定時器
每個可被配置為一個32位的定時器或兩個16位的定時器
一個支持捕捉和簡單的PWM模式
獨立的看門狗定時器
可編程的介面支持:FreescaleSPI匯流排,NationalSemiconductorMICROWIRE匯流排,Texas

選型指南


型號LM3S101LM3S102LM3S301M3S310LM3S315LM3S316
封裝28-pinSOIC28-pinSOIC48-pinLQFP48-pinLQFP48-pinLQFP48-pinLQFP
工作溫度C,IC,IC,IC,IC,IC,I
(商業級C0to70°C;
工業級I–40to85°C)
ARMCortex-M3Core√√√√√√
最大速度(MHz)202020252525
Flash存儲器(KB)8816161616
SRAM存儲器(KB)222444
JTAG引腳√√√√√√
串列調試與跟蹤(SWD/SWO)√√√√√√
UART口111222
通用io(GPIO)2–180–1812–333–367–323–32
SSI介面√√√√√√
I2C介面-√---√
模擬比較器212311
片內溫度感測器--√-√√
外部32KHz時鐘√√√√√√
(使用CCP引腳)
看門狗定時器√√√√√√
通用定時器222333
(1個可作為RTC)
掉電複位√√√√√√
LDO電壓調整器√√√√√√
ADC
採樣每秒--250K-250K250K
10-Bit通道數--3-44
PWM功能
PWM引腳--2624
CCP引腳122666
註:
a.最小GPIO引腳數是指專門用作GPIO的引腳,如果不使用某些外設那麼就有更多的引腳可用作GPIO。詳細細節請參考數據手冊。
b.PWM電機控制功能可以通過專用的電機控制硬體(PWM引腳)獲得,也可以通過通用定時器(CCP引腳)的電機控制特性獲得。詳細細節請參考數據手冊。