前言:
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核心板大小脑通信配置,包含设备树参数、内核配置清单和实测命令,方便你开发时快速查阅,也可以关注眺望电子公众号或者联系我们获取!
1938