閱讀672 返回首頁    go 阿裏雲 go 技術社區[雲棲]


Cortex-M3

大家聽說過Cortex-M3嗎?在嵌入式處理器的世界,cortex-M3是一位人見人愛的後生。它的成本和功耗低,可配置性很高。如今,很多ARM的工程師加入了cortex-M3的學習與開發中,WIZnet一直都是行業的領先者,即將上市的新產品W7200正是加入了cortex-M3處理器的全硬件TCP/IP協議棧芯片,通過利用它的優勢,相信會得到更多客戶的青睞。下麵,廣大的嵌入式愛好者可以跟隨我們一起來了解cortex-M3,加入到基於這一先進的32位處理器的嵌入式開發學習。 

Cortex-M3 學習(一)

1.走進cortex-M3

ARM Cortex- M3 處理器是行業領先的 32 位處理器,適用於具有高確定性的實時應用,已專門開發為允許合作夥伴為範圍廣泛的設備(包括微控製器、汽車車體係統、工業控製係統以及無線網絡和傳感器)開發高性能低成本的平台。該處理器提供出色的計算性能和對事件的卓越係統響應,同時可以應對低動態和靜態功率限製的挑戰。該處理器是高度可配置的,可以支持範圍廣泛的實現(從那些需要內存保護和強大跟蹤技術的實現到那些需要極小麵積的對成本非常敏感的設備)。

                                                                              (基於Cortex-M3的閃存MCU)

2.要使用低成本的32位處理器,開發人員麵臨兩種選擇,基於Cortex-M3內核或者ARM7TDMI內核的處理器。而ARM Cortex-M3相比於ARM其他係列微控製器,具有以下優勢或特點:

1). 三級流水線+分支預測
ARM Cortex-M3與ARM7內核一樣,采用適合於微控製器應用的三級流水線,但增加了分支預測功能。
現代處理器大多采用指令預取和流水線技術,以提高處理器的指令執行速度。流水線處理器在正常執行指令時,如果碰到分支(跳轉)指令,由於指令執行的順序可能會發生變化,指令預取隊列和流水線中的部分指令就可能作廢,而需要從新的地址重新取指、執行,這樣就會使流水線“斷流”,處理器性能因此而受到影響。特別是現代C語言程序,經編譯器優化生成的目標代碼中,分支指令所占的比例可達10-20%,對流水線處理器的影響會的更大。為此,現代高性能流水線處理器中一般都加入了分支預測部件,就是在處理器從存儲器預取指令時,當遇到分支(跳轉)指令時,能自動預測跳轉是否會發生,再從預測的方向進行取指,從而提供給流水線連續的指令流,流水線就可以不斷地執行有效指令,保證了其性能的發揮。
ARM Cortex-M3內核的預取部件具有分支預測功能,可以預取分支目標地址的指令,使分支延遲減少到一個時鍾周期。

2). 哈佛結構
從內核訪問指令和數據的不同空間與總線結構,可以把處理器分為哈佛結構和普林斯頓結構(或馮.諾伊曼結構)。馮.諾伊曼結構的機器指令、數據和I/O共用一條總線,這樣內核在取指時就不能進行數據讀寫,反之亦然。這在傳統的非流水線處理器(如MCS51)上是沒有什麼問題的,它們取指、執行分時進行,不會發生衝突。但在現代流水線處理器上,由於取指、譯碼和執行是同時進行的(不是同一條指令),一條總線就會發生總線衝突,必須插入延遲等待,從而影響了係統性能。ARM7TDMI內核就是這種結構的。
而哈佛結構的處理器采用獨立的指令總線和數據總線,可以同時進行取指和數據讀寫操作,從而提高了處理器的運行性能。ARM
Cortex-M3、ARM966E、ARM926EJ、ARM1136JF等內核都采用了哈佛結構。

