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