金融投资理财

爆火的机器人“大小脑”怎么协作?全志T527核间通讯实战指南!

前言:

2025年的科技圈,RISC-V架构迎来爆发式增长,而机器人领域最火的“大小脑”架构也正是异构计算的核心落地场景——“大脑”负责算法决策,“小脑”掌控实时控制,二者无缝协作才能让智能设备真正“活”起来。

全志T527芯片堪称这一架构的完美载体:八核Cortex-A55处理AI推理、场景决策;玄铁E906 RISC-V核以FreeRTOS为底座实现低功耗实时控制。但如何让这双核心高效“对话”?

这篇实战笔记结合最新行业趋势,基于眺望电子T527核心板,手把手教你搞定从配置到验证的全流程,技术干货直接复用!

一、“大小脑”如何分工?

机器人的“大小脑”分工,完全借鉴了生物学逻辑——大脑管决策,小脑管执行,二者协同才能兼顾智能与效率。这也是全志T527异构架构的设计核心:

「大脑」Cortex-A55:像人类大脑一样,负责复杂认知任务。比如解析传感器数据、运行AI算法做场景判断、管理网络连接,适合处理非实时但高复杂度的工作,依托Linux系统的多任务能力高效运转。

「小脑」RISC-V(玄铁E906):类似人类小脑,专注实时执行与精准控制。比如电机驱动、外设响应、低功耗数据采集,要求微秒级响应速度,FreeRTOS的硬实时特性刚好匹配需求。

而二者协作的关键,在于一套高效的“沟通机制”:

全志T527用MSGBOX做中断通知,靠remoteproc+rpmsg+virtio共享内存,既保证通信速度,又降低开发门槛,直接基于成熟框架快速落地。

二、实战配置

2.1第一步:给“大脑”做内核配置(Cortex-A核)

“大脑”要先做好准备,才能顺畅对接“小脑”,核心是设备树配置和内核模块开启。

2.1.1 设备树配置

设备树就像“大脑”的“通信说明书”,要明确“小脑”的内存范围、通信通道等关键信息,路径:

~/TinaLinux/device/config/chips/t527/configs/demo_linux_aiot/linux-5.15/board.dts

b2a06620-ec29-11f0-8ce9-92fbcf53809c.png

编辑设备树,在设备树中找到E906相关的设备树节点,设备树默认配置为:

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"; };

关键节点e906_rproc要重点配置3点:

mboxes:指定MSGBOX中断通道,“arm-kick”触发“小脑”工作,“arm-standby”通知待机状态;

memory-region:分配共享内存(SRAM+DDR预留空间),“大小脑”必须访问同一物理地址;

memory-mappings:绑定虚拟地址与物理地址,避免访问冲突。

重点提醒:“小脑”的内存起始地址(0x60000000)和长度(0xa00000),后续“小脑”配置必须完全对齐,否则会出现通信失败!

2.1.2 内核模块,开启“通信协议”

SDK根目录执行./build.sh menuconfig,勾选以下核心配置:

CONFIG_MAILBOX=y(启用邮箱控制器,负责“敲门提醒”); CONFIG_REMOTEPROC=y(远程处理器管理框架,负责“唤醒小脑”); CONFIG_RPMSG=y(核间通信协议,负责“语言翻译”); CONFIG_RPMSG_CHAR=y(字符设备接口,方便用户层操作)。

勾选后保存编译,“大脑”的通信接口就就绪了。

2.2第二步:给“小脑”装“通信接口”(RISC-V侧)

“小脑”要精准响应“大脑”指令,必须做好内存对齐和组件配置,确保“语言互通”。

2.2.1 地址配置:和“大脑”保持一致

“小脑”的运行地址必须和“大脑”设备树定义一致,否则会出现内存访问错误,路径:

~/TinaLinux/rtos/lichee/rtos/projects/t527_e906/demo。

打开freertos.lds.S,确认内存参数由CONFIG_ARCH_START_ADDRESS和CONFIG_ARCH_MEM_LENGTH定义;

查看defconfig文件,确保参数匹配:

CONFIG_ARCH_START_ADDRESS=0x60000000CONFIG_ARCH_MEM_LENGTH=0xa00000

确认和linux内核中的dts配置一致:

e906_dram_reserved: e906_dram@60000000{ reg = <0x0 0x60000000 0x0 0x00a00000>; no-map;};

2.2.2 组件配置:开启“沟通工具”

a. 进入RTOS环境:

cd~/TinaLinux/rtos →sourceenvsetup.sh → lunch_rtos,

选择t527_e906_demo;

b2c4a33c-ec29-11f0-8ce9-92fbcf53809c.png

b. 打开配置界面:mrtos_menuconfig;

c. 关键勾选:

