在嵌入式系統(tǒng)設(shè)計(jì)中,如何平衡高性能計(jì)算與實(shí)時(shí)控制一直是工程師面臨的挑戰(zhàn)。STM32MP257的異構(gòu)架構(gòu)為這一難題提供了優(yōu)雅的解決方案,而其中的Cortex-M33實(shí)時(shí)核更是實(shí)現(xiàn)硬實(shí)時(shí)性能的關(guān)鍵所在。
一、異構(gòu)架構(gòu):分工明確,效能卓越
STM32MP257采用創(chuàng)新的雙核子系統(tǒng)設(shè)計(jì):
Cortex-A35應(yīng)用核(雙核1.5GHz):運(yùn)行Linux系統(tǒng),負(fù)責(zé)復(fù)雜UI、網(wǎng)絡(luò)通信、文件管理等非實(shí)時(shí)任務(wù)。
Cortex-M33實(shí)時(shí)核(400MHz):專攻實(shí)時(shí)控制,具備納秒級(jí)中斷響應(yīng),集成FPU和DSP指令集。
二、架構(gòu)優(yōu)勢(shì)凸顯
硬件級(jí)資源隔離:通過(guò)RIF單元確保M33核獨(dú)占關(guān)鍵外設(shè),避免核間沖突
能效精細(xì)控制:支持獨(dú)立電源域,M33可在A核休眠時(shí)單獨(dú)運(yùn)行
安全可靠:TrustZone技術(shù),為關(guān)鍵代碼提供硬件級(jí)保護(hù)
三、OpenAMP:異構(gòu)通信的橋梁
OpenAMP是異構(gòu)系統(tǒng)中核心間消息通信的開(kāi)源框架,基于RPMsg+共享內(nèi)存+中斷,讓Linux核和Cortex-M核可以可靠地傳遞消息和數(shù)據(jù),高效地共享數(shù)據(jù)或協(xié)調(diào)任務(wù)的機(jī)制,簡(jiǎn)化異構(gòu)多核開(kāi)發(fā)。
在STM32MP257中,典型實(shí)現(xiàn)方式包括remoteproc+virtio+RPMsg等。它的核心目標(biāo)是讓Cortex-A核和Cortex-M核協(xié)同工作,同時(shí)保持資源隔離和實(shí)時(shí)性能。
Remoteproc框架
STM32MP257使用了RemoteProc框架讓A核運(yùn)行的Linux系統(tǒng)可以更加輕松的和M核進(jìn)行通信控制,RemoteProc主要作用就是對(duì)遠(yuǎn)程處理器的生命周期進(jìn)行管理,即啟動(dòng)、停止遠(yuǎn)程處理器。該框架還會(huì)創(chuàng)建 RPMsg Virtio 設(shè)備。以下是RemoteProc的邏輯框圖:

圖1 RemoteProc運(yùn)行邏輯
在RemoteProc框架中,需要在Linux系統(tǒng)中將M核的固件通過(guò)命令加載到M核的內(nèi)存中。
RPMsg框架
RPMsg框架( Remote Processor Messaging Framework )則是實(shí)現(xiàn)對(duì)遠(yuǎn)程處理器信息傳遞。RPMsg是基于VirtIO的消息總線,它允許內(nèi)核驅(qū)動(dòng)程序與系統(tǒng)上可用的遠(yuǎn)程處理器進(jìn)行通信。通訊框架入下圖:

圖2 RPMSG框架
消息服務(wù)基于共享內(nèi)存,使用RPMsg 和 Virtio 框架,RemoteProc框架則控制遠(yuǎn)程處理器生命周期。信號(hào)通知( Mailbox )服務(wù)則基于內(nèi)部IPCC( Inter-Processor communication controller ),ST提供 OpenAMP相關(guān)庫(kù)。
Virtio(虛擬化模塊)
Virtio 是一個(gè)支持虛擬化的 I/O 框架,通過(guò)共享環(huán)形緩沖區(qū)(vring)提供高效的消息傳輸層。Virtio中有兩個(gè)單向的vring,分別用于處理器之間的消息傳遞,RX VRING 用于接收來(lái)自遠(yuǎn)程處理器的消息,TX VRING專用于將消息發(fā)送到遠(yuǎn)程處理器。
四、實(shí)戰(zhàn)演練:異核控制LED
基于異構(gòu)通訊框架,A核通過(guò)發(fā)送LED控制命令,驅(qū)動(dòng)M33核響應(yīng)并實(shí)現(xiàn)LDE燈的開(kāi)關(guān)操作。
在構(gòu)建前需要將開(kāi)發(fā)板設(shè)備樹(shù)中的gpio_led的藍(lán)燈關(guān)閉,關(guān)閉A核占用,設(shè)備樹(shù)中修改位置具體如下:

圖3 設(shè)備樹(shù)屏蔽藍(lán)燈
關(guān)閉后將設(shè)備樹(shù)單獨(dú)構(gòu)建并更新到開(kāi)發(fā)板中,具體方式請(qǐng)查閱《MYD-LD25X Linux 軟件開(kāi)發(fā)指南》中4.3章節(jié)。
在IDE中導(dǎo)入OpenAMP_TTY_echo_Led例程,導(dǎo)入完成后如下所示:

圖4 例程導(dǎo)入
該例程由官方例程O(píng)penAMP_TTY_echo修改,主要修改即為下圖中虛擬串口回調(diào)函數(shù)的框選部分:

圖5 回調(diào)函數(shù)修改
實(shí)現(xiàn)過(guò)程比較簡(jiǎn)單,基本是對(duì)A核的消息進(jìn)行了判斷處理,針對(duì)GPIO的主要控制使用了HAL_GPIO_WritePin函數(shù),該函數(shù)位于Drivers/BSP/stm32mp2xx_hal_gpio.c:

圖6 函數(shù)實(shí)現(xiàn)
程序運(yùn)行流程圖:

圖7OpenAMP_TTY_echo_Led流程圖
然后繼續(xù)構(gòu)建,點(diǎn)擊上圖4中的OpenAMP_TTY_echo_Led_CM33_NonSecure,然后點(diǎn)擊上方錘子右邊箭頭并選擇CA35TDCID_m33_ns_sign:

圖8編譯選擇
選擇后會(huì)立即構(gòu)建編譯,完成后在CA35TDCID_m33_ns_sign目錄中拷貝elf文件到開(kāi)發(fā)板中:

圖9拷貝文件
確保在開(kāi)發(fā)板中目錄結(jié)構(gòu)如下:

圖10 目錄結(jié)構(gòu)
輸入以下內(nèi)容執(zhí)行腳本,運(yùn)行后如圖所示:
root@myd-ld25x:~/OpenAMP_TTY_echo_Led# ./fw_cortex_m33.shstart

圖11 運(yùn)行程序
在A核輸入以下命令后臺(tái)監(jiān)控M核虛擬串口反饋:
root@myd-ld25x:~/OpenAMP_TTY_echo_Led# cat /dev/ttyRPMSG0 &root@myd-ld25x:~/OpenAMP_TTY_echo_Led#
輸入以下命令控制Led藍(lán)燈亮滅:
root@myd-ld25x:~/OpenAMP_TTY_echo_Led#echoon > /dev/ttyRPMSG0root@myd-ld25x:~/OpenAMP_TTY_echo_Led#echooff > /dev/ttyRPMSG0
結(jié)果如下:

圖12 運(yùn)行結(jié)果

圖13 米爾基于STM32MP257核心板及開(kāi)發(fā)板
-
STM32
+關(guān)注
關(guān)注
2302文章
11109瀏覽量
370328 -
Cortex
+關(guān)注
關(guān)注
2文章
219瀏覽量
48250 -
嵌入式系統(tǒng)設(shè)計(jì)
+關(guān)注
關(guān)注
0文章
14瀏覽量
8650 -
米爾電子
+關(guān)注
關(guān)注
1文章
172瀏覽量
990
發(fā)布評(píng)論請(qǐng)先 登錄
ARM Cortex-M33處理器的五大特色
【飛凌嵌入式】基于i.MX9352開(kāi)發(fā)板M核的FreeRTOS設(shè)計(jì)例程
樹(shù)莓派Pico 2發(fā)布,搭載RP2350雙核RISC-V和Arm Cortex-M33微控制器!
超強(qiáng)算力+實(shí)時(shí)響應(yīng)!米爾發(fā)布基于STM32MP25x核心板Debian系統(tǒng)
【米爾-STM32MP257開(kāi)發(fā)板試用體驗(yàn)】初次體驗(yàn)米爾-STM32MP257開(kāi)發(fā)板
怎么實(shí)現(xiàn)基于業(yè)界首款Cortex-M33雙核微控制器LPC55S69的電路設(shè)計(jì)?
ARMv8-M trustzone IOT安全之基于Cortex-M33核的TFM測(cè)試
在哪里可以找到支持Cortex-M33的“X-CUBE-CRYPTOLIB”?
FPGA云:基于Cortex-M33的平臺(tái)技術(shù)參考手冊(cè)
Cortex-M33 Cycle Model用戶指南
ST×米爾STM32MP25x線下培訓(xùn)會(huì)
ST×米爾STM32MP25x線下培訓(xùn)會(huì)倒計(jì)時(shí)12天
ST×米爾STM32MP25x高階實(shí)戰(zhàn)培訓(xùn)會(huì)
免費(fèi)丨米爾 STM32MP257開(kāi)發(fā)板有獎(jiǎng)試用

MYD-LD25X Cortex-M33實(shí)時(shí)核開(kāi)發(fā)實(shí)戰(zhàn)解析
評(píng)論