前言:
2025年的科技圈,RISC-V架構(gòu)迎來(lái)爆發(fā)式增長(zhǎng),而機(jī)器人領(lǐng)域最火的“大小腦”架構(gòu)也正是異構(gòu)計(jì)算的核心落地場(chǎng)景——“大腦”負(fù)責(zé)算法決策,“小腦”掌控實(shí)時(shí)控制,二者無(wú)縫協(xié)作才能讓智能設(shè)備真正“活”起來(lái)。
全志T527芯片堪稱(chēng)這一架構(gòu)的完美載體:八核Cortex-A55處理AI推理、場(chǎng)景決策;玄鐵E906 RISC-V核以FreeRTOS為底座實(shí)現(xiàn)低功耗實(shí)時(shí)控制。但如何讓這雙核心高效“對(duì)話(huà)”?
這篇實(shí)戰(zhàn)筆記結(jié)合最新行業(yè)趨勢(shì),基于眺望電子T527核心板,手把手教你搞定從配置到驗(yàn)證的全流程,技術(shù)干貨直接復(fù)用!
一、“大小腦”如何分工?
機(jī)器人的“大小腦”分工,完全借鑒了生物學(xué)邏輯——大腦管決策,小腦管執(zhí)行,二者協(xié)同才能兼顧智能與效率。這也是全志T527異構(gòu)架構(gòu)的設(shè)計(jì)核心:
●「大腦」Cortex-A55:像人類(lèi)大腦一樣,負(fù)責(zé)復(fù)雜認(rèn)知任務(wù)。比如解析傳感器數(shù)據(jù)、運(yùn)行AI算法做場(chǎng)景判斷、管理網(wǎng)絡(luò)連接,適合處理非實(shí)時(shí)但高復(fù)雜度的工作,依托Linux系統(tǒng)的多任務(wù)能力高效運(yùn)轉(zhuǎn)。
●「小腦」RISC-V(玄鐵E906):類(lèi)似人類(lèi)小腦,專(zhuān)注實(shí)時(shí)執(zhí)行與精準(zhǔn)控制。比如電機(jī)驅(qū)動(dòng)、外設(shè)響應(yīng)、低功耗數(shù)據(jù)采集,要求微秒級(jí)響應(yīng)速度,F(xiàn)reeRTOS的硬實(shí)時(shí)特性剛好匹配需求。
而二者協(xié)作的關(guān)鍵,在于一套高效的“溝通機(jī)制”:
全志T527用MSGBOX做中斷通知,靠remoteproc+rpmsg+virtio共享內(nèi)存,既保證通信速度,又降低開(kāi)發(fā)門(mén)檻,直接基于成熟框架快速落地。
二、實(shí)戰(zhàn)配置
2.1第一步:給“大腦”做內(nèi)核配置(Cortex-A核)
“大腦”要先做好準(zhǔn)備,才能順暢對(duì)接“小腦”,核心是設(shè)備樹(shù)配置和內(nèi)核模塊開(kāi)啟。
2.1.1 設(shè)備樹(shù)配置
設(shè)備樹(shù)就像“大腦”的“通信說(shuō)明書(shū)”,要明確“小腦”的內(nèi)存范圍、通信通道等關(guān)鍵信息,路徑:
~/TinaLinux/device/config/chips/t527/configs/demo_linux_aiot/linux-5.15/board.dts

