衡阳派盒市场营销有限公司

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

mm32-2nd-bootloader技術白皮書(7)——性能評估

靈動MM32MCU ? 來源: 靈動MM32MCU ? 2023-06-03 09:35 ? 次閱讀

引言

上文描述了如何將一個樣例工程下載到 QSPI Flash 并運行,那么就會有一個新的問題:將應用程序存儲在 QSPI Flash、片內 Flash 以及片內 SRAM 上,執行的效果又如何?

本章將通過在不同 Flash 中執行相同的測試程序,記錄其執行程序所花費的時間,驗證不同 Flash 對微控制器執行程序性能的影響。

在進行 Flash 速度驗證前,我們需要知道如何獲取各 Flash 的速度:

QSPI Flash 訪問速度可通過 QSPI 的 SCK 波特率直接求出。

片內 Flash 的訪問速度可通過 DataSheet 手冊或寄存器配置得到。

通常,片內 SRAM (系統時鐘速度訪問)的訪問速度與系統時鐘速度保持一致。

若要驗證在不同 Flash 中程序的執行速度,還需考慮以下幾點:

驗證程序中要包含適量的小循環,從而展現 ICACHE 和 DCACHE 對執行程序帶來的性能提升。

驗證程序中要包含適量的長跳轉,使 CPU 需要重新訪問 Flash 獲取指令和數據,從而展現不同 Flash 對執行程序速度帶來的影響。

驗證程序要足夠復雜,且 code size 要足夠大,盡量消除偶然性因素,從而能夠模擬真實使用場景,使驗證結果更加可信。

驗證程序應盡量使用通用的算法應用,可以在多平臺中進行適配,且能夠進行橫向比較。

驗證環境

MCU F5270/F5280

測試所用開發板

POKT-F5270 (MM32F5277E9PV),外擴 QSPI Flash

POKT-F5280 (MM32F5287L9PV),合封 QSPI Flash

開發工具

MDK5.37(ARM Compiler: v6.18)

MCU F5270/F5280 配置

System Clock:120MHz

AHB Clock:120MHz

APB1 Clock:60MHz

APB2 Clock:60MHz

ICACHE: 開啟

DCACHE: 開啟

FPU: 開啟 (單精度)

片內 SRAM

Base:0x30000000

Speed:120MHz(1 訪問周期 + 0 等待周期)

片內 Flash

Base:0x08000000

Speed:24MHz(1 訪問周期 + 4 等待周期)

QSPI Flash

Base:0x90000000

存放數據的 RAM base:0x20000000 (with DTCM),在測試用例中使用另外的 RAM 存放程序

QSPI Flash

測試所用開發板:

型號:W25Q128JVSIQ,FM25Q16A

SCK波特率:30MHz (MM32F5270 only,120MHz AHB 時鐘 4 分頻) 與 60MHz (MM32F5280 only,120MHz AHB 時鐘 2 分頻)

受外界環境(線路不等長,阻抗不匹配等因素)和 GPIO 電平翻轉速度(電平上升下降沿所需時間)影響,片外 QSPI Flash難以在 SCK 波特率 60MHz 的環境下讀取到正確的數據,因此 60MHz 驗證只在 MM32F5280 上進行。

其余驗證程序均在 POKT-F5270 開發板上進行運行。

SPI 模式:SPI 模式 3 (CPOH = 1, CPHA = 0)

POKT-F5270 (MM32F5277E9PV),外擴 QSPI Flash

POKT-F5280 (MM32F5287L9PV),合封 QSPI Flash

工作模式:QPI 模式(各通信階段線寬皆為四線)下進行 Fast Read

指令線寬:4-line

指令位寬:8-bit

地址線寬:4-line

地址位寬:24-bit

空指令周期數:2-sck_cycles

數據線寬:4-line

交互方式:

18bf2fbc-01a5-11ee-90ce-dac502259ad0.png

由交互方式可知,無論向 QSPI Flash 讀取多少字節數據,讀取數據前都會有 10 個 SCK 時鐘準備數據。

