扫码加入

  • 正文
  • 相关推荐
申请入驻 产业图谱

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

01/10 10:23
1938
加入交流群
扫码加入
获取工程师必备礼包
参与热点资讯讨论

前言:

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 = <&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=0x60000000 
CONFIG_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 → source envsetup.sh → lunch_rtos,

选择t527_e906_demo;

b. 打开配置界面:mrtos_menuconfig;


c. 关键勾选:

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

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

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

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

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

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

③ 指定固件:

echo amp_rv0.bin > /sys/class/remoteproc/remoteproc1/firmware

④ 启动“小脑”:

echo start > /sys/class/remoteproc/remoteproc1/state; 

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

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

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

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

执行./build.sh buildroot_menuconfig;

勾选rpmsg demo和rpmsg test;

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

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

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

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

cpu0 >eptdev_bind test 2

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

cpu0 >rpmsg_list_listen 
name listen alive 
test
 2 0 console 100 0 

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

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

第一个节点:

rpmsg_demo -r e906_rproc@7130000 -c test

生成/dev/rpmsg1;

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

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

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

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

在Linux控制台输入:

echo"hello" > /dev/rpmsg1 
echo"hello" > /dev/rpmsg2

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

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

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

eptdev_send 1 "hello E906"

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

cat /dev/rpmsg1 

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

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

cpu0 >eptdev_send 1 "hello E906 "
will send hello E906 to rpmsg0
cpu0 >eptdev_send 1 "hello E906 "
will send hello E906 to rpmsg0
cpu0 >eptdev_send 1 "hello E906 "
will send hello E906 to rpmsg0
cpu0 >eptdev_send 1 "hello E906 "
will send hello E906 to rpmsg0
cpu0 >eptdev_send 1 "hello E906 "
will send hello E906 to rpmsg0
cpu0 >eptdev_send 1 "hello E906 "
will send hello E906 to rpmsg0
cpu0 >eptdev_send 1 "hello E906 "
will send hello E906 to rpmsg0

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

 3.5  关闭通信

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

echo 0 > /sys/class/rpmsg/rpmsg_ctrl-e906_rproc@0/close 
echo 1 > /sys/class/rpmsg/rpmsg_ctrl-e906_rproc@0/close

四、小结

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

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

相关推荐