編輯設(shè)備樹(shù),在設(shè)備樹(shù)中找到E906相關(guān)的設(shè)備樹(shù)節(jié)點(diǎn),設(shè)備樹(shù)默認(rèn)配置為:
e906_rproc:e906_rproc@7130000{ mboxes = <&msgbox?8>, <&msgbox?10>; mbox-names ="arm-kick","arm-standby"; memory-region = <&riscvsram0_reserved>, <&riscvsram1_reserved>, <&rv_vdev0buffer>, <&rv_vdev0vring0>, <&rv_vdev0vring1>,<&e906_dram_reserved>;
memory-mappings = /* < DA ? ? len ? ? PA > */ /* DSP RAM */ 0x20000? ?0x20000? ? ?0x20000?>, /* SRAM A2 */ 0x40000? ?0x24000? ? ?0x40000?>, /* DDR */ 0x8000000?0x37f00000? 0x8000000?>, /* SRAM SPACE 0 */ 0x3ffc0000? ? 0x40000? ? ?0x07280000?>, /* SRAM SPACE 1 */ 0x40000000? ? 0x40000? ? ?0x072c0000?>, /* DRAM SPACE */ 0x40040000? ? 0x3ffc0000? 0x40040000>; standby-ctrl-en = <0x1>; standby-record-reg = <0x07090114>; status ="okay"; };
關(guān)鍵節(jié)點(diǎn)e906_rproc要重點(diǎn)配置3點(diǎn):
mboxes:指定MSGBOX中斷通道,“arm-kick”觸發(fā)“小腦”工作,“arm-standby”通知待機(jī)狀態(tài);
memory-region:分配共享內(nèi)存(SRAM+DDR預(yù)留空間),“大小腦”必須訪(fǎng)問(wèn)同一物理地址;
memory-mappings:綁定虛擬地址與物理地址,避免訪(fǎng)問(wèn)沖突。
重點(diǎn)提醒:“小腦”的內(nèi)存起始地址(0x60000000)和長(zhǎng)度(0xa00000),后續(xù)“小腦”配置必須完全對(duì)齊,否則會(huì)出現(xiàn)通信失敗!
2.1.2 內(nèi)核模塊,開(kāi)啟“通信協(xié)議”
在SDK根目錄執(zhí)行./build.sh menuconfig,勾選以下核心配置:
? CONFIG_MAILBOX=y(啟用郵箱控制器,負(fù)責(zé)“敲門(mén)提醒”); ? CONFIG_REMOTEPROC=y(遠(yuǎn)程處理器管理框架,負(fù)責(zé)“喚醒小腦”); ? CONFIG_RPMSG=y(核間通信協(xié)議,負(fù)責(zé)“語(yǔ)言翻譯”); ? CONFIG_RPMSG_CHAR=y(字符設(shè)備接口,方便用戶(hù)層操作)。
勾選后保存編譯,“大腦”的通信接口就就緒了。
2.2第二步:給“小腦”裝“通信接口”(RISC-V側(cè))
“小腦”要精準(zhǔn)響應(yīng)“大腦”指令,必須做好內(nèi)存對(duì)齊和組件配置,確保“語(yǔ)言互通”。
2.2.1 地址配置:和“大腦”保持一致
“小腦”的運(yùn)行地址必須和“大腦”設(shè)備樹(shù)定義一致,否則會(huì)出現(xiàn)內(nèi)存訪(fǎng)問(wèn)錯(cuò)誤,路徑:
~/TinaLinux/rtos/lichee/rtos/projects/t527_e906/demo。

打開(kāi)freertos.lds.S,確認(rèn)內(nèi)存參數(shù)由CONFIG_ARCH_START_ADDRESS和CONFIG_ARCH_MEM_LENGTH定義;
查看defconfig文件,確保參數(shù)匹配:
CONFIG_ARCH_START_ADDRESS=0x60000000CONFIG_ARCH_MEM_LENGTH=0xa00000
確認(rèn)和linux內(nèi)核中的dts配置一致:
e906_dram_reserved: e906_dram@60000000{ reg = <0x0?0x60000000?0x0?0x00a00000>; no-map;};
2.2.2 組件配置:開(kāi)啟“溝通工具”
a. 進(jìn)入RTOS環(huán)境:
cd~/TinaLinux/rtos →sourceenvsetup.sh → lunch_rtos,
選擇t527_e906_demo;

b. 打開(kāi)配置界面:mrtos_menuconfig;

c. 關(guān)鍵勾選:
終端配置:選中UART4作為調(diào)試終端(后續(xù)連接電腦串口用);
通信組件:勾選rpmsg client driver(rpmsg客戶(hù)端驅(qū)動(dòng),和“大腦”互通),開(kāi)啟日志打印(方便調(diào)試);