Arm CMSIS-DSP FFT 驗證

FFT (快速傅里葉變換),是一種能夠將一段離散的波形數據轉換為頻譜數據的算法。

CMSIS-DSP 中 FFT 計算的 API,具有良好的可移植性,可在 ARM 內核的芯片中進行橫向對比,具有可信性,且它的 FFT 計算涉及到大量的循環和跳轉等操作,用例的 code size 足夠大,計算方法足夠復雜,可充分展現 CPU 和 Flash 之間配合,適合用于當前各 Flash 對微控制器性能影響測試。

驗證方法

使用 Arm CMSIS-DSP FFT 驗證方法時,可指定一段波形數據,通過 FFT 進行一次正向運算,得出頻譜數據,再將頻譜數據進行一次 FFT 反向運算,得出原始的波形數據。

使用 SysTick 定時器記錄時間,由于進行一次正向運算和一次反向運算所需的時間較短,因此循環多次(1000次),統計計算所需的時間。計算所需的時間越短,表明在該 Flash 上執行程序的性能越好,記錄完一次時間后,調整程序的優化等級,再次進行驗證。

驗證用例簡介

用例中主要使用函數 fft_test_init_f32() 與 fft_test_run_f32() 執行 FFT 轉換。

fft_test_init_f32()

對一塊 float32_t 類型的buffer進行初始化,生成一段波峰為1,波數為100,采樣點共1024個的波形數據。

fft_test_run_f32()

初始化 FFT,對 buffer 中的內容進行正向 FFT 轉換,將波形數據轉換為頻譜數據,替換 buffer 中原有的數據;

再對 buffer 中的內容進行逆向 FFT 轉換,將頻譜數據轉換為波形數據,替換 buffer 中原有的數據;

循環正向 FFT 轉換和逆向 FFT 轉換,循環次數為 test_times 次。

Arm CMSIS-DSP FFT 用例的驗證方法

調用 fft_test_init_f32() 函數對一塊 float32_t 類型的 buffer 進行初始化。

開啟 SysTick 定時器,每毫秒產生一次中斷,實現計時功能。

記錄開始驗證的時間,調用 fft_test_run_f32() 函數,test_times 為 1000。

記錄驗證結束的時間,打印驗證花費的時間。

驗證結果

在 QSPI Flash(60MHz與30MHz),片內 SRAM 和片內 Flash 上運算 Arm CMSIS-DSP FFT 的性能數據及代碼變量如表1所示。

此處需注意,由于浮點數記錄數據時會有精度問題,經過 1000 輪 FFT 轉換后的波形數據與 FFT 轉換前的波形數據相比,會有輕微變化,屬正?,F象。

18c7f6ec-01a5-11ee-90ce-dac502259ad0.png

表1 各 Flash 運行 FFT 的性能數據對比

以 -ofast 優化為例,片內 SRAM 的運算時長為基準單位,各 Flash 進行 FFT 運算所需時長對比如圖1所示。

18d76a46-01a5-11ee-90ce-dac502259ad0.png

圖1 各 Flash 的 FFT 運算速度比較 (-ofast)

驗證程序

Arm CMSIS-DSP FFT 測試程序包含三種優化等級程序:

o0 文件夾

編譯優化選項為 -o0 的驗證程序,包含片內 Flash,片內 SRAM 和 QSPI Flash 三種環境的工程。

ofast 文件夾

編譯優化選項為 -ofast 的驗證程序,包含片內 Flash,片內 SRAM 和 QSPI Flash 三種環境的工程。

oz 文件夾

編譯優化選項為 -oz image size 的驗證程序,包含片內 Flash,片內 SRAM 和 QSPI Flash 三種環境的工程。

當程序運行在片內 SRAM 或 QSPI Flash 時,需要 bootlader 進行引導,bootloader文件夾中提供三種環境下的 bootloader:

pokt-f5270_bootloader_qspi_sckdiv2_mdk

驗證程序執行在 QSPI Flash 上,且需要 SCK 時鐘為 AHB 時鐘的二分頻(AHB 時鐘為 120MHz 時 SCK 波特率為 60MHz)。

