STM32F7有別于其它相同內(nèi)核MCU的幾個(gè)特色
對于微處理界第一顆基于ARM®Cortex®-M7內(nèi)核的高性能微控制器STM32F7系列,相信很多人對它都不陌生了。比如STM32F7系列微控制器采用90nm工藝,工作頻率高達(dá)216MHz,采用6級超標(biāo)量流水線和浮點(diǎn)單元,測試分?jǐn)?shù)高達(dá)1000 CoreMarks,性能提升的同時(shí)保持高能效,與STM32F4系列管腳高度兼容等等。
一般來講,基于ARM®Cortex®-M7內(nèi)核的微控制器大多具有相似的處理器配置選項(xiàng)。通常包括:
-一個(gè)64位AXI系統(tǒng)總線接口
-一個(gè)指令和數(shù)據(jù)高速緩存
-64位指令緊耦合存儲器(ITCM)
-雙32位數(shù)據(jù)緊耦合存儲器(DTCM)
不過,本文只是從應(yīng)用開發(fā)的層面介紹STM32F7系列有別于其它使用Cortex-M7內(nèi)核的MCU的幾個(gè)特色。
首先,第一個(gè)重要特色在于STM32F7器件同時(shí)具有ITCM接口和AXI接口連接到片內(nèi)閃存,如圖1所示。
圖1:基于ARMCortex-M7內(nèi)核的系統(tǒng)級芯片的框圖
ITCM和AXI雙接口的存在使得執(zhí)行代碼時(shí)具備更大的靈活性。此外,STM32F7還有一個(gè)稱為自適應(yīng)實(shí)時(shí)加速器(ARTAccelerator™)的內(nèi)置閃存加速器,從而實(shí)現(xiàn)閃存零等待執(zhí)行。使用TCM接口和ART加速器能能實(shí)現(xiàn)與帶緩存AXI接口相似的性能。同時(shí)用戶代碼也不會(huì)有高速緩存失效或高速緩存維護(hù)操作的麻煩。
利用ART Accelerator加速引擎和高達(dá)16kB的L1緩存,STM32F7MCU可實(shí)現(xiàn)ARM Cortex-M7的最佳性能。不管是從片內(nèi)閃存還是外部存儲器執(zhí)行代碼,在216MHz下均可達(dá)到1082 CoreMark/462 DMIPS。
第二個(gè)重大特色在于內(nèi)部SRAM分布在不同的模塊中,以降低動(dòng)態(tài)功耗,并允許從各個(gè)總線主機(jī)同時(shí)訪問不同的SRAM模塊,以優(yōu)化帶寬和延遲。
此架構(gòu)的一個(gè)典型應(yīng)用實(shí)例就是人機(jī)界面,在人機(jī)界面中,音頻和圖形數(shù)據(jù)與系統(tǒng)RAM之間的傳輸必須同時(shí)進(jìn)行。
第三個(gè)就是它的高級浮點(diǎn)單元。STM32F7系列器件具有一個(gè)高性能的單或雙精度浮點(diǎn)單元(FPU),支持所有ARM單或雙數(shù)據(jù)處理指令和數(shù)據(jù)類型。FPU在需要浮點(diǎn)數(shù)學(xué)精度的許多應(yīng)用中提供了優(yōu)勢,包括環(huán)路控制、音頻處理、音頻解碼和數(shù)字濾波等。
它還有個(gè)額外優(yōu)勢,那就是將某些功能的執(zhí)行或處理可以從CPU分流到FPU,使CPU用于其他任務(wù)。它支持雙精度,因此更易于使用雙精度浮點(diǎn)指令的基于PC的數(shù)學(xué)軟件。
第四,STM32F7 MCU最具特色的設(shè)計(jì)之一是它們的智能系統(tǒng)架構(gòu),它使用兩個(gè)子系統(tǒng),如圖2所示:
圖2:STM32F7微控制器的總線矩陣
AXI-to-multi-AHB橋?qū)XI4協(xié)議轉(zhuǎn)換成AHB-Lite協(xié)議
multi-AHB總線矩陣管理主機(jī)之間的訪問仲裁
該仲裁使用循環(huán)調(diào)度算法保障主機(jī)對從機(jī)的訪問,即使多個(gè)高速外設(shè)同時(shí)工作,也能實(shí)現(xiàn)同時(shí)訪問并高效運(yùn)行。
最后,不得不提它的L1高速緩存。STM32F7嵌入了指令和數(shù)據(jù)高速緩存,當(dāng)從片上或片外存儲器讀取代碼和數(shù)據(jù)時(shí)可彌補(bǔ)插入等待狀態(tài),從而提高性能。當(dāng)然,如果出現(xiàn)高速緩存失效和高速緩存行填充,此時(shí)查看高速緩存將無法保證數(shù)據(jù)的確定性。
這就是為什么要強(qiáng)烈推薦使用TCM存儲器來執(zhí)行關(guān)鍵代碼、存儲關(guān)鍵數(shù)據(jù)的原因。這在必須保證安全操作的應(yīng)用中(如家電和電機(jī))通常都很有用。
由于高速緩存不僅可以由CPU訪問,也可以通過其他主機(jī)進(jìn)行訪問(包括直接存儲器訪問(DMA)控制器),因此需要軟件維護(hù)操作。訪問物理存儲器時(shí),這些主機(jī)可能會(huì)讀出過期的數(shù)據(jù),而更新的數(shù)據(jù)在CPU高速緩存中已可用。
為了避免這個(gè)問題,開發(fā)者編寫用戶代碼時(shí)應(yīng)該采取以下措施:
A.當(dāng)除CPU以外的主機(jī)將執(zhí)行對高速緩存的訪問之前,推薦進(jìn)行高速緩存清零。這是為了確保CPU的最新的更新數(shù)據(jù)被寫回到物理存儲器。
B.當(dāng)除CPU以外的主機(jī)對高速緩存數(shù)據(jù)進(jìn)行了更新后,在對高速緩存進(jìn)行讀操作之前,CPU應(yīng)該使高速緩存失效。這是為了確保從物理存儲器的直接讀取。
C.有時(shí)也需考慮無高速緩存操作。當(dāng)高速緩沖存頻繁被其他主機(jī)訪問時(shí),可以通過CPU配置不可緩存屬性防止數(shù)據(jù)的不一致性。
更多內(nèi)容請移步:
STM32單片機(jī)中文官網(wǎng)
意法半導(dǎo)體/ST/STM
編輯:admin 最后修改時(shí)間:2019-01-03