终端配置:选中UART4作为调试终端(后续连接电脑串口用);

通信组件:勾选rpmsg client driver(rpmsg客户端驱动,和“大脑”互通),开启日志打印(方便调试);

b2e5d7f0-ec29-11f0-8ce9-92fbcf53809c.png

d. 编译固件:执行mrtos编译生成amp_rv0.bin(“小脑”固件),路径在SDKbin目录下。

2.3第三步:唤醒“小脑”,建立连接

① 启动眺望电子T527开发板,进入TinaLinux控制台;

② 拷贝固件:将amp_rv0.bin复制到/lib/firmware目录(“大脑”从这里加载“小脑”固件);

③ 指定固件:

echoamp_rv0.bin > /sys/class/remoteproc/remoteproc1/firmware

④ 启动“小脑”:

echostart > /sys/class/remoteproc/remoteproc1/state;

b2f1a59e-ec29-11f0-8ce9-92fbcf53809c.png

⑤ 连接终端:用串口线连接UART4和电脑,波特率115200,此时能看到“小脑”启动日志,输入ts可查看任务状态——“大小脑”已准备就绪!

b301b704-ec29-11f0-8ce9-92fbcf53809c.png

三、实测验证:让“大小脑”秒级对话 “

大小脑”通信的本质,是通过rpmsg创建“专属聊天窗口”(端点),双向收发数据。下面直接上实测步骤,全程可复现!

3.1准备工作:安装测试工具

执行./build.sh buildroot_menuconfig;

勾选rpmsg demo和rpmsgtest;

保存配置:./build.sh buildroot_saveconfig,重新编译文件系统并烧录。

b30c4cf0-ec29-11f0-8ce9-92fbcf53809c.png

3.2步骤1:“小脑”创建监听窗口

在“小脑”串口终端输入命令,建立2个“聊天窗口”:

建立监听:eptdev_bindtest2(创建名为test的2个端点);

cpu0>eptdev_bind test2

验证状态:rpmsg_list_listen,显示“alive为0”说明就绪。

cpu0>rpmsg_list_listennamelisten alivetest20console1000

3.3步骤2:“大脑”创建通信节点

在TinaLinux控制台,对应“小脑”的监听窗口创建客户端:

第一个节点:

rpmsg_demo -re906_rproc@7130000-c test

生成/dev/rpmsg1;

b319a026-ec29-11f0-8ce9-92fbcf53809c.png

第二个节点:重复上述命令,生成/dev/rpmsg2,输入ls/dev/rpmsg*查看节点信息;

b326cdc8-ec29-11f0-8ce9-92fbcf53809c.png

验证节点:ls/dev/rpmsg*,能看到2个通信节点和控制节点,此时“小脑”终端会提示“rpmsg1 binding success”——“聊天窗口”已打通!

b3336bc8-ec29-11f0-8ce9-92fbcf53809c.png

3.4步骤3:双向通信实测(激动时刻!)

测试1:“大脑”→“小脑”发指令

在Linux控制台输入:

echo"hello"> /dev/rpmsg1echo"hello"> /dev/rpmsg2

立刻查看“小脑”终端,清晰收到数据:

b3406bd4-ec29-11f0-8ce9-92fbcf53809c.png

测试2:“小脑”→“大脑”传数据

在“小脑”终端用eptdev_send发送状态数据(格式:eptdev_send <节点id> <数据> ):

eptdev_send1"hello E906"

回到“大脑”控制台,读取数据:

cat/dev/rpmsg1

b34b71aa-ec29-11f0-8ce9-92fbcf53809c.png

测试3:“小脑”“大脑”持续通讯

直接显示“小脑”发送的所有信息,支持持续收发,稳定性拉满!

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

大核端则会一直收到小核传输过来的信息。

b3553fd2-ec29-11f0-8ce9-92fbcf53809c.png

3.5关闭通信

无需协作时,在“大脑”终端执行:

echo0 > /sys/class/rpmsg/rpmsg_ctrl-e906_rproc@0/closeecho1 > /sys/class/rpmsg/rpmsg_ctrl-e906_rproc@0/close

四、小结

这套“大小脑”协作方案,正契合当前AIoT和机器人的爆发需求,全志T527的方案基于Linux主线框架和成熟FreeRTOS组件,刚好适配RISC-V的开源趋势,既能降低研发成本,又能快速对接AIoT场景,是中小企业切入智能硬件赛道的高性价比选择。

如果您想获取更完整的全志T527核心板大小脑通信配置,包含设备树参数、内核配置清单和实测命令,方便你开发时快速查阅,也可以关注眺望电子公众号或者联系我们获取!

  • 随机文章
  • 热门文章
  • 热评文章

相关推荐