讓下一代智能互聯(lián)嵌入式應用開(kāi)發(fā)更簡(jiǎn)化
Cortex-M處理器家族是一系列具有擴展性,兼容性,節能和易于使用的處理器,旨在幫助開(kāi)發(fā)人員滿(mǎn)足未來(lái)智能互聯(lián)嵌入式應用的需要。2010年推出的Cortex-M4是建立在Cortex-M3的基礎上并加入了一系列專(zhuān)門(mén)為數字信號處理定制的指令集擴展,并搭配可選的性能可達1.25 DMIPS/ MHz的單精度浮點(diǎn)單元。自推出以來(lái),有10家以上的半導體廠(chǎng)商推出了基于Cortex-M4的通用MCU產(chǎn)品,以及非常廣泛的基于Cortex-M4的sensor hub產(chǎn)品。
本文引用地址:http://dyxdggzs.com/article/201807/383691.htm在過(guò)去的幾年里,對支持互聯(lián)的嵌入式系統的功能特性和處理能力的需求變得更加苛刻。即使是最簡(jiǎn)單的系統,也預期支持多種連接方式,圖形用戶(hù)界面,人機界面,語(yǔ)音識別或其他自然的交互方式。處理器需要變得更加強大,并能提供更多的本地處理能力。在汽車(chē)行業(yè)和工業(yè)自動(dòng)化中應用的微控制器需要支持更高的處理能力和CPU性能提升,對計算精度和短時(shí)間內處理大量數據的要求在迅速提高。這些未來(lái)系統的要求包括:以較低的成本提供更多的功能,增加連接性,更好的代碼重復利用,以及提高能效。正是著(zhù)眼于這樣的未來(lái)需求,ARM和合作伙伴一起設計了當前Cortex-M家族中性能最強的ARM Cortex-M7處理器。
近觀(guān)Cortex-M7
Cortex-M7能夠應對最嚴格的應用環(huán)境,并克服了以前基于Cortex-M處理器的解決方案所面臨的問(wèn)題,性能達到了上一代Cortex-M4的兩倍,大約為5 CoreMark/ MHz。Cortex-M7是專(zhuān)為各種嵌入式應用,包括微控制器,汽車(chē)控制器,工業(yè)控制系統和無(wú)線(xiàn)通信控制器(例如無(wú)線(xiàn)網(wǎng)絡(luò ))設計的。對于那些熟悉Cortex-M系列CPU的嵌入式應用開(kāi)發(fā)者來(lái)說(shuō),Cortex-M7基于Cortex-M架構,從架構上兼容從Cortex-M0以來(lái)的所有產(chǎn)品(圖1)。

