ARM Cortex-M7的內(nèi)存:太大還是不夠?
毫無疑問,ARM Cortex-M7 - 擁有強大的內(nèi)存和處理能力 –以即使在幾年前都難以想象的方式擴展了微控制器的功能。該處理器被定位成為物聯(lián)網(wǎng)(IOT)的核心構(gòu)建模塊的事實,更是奪人眼目。
本文引用地址:http://m.butianyuan.cn/article/264892.htm事實上,意法半導體的STM32 F7系列在9月的ARM科技論壇上榮獲了最佳表現(xiàn)獎。這是第一款采用ARM的Cortex-M7內(nèi)核的32位MCU家族,擁有320KB SRAM和1024KB閃存。愛特梅爾采用Cortex-M7內(nèi)核的處理器還沒有公布,預計將有384KB SRAM和2MB閃存,這種內(nèi)存規(guī)格高出典型的MCU 10倍以上。
但是,Cortex-M7是否擁有“完成任務”所需的必要資源基本上還是要取決于開發(fā)者。本質(zhì)上:今天的嵌入式開發(fā)人員,有時是在似乎幾乎不受約束的設(shè)計空間上,絞盡腦汁地在硬件、軟件和系統(tǒng)設(shè)計上做出如毛線團似的大量繁雜的決定和取舍。
?
“對于來自Windows,Linux,iOS,Web服務編程和商用邏輯編程領(lǐng)域的開發(fā)人員,Cortex-M7有太多限制和性能上的扼殺。但是,對于曾在8051等任何8位微處理器上,或Cortex-M0到M3上的開發(fā)者而言,他們眼中的Cortex-M7資源豐富、性能強大。” Matt Liberty說。他是Jetperch LLC的創(chuàng)始人,該公司提供DSP和嵌入式軟件咨詢服務。
一個實時I / O處理的強者
“這是一個實時I/ O處理的強者。事實上,像很多在8位單片機上編寫的小型嵌入式程序那樣不帶操作系統(tǒng)裸機運行在目標硬件上的循環(huán)程序,它們高效、簡單易懂且易于調(diào)試,可能很難使用這么多的性能配置和存儲器?!?/p>
Liberty強調(diào),在物聯(lián)網(wǎng)的應用場景中,為了更有效地管理復雜的網(wǎng)絡(luò)和多個外圍設(shè)備,采用一個實時操作系統(tǒng)(RTOS)變得非常關(guān)鍵。但是,過去幾年來,隨著開發(fā)社區(qū)努力尋找更佳的方案,RTOS的數(shù)量也在激增,現(xiàn)在,選擇“最好”的RTOS已經(jīng)成為開發(fā)人員的一大挑戰(zhàn)。
“快速瀏覽維基百科的“實時操作系統(tǒng)列表”就足以讓嵌入式軟件工程師頭大”,Liberty強調(diào)。 “雖然C和C ++仍然司空見慣,但在考慮多線程、安全性以及可靠性時,這兩種語言都顯得捉襟見肘。D和Rust語言具有填補這些空白的潛力,但它們今天都沒有做好用于嵌入式應用的準備?!?/p>
Frank Hunleth,一名專注于視頻處理和嵌入式Linux開發(fā)的嵌入式軟件開發(fā)人員,他也認為,實時操作系統(tǒng)行業(yè)需要證明在這些平臺上使用高級語言的可能性,并幫助定義它們的庫。
“我敢肯定,如果明年我在一個項目上使用M7,我還是會使用C或C ++,因為它們有大部分工具和庫的廣泛支持,”他說。 “我希望這種情形保持下去嗎?不是的,因為如果這樣,我們將錯失可以從Rust語言得到的靜態(tài)檢查內(nèi)存安全,從Python語言得到的易開發(fā)特性,和來自Erlang和Elixir的容錯性和并發(fā)性?!?/p>
內(nèi)存有點小
其他人覺得,對物聯(lián)網(wǎng)而言,即使有旨在最大限度地利用M7內(nèi)存的功能特性,M7的內(nèi)存依然稍顯不足。一個例子是ST針對內(nèi)部嵌入式閃存和L1高速緩存的自適應實時加速器,它可以從內(nèi)部和外部存儲器同時執(zhí)行指令和訪問數(shù)據(jù)。
“對一個微控制器而言,這是一個很大的內(nèi)存和存儲空間。但是,哪怕是最小的Java虛擬機[即解釋Java字節(jié)碼,使處理器執(zhí)行程序指令的環(huán)境]至少也需要2MB才能運行起來,一時半會我們還不太可能會看到Java或任何其他基于虛擬機的平臺上運行在這些小的CPU內(nèi)核上?!?PTR集團的首席技術(shù)官和首席科學家Michael Anderson說?!叭绻阍黾右粋€通信協(xié)議棧和一個可執(zhí)行程序或諸如ARM的mbed、Micrium的μC/ OS-III或FreeRTOS之類的實時操作系統(tǒng),你的程序空間會顯得非常小。”
Anderson強調(diào),內(nèi)存使用率是很多這些物聯(lián)網(wǎng)新應用的命脈?!皟?nèi)存是寶貴的。類庫內(nèi)部封裝的API會吃掉內(nèi)存,盡管它在通用計算機上表現(xiàn)良好。這些年,在計算機行業(yè),我們的代碼只有少數(shù)存在不知情內(nèi)存膨脹的案例。如果我們不認真思考正在進行的開發(fā)任務,并繼續(xù)以我們在大容量內(nèi)存環(huán)境下已經(jīng)習慣的方式編寫代碼,我們就永遠無法使用這些小內(nèi)存的微控制器進行物聯(lián)網(wǎng)應用開發(fā),并發(fā)掘出其令人驚艷的可能性?!?/p>
評論