爆火的机器人“大小脑”怎么协作?全志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
编辑设备树,在设备树中找到E906相关的设备树节点。设备树的默认配置是:
e906_rproc:e906_rproc@7130000{ mboxes=msgbox8, msgbox10; mbox-names='arm-kick','arm-standby';内存区域=riscvsram0_reserved、riscvsram1_reserved、rv_vdev0buffer、rv_vdev0vring0、rv_vdev0vring1、e906_dram_reserved;
内存映射=/* DA len PA *//* DSP RAM */0x200000x200000x20000, /* SRAM A2 */0x400000x240000x40000, /* DDR */0x80000000x37f000000x8000000, /* SRAM 空间0 */0x3ffc00000x400000x07280000, /* SRAM 空间1 */0x400000000x400000x072c0000, /* DRAM 空间*/0x400400000x3ffc00000x40040000;待机-ctrl-en=0x1;备用记录注册=0x07090114;状态='好的'; };
关键节点e906_rproc要重点配置三点:
mboxes:指定MSGBOX中断通道,“arm-kick”触发“小脑”工作,“arm-standby”通知待机状态;
memory-region:分配共享内存(SRAM+DDR保留空间),“大小大脑”必须访问相同的物理地址;
内存映射:绑定虚拟地址和物理地址以避免访问冲突。
重要提醒:后续“小脑”配置时,“小脑”的内存起始地址(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 地址配置:和“大脑”保持一致“Cerebellar”的运行地址必须与“Brain”设备树定义一致,否则会出现内存访问错误。路径:
/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=0x00x600000000x00x00a00000;无地图;};
2.2.2 组件配置:开启“沟通工具”a.进入RTOS环境:
cd~/TinaLinux/rtossourceenvsetup.shlunch_rtos,
选择t527_e906_demo;
b.打开配置界面:mrtos_menuconfig;
c.关键检查:
终端配置:选择UART4作为调试终端(用于后续连接电脑串口);
通讯组件:检查rpmsg客户端驱动(rpmsg客户端驱动与“大脑”进行通讯)并启用日志打印(方便调试);
d.编译固件:执行mrtos编译生成amp_rv0.bin(“Cerebellar”固件),路径在SDKbin目录下。
2.3第三步:唤醒“小脑”,建立连接启动旺旺电子T527开发板,进入TinaLinux控制台;
复制固件:将amp_rv0.bin复制到/lib/firmware目录下(“大脑”从这里加载“小脑”固件);
指定固件:
echoamp_rv0.bin /sys/class/remoteproc/remoteproc1/固件
启动“小脑”:
echostart /sys/class/remoteproc/remoteproc1/state;
连接终端:使用串口线将UART4与电脑连接。波特率为115200,此时可以看到“小大脑”的启动日志。输入ts查看任务状态——。“大脑”准备好了!
“三、实测验证:让“大小脑”秒级对话 “大脑”之间通信的本质是通过rpmsg创建一个“专属聊天窗口”(端点),并双向发送和接收数据。直接按照实际测量步骤,可重现整个过程!
3.1准备工作:安装测试工具执行./build.sh buildroot_menuconfig;
检查rpmsg demo 和rpmsgtest;
保存配置:/build.sh buildroot_saveconfig,重新编译文件系统并烧录。
3.2步骤1:“小脑”创建监听窗口在“Cebellar”串口终端中输入命令,创建2个“聊天窗口”:
建立监听:eptdev_bindtest2(创建2个名为test的端点);
cpu0eptdev_bind 测试2
验证状态:rpmsg_list_listen,显示“alive is 0”,说明已就绪。
cpu0rpmsg_list_listennamelistenlivetest20console1000
3.3步骤2:“大脑”创建通信节点在TinaLinux控制台中,创建“Cerebellar”监听窗口对应的客户端:
第一个节点:
rpmsg_demo -re906_rproc@7130000-c 测试
生成/dev/rpmsg1;
第二个节点:重复上述命令生成/dev/rpmsg2,输入ls /dev/rpmsg*查看节点信息;
验证节点:ls /dev/rpmsg*,可以看到2个通信节点和控制节点。此时“小脑”终端会提示“rpmsg1绑定成功” ——“聊天窗口”已打开!
3.4步骤3:双向通信实测(激动时刻!)测试1:“大脑”“小脑”发送指令
在Linux控制台输入:
echo'你好'/dev/rpmsg1echo'你好'/dev/rpmsg2
立即查看“小脑”终端,清晰接收数据:
测试2:“小脑”“大脑”传输数据
在“Cerebellar”终端中使用eptdev_send发送状态数据(格式:eptdev_send节点ID数据):
eptdev_send1'你好E906'
返回“大脑”控制台,读取数据:
猫/dev/rpmsg1
测试三:“小脑”与“大脑”持续沟通
直接显示“小脑”发送的所有信息,支持连续发送和接收,稳定性最大化!
cpu0eptdev_send1'hello E906'将发送hello E906到rpmsg0cpu0eptdev_send1'hello E906'将发送hello E906到rpmsg0cpu0eptdev_send1'hello E906'将发送hello E906到rpmsg0cpu0eptdev_send1'hello E906'将发送hello E906 到rpmsg0cpu0eptdev_send1'hello E906 '将发送hello E906 到rpmsg0cpu0eptdev_send1'hello E906 '将发送hello E906 到rpmsg0cpu0eptdev_send1'hello E906 '将发送hello E906 到rpmsg0
大核端总会收到小核传来的信息。
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核心板大小脑通信配置,包括设备树参数、内核配置列表和实际测试命令,方便您在开发时快速查看,也可以关注旺旺电子公众号或联系我们获取!