圖1
ARM Cortex-M7處理器特性
Cortex-M7包含六階段的超標量流水線(xiàn),并和緊耦合內存、高速緩存和大內存支持選項集成在一起以提供整數、浮點(diǎn)和DSP處理能力并保證確定性的行為。Cortex-M7先進(jìn)的流水線(xiàn)能提供相對于Cortex-M4更高的性能,允許在每個(gè)時(shí)鐘周期執行兩條指令。
Cortex-M7開(kāi)發(fā)的一大重點(diǎn)是相對于之前的Cortex-M系列處理器提高IPC(instructions-per-clock)效率。Cortex -M7是Cortex-M家族中第一個(gè)提高最高64KB指令和數據緩存選項的處理器,高速緩存能提供對更大的存儲器系統的有效操作(外存通常比處理器慢很多)。此外還添加了緊耦合內存接口,集成ECC支持。對內存的快速訪(fǎng)問(wèn)使得高速中斷處理和實(shí)時(shí)應用處理成為可能。這樣的集成使得工程師們可以在內部緩存中執行大部分代碼,以減少對外部存儲器讀寫(xiě)訪(fǎng)問(wèn),從而降低功耗。
Cortex-M7也提供了對每個(gè)內部緩存單元增加ECC支持的選項,以提高系統的可靠性。對于給定解決方案,如果某個(gè)內存位置的單個(gè)比特值被破壞,該數據可被校正和恢復。除了ECC,存儲器系統也可以通過(guò)可選的存儲器保護單元(MPU)設定8或16個(gè)區域為受保護區域以增強系統可靠性。
為了支持提高了的CPU處理能力,內存系統也從32位AXI總線(xiàn)改進(jìn)為64位AXI總線(xiàn),64位AXI比32位AXI提供了更大的帶寬,并支持多個(gè)outstanding transfer以最大化系統性能。為了易于集成在先前的Cortex-M設計中使用的傳統外圍設備,還有一個(gè)可選的低延遲AHB外設總線(xiàn)接口。為了允許靈活的中斷管理和低中斷延遲,集成嵌套矢量中斷控制器(NVIC)用1到240個(gè)中斷,以及3至8位可編程優(yōu)先級寄存器實(shí)現與處理器的緊密集成。此外,還有ETM支持,專(zhuān)為CoreSight(ARM支持全系統調試和跟蹤的架構)設計。
Cortex-M7包含的雙精度支持可選項,進(jìn)一步擴大了Cortex-M家族的浮點(diǎn)能力。如果FPU存在時(shí),還支持整數和浮點(diǎn)指令的并發(fā)。鑒于存在大量基于Cortex-M7的MCU應用,它還具有完全的強大的調試功能,以及可選的全指令和數據跟蹤支持。對已經(jīng)使用了Cortex-M4處理器的設備,在應用對性能的要求提高時(shí),前述特性使得Cortex-M7成為一種極具吸引力的解決方案。
遷移設計到Cortex-M7
鑒于大多數嵌入式工程師和開(kāi)發(fā)人員都熟悉Cortex-M4,讓我們來(lái)看看Cortex-M7帶來(lái)的一些軟件開(kāi)發(fā)的優(yōu)點(diǎn)。從開(kāi)發(fā)者的角度來(lái)看,在Cortex-M7支持所有的Cortex-M4處理器指令,并使用相同的中斷模型來(lái)處理異常。在大多數情況下,針對Cortex-M4處理器編寫(xiě)的程序代碼應該可以在Cortex-M7處理器上沒(méi)有任何問(wèn)題地運行。但是,在有些情況下可能需要做一些改動(dòng),軟件開(kāi)發(fā)人員必須了解這些改動(dòng)以減少把應用程序從Cortex-M4遷移到Cortex-M7所需的時(shí)間。
為了獲得Cortex-M7處理器的最佳性能,一些C編譯器和運行時(shí)庫已經(jīng)進(jìn)行了優(yōu)化和更新(圖2)。此外,由于相當多的Cortex-M7相對于Cortex-M4在調試系統上的變化,軟件開(kāi)發(fā)者必須更新他們的工具鏈,以在基于Cortex-M7的微控制器產(chǎn)品上調試應用程序。在某些情況下,調試適配器上的固件可能還需要更新。因此,強烈建議更新到最新的開(kāi)發(fā)工具鏈。

圖2
相對于Cortex-M4的2倍性能改進(jìn)
通常情況下,把軟件從Cortex-M4遷移到Cortex-M7處理器時(shí),需要完成以下改動(dòng):
(1)、更新CMSIS- CORE頭文件為Cortex-M7對應的頭文件。對應Cortex-M7處理器的CMSIS-CORE頭文件包含在CMSIS 4.2之后的版本中。(最新的CMSIS可以從www.arm.com/cmsis獲得。)
(2)、更新CMSIS-DSP庫為Cortex-M7定制版本。Cortex-M7定制版本為Cortex-M7處理器的流水線(xiàn)行為進(jìn)行了優(yōu)化,因此可以提供更高的性能。
(3)、進(jìn)行緩存配置的新API包含在CMSIS-CORE頭文件中。如果正在使用的Cortex-M7裝置經(jīng)由AXI接口從慢速存儲器(例如Flash)執行程序,應該啟用高速緩存以獲得更好的性能。
此外,所有的代碼應該被重編譯以允許編譯器針對Cortex-M7處理器流水線(xiàn)更好地優(yōu)化指令序列。在某些情況下,可能在運行時(shí)需要額外的緩存維護操作。例如,在處理器和外設DMA控制器共享一塊帶緩存的內存時(shí),必須進(jìn)行適當的緩存維護操作以保證內存一致性。
評論