d. 編譯固件:執(zhí)行mrtos編譯生成amp_rv0.bin(“小腦”固件),路徑在SDKbin目錄下。
2.3第三步:?jiǎn)拘选靶∧X”,建立連接
① 啟動(dòng)眺望電子T527開(kāi)發(fā)板,進(jìn)入TinaLinux控制臺(tái);
② 拷貝固件:將amp_rv0.bin復(fù)制到/lib/firmware目錄(“大腦”從這里加載“小腦”固件);
③ 指定固件:
echoamp_rv0.bin > /sys/class/remoteproc/remoteproc1/firmware
④ 啟動(dòng)“小腦”:
echostart > /sys/class/remoteproc/remoteproc1/state;

⑤ 連接終端:用串口線(xiàn)連接UART4和電腦,波特率115200,此時(shí)能看到“小腦”啟動(dòng)日志,輸入ts可查看任務(wù)狀態(tài)——“大小腦”已準(zhǔn)備就緒!

三、實(shí)測(cè)驗(yàn)證:讓“大小腦”秒級(jí)對(duì)話(huà) “
大小腦”通信的本質(zhì),是通過(guò)rpmsg創(chuàng)建“專(zhuān)屬聊天窗口”(端點(diǎn)),雙向收發(fā)數(shù)據(jù)。下面直接上實(shí)測(cè)步驟,全程可復(fù)現(xiàn)!
3.1準(zhǔn)備工作:安裝測(cè)試工具
執(zhí)行./build.sh buildroot_menuconfig;
勾選rpmsg demo和rpmsgtest;
保存配置:./build.sh buildroot_saveconfig,重新編譯文件系統(tǒng)并燒錄。

3.2步驟1:“小腦”創(chuàng)建監(jiān)聽(tīng)窗口
在“小腦”串口終端輸入命令,建立2個(gè)“聊天窗口”:
建立監(jiān)聽(tīng):eptdev_bindtest2(創(chuàng)建名為test的2個(gè)端點(diǎn));
cpu0>eptdev_bind test2
驗(yàn)證狀態(tài):rpmsg_list_listen,顯示“alive為0”說(shuō)明就緒。
cpu0>rpmsg_list_listennamelisten alivetest20console1000
3.3步驟2:“大腦”創(chuàng)建通信節(jié)點(diǎn)
在TinaLinux控制臺(tái),對(duì)應(yīng)“小腦”的監(jiān)聽(tīng)窗口創(chuàng)建客戶(hù)端:
第一個(gè)節(jié)點(diǎn):
rpmsg_demo -re906_rproc@7130000-c test
生成/dev/rpmsg1;

第二個(gè)節(jié)點(diǎn):重復(fù)上述命令,生成/dev/rpmsg2,輸入ls/dev/rpmsg*查看節(jié)點(diǎn)信息;

驗(yàn)證節(jié)點(diǎn):ls/dev/rpmsg*,能看到2個(gè)通信節(jié)點(diǎn)和控制節(jié)點(diǎn),此時(shí)“小腦”終端會(huì)提示“rpmsg1 binding success”——“聊天窗口”已打通!

3.4步驟3:雙向通信實(shí)測(cè)(激動(dòng)時(shí)刻!)
測(cè)試1:“大腦”→“小腦”發(fā)指令
在Linux控制臺(tái)輸入:
echo"hello"> /dev/rpmsg1echo"hello"> /dev/rpmsg2
立刻查看“小腦”終端,清晰收到數(shù)據(jù):

測(cè)試2:“小腦”→“大腦”傳數(shù)據(jù)
在“小腦”終端用eptdev_send發(fā)送狀態(tài)數(shù)據(jù)(格式:eptdev_send <節(jié)點(diǎn)ID> <數(shù)據(jù)>):
eptdev_send1"hello E906"
回到“大腦”控制臺(tái),讀取數(shù)據(jù):
cat/dev/rpmsg1