pokt-f5270_bootloader_qspi_sckdiv4_mdk

驗證程序執行在 QSPI Flash 上,且需要 SCK 時鐘為 AHB 時鐘的四分頻(AHB 時鐘為 120MHz 時 SCK 波特率為 30MHz)。

pokt-f5270_bootloader_sram_mdk

測試程序執行在片內 SRAM 上,該 bootloader 僅實現引導 CPU 執行片內 SRAM 上的程序,不實現加載程序到片內 SRAM 的功能。下載本 bootloader 后,可使用如 JLink 等工具,將驗證程序加載到片內 SRAM 中。即使微控制器發生復位,片內 SRAM 中的程序也不會被擦除。

Mbed-TLS RSA1024 驗證

RSA1024 是一種非對稱加密算法,常用于網絡通信時的數據加密。Mbed-TLS RSA1024 計算量大,包含大量循環,跳轉等操作,且其為純應用代碼,便于移植,計算方法復雜,可用于當前各 Flash 對微控制器性能影響測試。

驗證方法

指定公鑰和私鑰,對一段指定的數據進行 RSA1024 加密和解密。

使用 SysTick 定時器記錄時間,由于進行一次加密和解密的時間較短,需將一組加密與解密循環多次 (10次),記錄所需時間。

計算所需的時間越短,表明在該 Flash 上執行程序的性能越好,記錄完一次時間后,調整優化等級,再次進行驗證,不得使用專用的加解密硬件外設協助計算。

驗證用例簡介

用例中主要使用函數 rsa_test_init() 與 rsa_test_run() 執行數據加密。

rsa_test_init()

對存放解密數據的 buffer1 進行初始化,存放原始數據。

對存放加密數據的 buffer2 進行初始化,填充 0x00。

加載 RSA1024 公鑰和私鑰。

rsa_test_run()

將存放解密數據的 buffer1 中的內容進行加密,并將加密后的數據存放到 buffer2 中。

將存放加密數據的 buffer2 中的內容進行解密,并將解密后的數據存放到 buffer1 中。

循環以上操作 test_times 次。

驗證方法

調用 rsa_test_init() 函數對一塊 float32_t 類型的buffer進行初始化。

開啟 SysTick 定時器,每毫秒產生一次中斷,實現計時功能。

記錄開始驗證的時間,調用 rsa_test_run() 函數,test_times 為 10。

記錄驗證結束的時間,打印驗證花費的時間。

驗證結果

在 QSPI Flash(60MHz與30MHz),片內 SRAM 和片內 Flash 運行 Mbed-TLS RSA1024 程序的性能數據,如表2所示。

18ddb612-01a5-11ee-90ce-dac502259ad0.png

表2 各 Flash 運行 Mbed-TLS RSA1024 的性能數據

以 -ofast 優化為例,片內 SRAM 的運算時長為基準單位,各 Flash 進行 RSA1024 運算所需時長對比如圖2所示。

18e6059c-01a5-11ee-90ce-dac502259ad0.png

圖2 RSA1024 運算速度對比 (-ofast)

驗證程序

Mbed-TLS RSA1024 測試程序包含三種優化等級程序:

o0 文件夾

編譯優化選項為 -o0 的驗證程序,包含片內 Flash,片內 SRAM 和 QSPI Flash 三種環境的工程。

ofast 文件夾

編譯優化選項為 -ofast 的驗證程序,包含片內 Flash,片內 SRAM 和 QSPI Flash 三種環境的工程。

oz 文件夾

編譯優化選項為 -oz image size 的驗證程序,包含片內 Flash,片內 SRAM 和 QSPI Flash 三種環境的工程。

當程序運行在片內 SRAM 或 QSPI Flash 時,需要 bootlader 進行引導,三種環境下的 bootloader 結構與 Arm CMSIS-DSP FFT 驗證程序中對 bootloader 的介紹相同。

需要注意,MbedTLS RSA1024 用例未使用 MicroLIB庫