3). 內置嵌套向量中斷控製器(NVIC)
針對業界對ARM處理器中斷響應的問題,Cortex-M3首次在內核上集成了嵌套向量中斷控製器(NVIC)。Cortex-M3的中斷延遲隻有12個時鍾周期(ARM7需要24-42個周期);Cortex-M3還使用尾鏈技術,使得背靠背(back-to-back)中斷的響應隻需要6個時鍾周期(ARM7需要大於30個周期)。以STM32運行在75MHz為例,中斷延遲隻有80ns-160ns。另外,Cortex-M3采用了基於棧的異常模式,使得芯片初始化的封裝更為簡單。
ARM7TDMI內核不帶中斷控製器,具體MCU的中斷控製器是各芯片廠商自己加入的,這使得各廠商的ARM7
MCU中斷控製部分都不一樣,給用戶使用及程序移植帶來了很大麻煩。Cortex-M3內核集成NVIC,各廠商生產的基於Cortex-M3內核的MCU都具有統一的中斷控製器,對用戶使用各種Cortex-M3
MCU,特別是中斷編程帶來了很大的便利。

4). 支持位綁定操作
以前的ARM內核不支持位操作,當需要對一個變量或端口的某一位操作時,先要用邏輯與/或指令屏蔽其他的位,使位操作需要較多的指令和時鍾周期。ARM
Cortex-M3采用了一種特殊的方法——位綁定:把一個地址單元的32位變量中的每一位,通過一個簡單的地址轉換算法,映射到另一個地址空間,每一位占用一個地址,對此地址空間的操作,隻有數據的最低一位是有效的,其餘高31位的值被忽略。相當於把一個“橫”的32位字給“豎”起來。這樣對新的映射空間操作時,就可以不用屏蔽操作,優化了RAM和I/O寄存器的讀寫,提高了位操作的速度。
這種方法粗看起來好像損失了很多地址空間,其實對於32位的ARM處理器而言,總共可以尋址4GB的空間,而對於一個MCU來說,一般隻用到幾百KB的空間。所以這種處理方法絲毫不會影響一個MCU的正常使用,又大大簡化了處理器的設計,可以說是一種良策。

5). 支持串行調試(SWD)
ARM處理器一般都使用JTAG調試接口,使得仿真、調試工具統一而廉價,方便了用戶開發。但JTAG調試接口至少要占用芯片的5-6個引腳,這對於一些引腳較少的MCU來說,有時會對仿真調試和I/O使用帶來麻煩。
ARM
Cortex-M3在保持原來JTAG調試接口的基礎上,還支持串行調試(SWD)。使用SWD時,隻占用2個引腳,就可以進行所有的仿真和調試,節省了調試用引腳,用戶就可以使用更多的引腳。
另外,Cortex-M3支持8個硬件斷點(ARM7、ARM9隻支持2個硬件斷點),可以減少斷點調試時對代碼的影響,保證仿真、調試的時序準確性。

6). 內核支持低功耗模式
ARM內核已經是一個高性能、低功耗的內核,但ARM7、ARM9等內核本身隻有運行/停止模式,沒有其他模式。各芯片廠商隻能在內核基礎上,對各自加入的外設定義各種低功耗模式。Cortex-M3加入了類似於8位處理器的內核低功耗模式,支持3種功耗管理模式:通過一條指令立即睡眠;異常/中斷退出時睡眠;深度睡眠。使整個芯片的功耗控製更為有效。以STM32為例,其RAM和寄存器狀態保持的停機模式耗電僅為14uA,從此狀態的啟動時間僅為7us。
Cortex-M3的運行功耗(Active
Mode)也很低。以STM32係列微控製器為例,其典型功耗約為500uA/MHz,也隻是目前業界超低功耗單片機MSP430係列(約為250uA/MHz)的2倍。但MSP430是16位處理器,而STM32是32位處理器。

最後更新:2017-04-03 06:03:10

  上一篇:go obj-c編程07:異常處理
  下一篇:go Swift下標