測(cè)試3:“小腦”“大腦”持續(xù)通訊
直接顯示“小腦”發(fā)送的所有信息,支持持續(xù)收發(fā),穩(wěn)定性拉滿(mǎn)!
cpu0>eptdev_send1"hello E906 "willsend hello E906 to rpmsg0cpu0>eptdev_send1"hello E906 "willsend hello E906 to rpmsg0cpu0>eptdev_send1"hello E906 "willsend hello E906 to rpmsg0cpu0>eptdev_send1"hello E906 "willsend hello E906 to rpmsg0cpu0>eptdev_send1"hello E906 "willsend hello E906 to rpmsg0cpu0>eptdev_send1"hello E906 "willsend hello E906 to rpmsg0cpu0>eptdev_send1"hello E906 "willsend hello E906 to rpmsg0
大核端則會(huì)一直收到小核傳輸過(guò)來(lái)的信息。

3.5關(guān)閉通信
無(wú)需協(xié)作時(shí),在“大腦”終端執(zhí)行:
echo0 > /sys/class/rpmsg/rpmsg_ctrl-e906_rproc@0/closeecho1 > /sys/class/rpmsg/rpmsg_ctrl-e906_rproc@0/close
四、小結(jié)
這套“大小腦”協(xié)作方案,正契合當(dāng)前AIoT和機(jī)器人的爆發(fā)需求,全志T527的方案基于Linux主線(xiàn)框架和成熟FreeRTOS組件,剛好適配RISC-V的開(kāi)源趨勢(shì),既能降低研發(fā)成本,又能快速對(duì)接AIoT場(chǎng)景,是中小企業(yè)切入智能硬件賽道的高性?xún)r(jià)比選擇。
如果您想獲取更完整的全志T527核心板大小腦通信配置,包含設(shè)備樹(shù)參數(shù)、內(nèi)核配置清單和實(shí)測(cè)命令,方便你開(kāi)發(fā)時(shí)快速查閱,也可以關(guān)注眺望電子公眾號(hào)或者聯(lián)系我們獲取!
-
嵌入式
+關(guān)注
關(guān)注
5198文章
20442瀏覽量
333963 -
RISC-V
+關(guān)注
關(guān)注
48文章
2887瀏覽量
52936 -
全志T527
+關(guān)注
關(guān)注
0文章
24瀏覽量
722
發(fā)布評(píng)論請(qǐng)先 登錄
如何用OpenCV進(jìn)行手勢(shì)識(shí)別--基于米爾全志T527開(kāi)發(fā)板
全志T527國(guó)產(chǎn)核心板及米爾配套開(kāi)發(fā)板批量上市!
米爾全志T527開(kāi)發(fā)板開(kāi)箱驗(yàn)機(jī)
米爾全志T527開(kāi)發(fā)板上電與連接WIFI
國(guó)產(chǎn)芯,米爾基于全志T527的商顯主板及工業(yè)微型控制器
【米爾首發(fā)-全志T527開(kāi)發(fā)板-國(guó)產(chǎn)8核A55-免費(fèi)試用】米爾全志T527開(kāi)發(fā)板開(kāi)箱驗(yàn)機(jī)
【米爾首發(fā)-全志T527開(kāi)發(fā)板-國(guó)產(chǎn)8核A55-免費(fèi)試用】米爾全志T527開(kāi)發(fā)板上電與連接WIFI
快速部署!米爾全志T527開(kāi)發(fā)板的OpenCV行人檢測(cè)方案指南
首發(fā)!全志T527第一款核心板,高性能8核處理器帶AI NPU
米爾這款首發(fā)的國(guó)產(chǎn)核心板批量上市了!全志T527
全志科技發(fā)布新一代強(qiáng)勁性能主控芯片T527,助力行業(yè)智能
爆火的機(jī)器人“大小腦”怎么協(xié)作?全志T527核間通訊實(shí)戰(zhàn)指南!
評(píng)論