驗證時發現,使用 MicroLIB 后,在片內 SRAM 中執行 calloc 函數無法申請內存空間,影響 RSA1024 運算,因此在工程配置選項中選擇Options for Target ... -> Target 取消勾選 Use MicroLIB 。

為使用 printf() 函數打印驗證結果,在工程配置選項中選擇 Manage Run-Time Environment -> Compiler-> I/O 勾選 STDERR , STDIN , STDOUT 。程序配置如圖3所示。

18eee4e6-01a5-11ee-90ce-dac502259ad0.png

圖3 Manage Run-Time Environment 配置

Helix MP3 Decoder 驗證

Helix MP3 解碼庫作為一款開源的 MP3 解碼組件,常在多媒體應用中使用。

Helix MP3 Decoder為純應用代碼,便于移植,且其在進行 MP3 解碼的過程中,需要進行大量的循環和長跳轉操作,適合用于當前各 Flash 對微控制器性能影響測試。

驗證方法

使用 Helix MP3 Decoder 驗證方法,指定一段 MP3 文件,將其文件中的原始數據存放在待測試的 Flash 中。

使用 Helix MP3 解碼庫將該 MP3 文件的原始數據解碼為 PCM 格式。

使用 SysTick 定時器記錄時間,由于指定的 MP3 文件較小,且 Helix MP3 解碼速度較快,因此循環多次(10次),統計計算所需的時間。

計算所需的時間越短,表明在該 Flash 上執行程序的性能越好。完成一次時間統計后,通過調整程序優化等級,再次進行驗證。

驗證用例簡介

用例中主要使用函數 mp3_dec_test_run() 執行 MP3 解碼。

mp3_dec_test_run()

初始化 Helix MP3 Decoder。

循環尋找下一個 MP3 的同步幀的起始位置,并開始解碼這一幀 MP3 原始數據,直至 MP3 文件全部解碼。

釋放 Helix MP3 Decoder。

循環上述的 MP3 解碼過程,循環次數為 test_times 次。

驗證方法

開啟 SysTick 定時器,每毫秒產生一次中斷,實現計時功能。

記錄開始驗證的時間,調用 mp3_dec_test_run() 函數,test_times 為 10。

記錄驗證結束的時間,打印驗證花費的時間。

驗證結果

在 QSPI Flash(60MHz,30MHz),片內 SRAM 和片內 Flash 中運行 Helix MP3 Decoder 所獲取的性能數據,如表3所示。

18fd248e-01a5-11ee-90ce-dac502259ad0.png

表3 各 Flash 運行 Helix MP3 Decoder 的性能數據

以 -ofast 優化為例,片內 SRAM 的運算時長為基準單位,各 Flash 進行 Helix MP3 Decoder 運算所需時長對比,如圖4所示。

19093422-01a5-11ee-90ce-dac502259ad0.png

圖4 mp3 dec test 運算速度對比 (-ofast)

驗證程序

Helix MP3 Decoder 測試程序包含三種優化等級程序:

o0 文件夾

編譯優化選項為 -o0 的驗證程序,包含片內 Flash,片內 SRAM 和 QSPI Flash 三種環境的工程。

ofast 文件夾

編譯優化選項為 -ofast 的驗證程序,包含片內 Flash,片內 SRAM 和 QSPI Flash 三種環境的工程。

oz 文件夾

編譯優化選項為 -oz image size 的驗證程序,包含片內 Flash,片內 SRAM 和 QSPI Flash 三種環境的工程。

當程序運行在片內 SRAM 或 QSPI Flash 時,需要 bootlader 進行引導,三種環境下的 bootloader 結構與 Arm CMSIS-DSP FFT 驗證程序部分介紹的相同。

總結

本文通過在 QSPI Flash,片內 Flash 與片內 SRAM 中分別運行測試工程 Arm CMSIS-DSP FFT、Mbed-TLS RSA1024 與 Helix MP3 Decoder,獲取微控制器性能數據,從而對比在不同 Flash 位置的執行速度的差異。

通過對比上述驗證數據可知:

不同型號 QSPI Flash 的訪問速度受 SCK 波特率影響,當訪問 QSPI Flash 的方法一致時,不同型號的 QSPI Flash 訪問速度一樣。

同一優化選項下,使用不同驗證程序,不同 Flash 位置的執行速度存在一定差異。

MM32F5270 系列芯片具備 ICACHE 和 DCACHE,驗證執行速度比較小的程序,說明具備良好的時間局部性和空間局部性,具有較高的 CACHE 命中率,減少了訪問 Flash 所花費的時間;驗證執行速度比較大的程序,說明執行程序時,進行了較多較大范圍的跳轉操作,需不斷訪問 Flash,刷新 CACHE,造成執行速度變慢。

當然,即使關閉 ICACHE 和 DCACHE,執行速度比也是會存在一定差異的,這是由于 QSPI Flash 的訪問方式中規定了不論讀取多少字節的數據,都會包含一個指令階段,一個地址階段和一個空指令階段,需要花費 10 個 SCK 時鐘周期,因此造成讀取 2n 字節數據花費的時間和 n 字節數據花費的時間,不是簡單的二倍關系,造成執行速度比存在一定差異。

關于靈動

上海靈動微電子股份有限公司成立于 2011 年,是中國本土領先的通用 32 位 MCU 產品及解決方案供應商。公司基于 Arm Cortex-M 系列內核開發的 MM32 MCU 產品擁有 F/G/L/A/SPIN/W 六大系列,目前已量產近 300多款型號,累計交付超 4 億顆,每年都有近億臺配備了靈動 MM32MCU 的優秀產品交付到客戶手中,在本土通用 32 位 MCU 公司中位居前列。

靈動客戶涵蓋智能工業汽車電子、通信基建、醫療健康、智慧家電、物聯網、個人設備、手機電腦等應用領域。靈動是中國為數不多的同時獲得了 Arm-KEIL、IAR、SEGGER 官方支持的本土 MCU 公司,并建立了獨立、完整的通用 MCU 生態體系。靈動始終秉承著“誠信、承諾、創新、合作”的精神,為客戶提供從硬件芯片到軟件算法、從參考方案到系統設計的全方位支持。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • mcu
    mcu
    +關注

    關注

    146

    文章

    17324

    瀏覽量

    352663
  • bootloader
    +關注

    關注

    2

    文章

    235

    瀏覽量

    45738
  • 靈動微電子
    +關注

    關注

    7

    文章

    122

    瀏覽量

    19692
  • 靈動微
    +關注

    關注

    4

    文章

    174

    瀏覽量

    22723
  • MM32
    +關注

    關注

    1

    文章

    106

    瀏覽量

    809

原文標題:靈動微課堂 (第258講)|mm32-2nd-bootloader技術白皮書(7)——性能評估

文章出處:【微信號:MindMotion-MMCU,微信公眾號:靈動MM32MCU】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    BFD技術白皮書 華為

    BFD技術白皮書 華為BFD(雙向轉發檢測)是一套用來實現快速檢測的國際標準協議,提供一種輕負荷、持續時間短的檢測。與以往的其他“HELLO”檢測機制相比,具有許多獨到的優勢。華為公司已經在高端網絡產品上實現了BFD技術,并將提
    發表于 12-12 10:12

    【經典】智能電網白皮書資料匯編

    【經典】智能電網白皮書資料匯編 工作、電路設計、方案設計等實戰中很多時候遇到的問題在網上找不到好的解決辦法,主要是因為工作中接觸的各個產品、電子元器件都是各大公司的產品,而這些公司產品、適合技術
    發表于 12-23 20:15

    最新的智能電網的白皮書資料

    ,因而遇到的這些問題并非那些打從資料、技術方案所能解決的,所以自己就養成了搜集各大公司智能電網的白皮書的習慣。 下面各大公司2010年最新的智能電網的白皮書資料,在這里分享出來,有需要的童鞋可以去看
    發表于 12-23 21:08

    【PPT】ASIC安全管理技術白皮書

    【PPT】ASIC安全管理技術白皮書 附件下載:
    發表于 02-24 11:32

    ZigBee白皮書

    ZigBee白皮書
    發表于 08-20 09:50

    H3C EPON技術白皮書

    關鍵詞: FTTH FTTB FTTx EPON 技術 白皮書摘 要:本文獻是關于EPON技術的介紹說明型文檔,目的在于說明EPON是一個什么技術、解決了什么問題。對EPON中的
    發表于 07-13 23:08

    簡儀科技怒對LabVIEW的白皮書

    本帖最后由 niezidong 于 2017-8-23 20:43 編輯 簡儀科技最近搞的開源平臺跟NI是針鋒相對啊。近期的宣傳都帶火藥味,還出了一本白皮書。見附件。這白皮書就差直接說搞LabVIEW沒前途了。各位對此有何高見?
    發表于 08-11 15:55

    評估高可用性機制白皮書

    評估高可用性機制(白皮書
    發表于 10-10 09:09

    IPTV服務質量白皮書

    IPTV服務質量白皮書
    發表于 10-14 14:11

    5G射頻測試技術白皮書解析

    5G射頻測試技術白皮書詳解
    發表于 01-13 06:33

    物聯網領域白皮書分享

    最近研究了一些物聯網相關的白皮書,分享給各位電友
    發表于 03-30 14:48

    i.MX 7ULP產品白皮書

    i.MX 7ULP白皮書
    發表于 12-13 06:00

    MiniGUI 技術白皮書

    MiniGUI 技術白皮書
    發表于 10-27 15:11 ?32次下載
    MiniGUI <b class='flag-5'>技術</b><b class='flag-5'>白皮書</b>

    mm32-2nd-bootloader技術進階設計:實現Ymodem更新代碼

    前文中實現了一款簡單的 2nd Bootloader,能夠跳轉執行存儲在 QSPI Flash 中的應用程序,但 2nd Bootloader 如果僅僅只是用于跳轉執行程序的話,豈不是
    的頭像 發表于 06-09 09:28 ?2056次閱讀
    <b class='flag-5'>mm32-2nd-bootloader</b><b class='flag-5'>技術</b>進階設計:實現Ymodem更新代碼

    mm32-2nd-bootloader技術白皮書(5)——編譯可在QSPI Flash上運行的程序

    mm32-2nd-bootloader技術白皮書(5)——編譯可在QSPI Flash上運行的程序
    的頭像 發表于 10-24 16:14 ?539次閱讀
    <b class='flag-5'>mm32-2nd-bootloader</b><b class='flag-5'>技術</b><b class='flag-5'>白皮書</b>(5)——編譯可在QSPI Flash上運行的程序
    赌场百家乐官网是如何| 大发888娱乐场18| 威尼斯人娱乐城代理开户| 大发888下载安装| 皇廷国际| 澳门百家乐官网单注下限| 赌场百家乐官网打法| 百家乐洗码| 威尼斯人娱乐城真人游戏| 188金宝博备用网址| 网上百家乐官网赌场| 做生意如何风水| 诚信百家乐在线平台| 百家乐追号软件| 屏东市| 百家乐官网只打闲打法| 百家乐博彩开户博彩通| 大发8888下载| 百家乐官网视频麻将| 吉利百家乐官网的玩法技巧和规则| k7百家乐最小投注| 德州扑克 梭哈| 太阳城百家乐官网红利| 百家乐官网娱乐城网站| 百家乐连黑记录| 太阳城sun866| 财神百家乐官网娱乐城| 微信百家乐官网群资源| 大发888娱乐场存款168| 百家乐官网扑克桌布| 大世界百家乐娱乐城| 大发888如何注册送58| 代理百家乐官网免费试玩| 网上百家乐有人赢过嘛| 盈得利| 百家乐官网微乐| 月亮城百家乐的玩法技巧和规则 | 路冲铺面能做生意吗| 大发888 dafa888 gzsums| 老k百家乐官网游戏| 旧金山百家乐的玩法技巧和规则|