Cortex-A7 子系统开发与使用
1. 准备工作
- 开发环境
- Ubuntu22.04 虚拟机或者主机
- Luckfox_Lume_SDK_260427.tar.gz
- 硬件准备:
- Luckfox Lume 主板
- USB 转 TTL 串口模块 ×2
- USB Type-A to Type-C 数据线
- 100M/1000M 以太网线缆
- 路由器(用于开发板网络连接)
2. Cortex-A7(CPU2) Baremetal 测试
本章节介绍如何编译并运行 Cortex-A7(CPU2)Baremetal Demo。编译完成后,可将生成的固件传输至开发板,并由 Linux 侧加载运行。
2.1 编译 Baremetal Demo
进入 {SDK}/rtos/lichee/baremetal 目录
执行 ./build.sh config 命令,选择对应方案,这里以 t153 demo 为例:
~/{SDK}/rtos/lichee/baremetal$ ./build.sh config
Welcome to mkscript setup progress
All available bare_project:
0. mr153_e907
1. t153
2. t153_e907
3. t536
4. t536_e907
Choice [t153]: 1
All available bare_board:
0. bga_demo
1. demo
Choice [demo]: 1
INFO: Prepare executive of tools ...
INFO: ./tools/gcc-arm-melis-eabi-8-2019-q3-update ready ...
#
# configuration written to .config
#
INFO: use ./projects/t153/demo/sun8iw22p1_t153_demo_defconfig ...执行 ./build.sh 编译,得到
{SDK}/rtos/lichee/baremetal/out/t153/demo/image/t153_demo.elf固件
文件 说明 t153_demo.bin 二进制镜像 t153_demo.elf 带符号表、段信息、调试信息的可执行文件,用来给 Linux 端加载 t153_demo.map 内存布局映射表
2.2 运行 Baremetal Demo
将 t153_demo.elf 上传到开发板,文件传输可选择 adb 或 scp 任意一种方式即可,无需同时执行两种方式。
- 使用 adb 上传:
adb push t153_demo.elf /lib/firmware/ - 使用 scp 上传:
scp t153_demo.elf root@<ip>:/lib/firmware/
# eg: scp t153_demo.elf root@192.168.xxx.xxx:/lib/firmware/
- 使用 adb 上传:
将 ELF 镜像重命名为 amp_arm_bare.bin:
mv /lib/firmware/t153_demo.elf /lib/firmware/amp_arm_bare.bin连接子系统 UART(RX:PD14 TX:PD15,串口波特率设置为 115200。) 串口,子系统 UART 引脚如下:


执行以下命令启动 Cortex-A7(CPU2)从核系统:
echo start > /sys/class/remoteproc/remoteproc2/state如果通过调试串口登录系统,可看到如下启动日志输出:
root@luckfox:~# echo start > /sys/class/remoteproc/remoteproc2/state
[ 60.830706] remoteproc remoteproc2: powering up arm_baremetal_rproc
[ 60.908783] remoteproc remoteproc2: using private firmware, skip checking here
[ 60.916930] remoteproc remoteproc2: Booting fw image amp_arm_bare.bin, size 1042272
[ 60.925521] remoteproc remoteproc2: load fw from filesystem, filename: amp_arm_bare.bin
[ 60.934704] remoteproc remoteproc2: sunxi_rproc_elf_load_segments,989 find segments err
[ 61.060908] CPU2 killed.
[ 61.064807] remoteproc2#vdev0buffer: assigned reserved memory node vdev0buffer@43c44000
[ 61.074527] virtio_rpmsg_bus virtio0: rpmsg host is online
[ 61.080798] remoteproc2#vdev0buffer: registered virtio0 (type 7)
[ 61.087650] remoteproc remoteproc2: remote processor arm_baremetal_rproc is now up子系统 UART 会输出 Letter Shell 终端信息:

2.3 Rpmsg 通信测试
- 在 Baremetal 端串口输入以下命令,启动 RPMsg 测试程序:
hal_rpmsg_test - 在 Linux 端执行以下命令,通过 RPMsg 设备节点向 Baremetal 端发送测试数据:
echo hello > /dev/rpmsg_test - 送成功后,Baremetal 端串口将显示如下接收到的数据内容:

3. Cortex-A7(CPU3) FreeRTOS 测试
本章节介绍如何编译并运行 Cortex-A7(CPU2)FreeRTOS。编译完成后,可将生成的固件传输至开发板,并由 Linux 侧加载运行。
3.1 编译 FreeRTOS Demo
进入 {SDK}/rtos/ 目录,设置环境变量。
source envsetup.sh执行 ./build.sh config 命令,选择对应方案,这里以 t153 demo 为例:
~/{SDK}/rtos$ lunch_rtos
last=t153_demo
You're building on Linux
Lunch menu... pick a combo:
1. ai985_e906_scanp_fastboot
2. mr153_e907_evb1
3. mr527_e906_evb
4. mr536_e907_evb1
5. t153_bga_demo
6. t153_demo
7. t153_demo_smp
8. t153_e907_bga_demo
9. t153_e907_demo
10. t536_demo
11. t536_demo_smp
12. t536_e907_demo
Which would you like? [Default t153_demo]: 6
select=6...
t153/demo
'/home/luckfox_lume/rtos/lichee/rtos/projects/t153/demo/defconfig' -> '/home/luckfox_lume/rtos/lichee/rtos/.config'
No toolchain: /home/luckfox_lume/rtos/lichee/rtos/tools/gcc-arm-melis-eabi-8-2019-q3-update.tar.gz
No toolchain: /home/luckfox_lume/rtos/lichee/rtos/tools/gcc-arm-melis-eabi-8-2019-q3-update.tar.xz
Can not uncompress toolchain by defconfig
============================================
RTOS_BUILD_TOP=/home/luckfox_lume/rtos
RTOS_TARGET_ARCH=arm
RTOS_TARGET_CHIP=sun8iw22p1
RTOS_TARGET_DEVICE=t153
RTOS_PROJECT_NAME=t153_demo
============================================
Run mrtos_menuconfig to config rtos
Run m or mrtos to build rtos执行
mrtos编译,得到{SDK}/rtos/lichee/rtos/build/t153_demo/img/rt_system.elf固件
文件 说明 rt_system.bin 二进制镜像 rt_system.elf 带符号表、段信息、调试信息的可执行文件,用来给 Linux 端加载 rt_system.map 内存布局映射表 rt_system.syms 符号导出表 sys_config.fex RTOS 配置文件,文本格式 sys_config.bin RTOS 可加载配置文件
3.2 运行 FreeRTOS Demo
将 rt_system.elf 上传到开发板,文件传输可选择 adb 或 scp 任意一种方式即可,无需同时执行两种方式。
- 使用 adb 上传:
adb push rt_system.elf /lib/firmware/ - 使用 scp 上传:
scp rt_system.elf root@<ip>:/lib/firmware/
# eg: scp rt_system.elf root@192.168.xxx.xxx:/lib/firmware/
- 使用 adb 上传:
将 ELF 镜像重命名为 amp_arm_rtos.bin:
mv /lib/firmware/rt_system.elf /lib/firmware/amp_arm_rtos.bin连接子系统 UART(RX:PD14 TX:PD15,串口波特率设置为 115200。) 串口,子系统 UART 引脚如下:


执行以下命令启动 Cortex-A7(CPU3)从核系统:
echo start > /sys/class/remoteproc/remoteproc1/state如果通过调试串口登录系统,可看到如下启动日志输出:
root@luckfox:~# echo start > /sys/class/remoteproc/remoteproc1/state
[ 1934.011885] remoteproc remoteproc1: powering up arm_rtos_rproc
[ 1934.162756] remoteproc remoteproc1: using private firmware, skip checking here
[ 1934.170829] remoteproc remoteproc1: Booting fw image amp_arm_rtos.bin, size 1966672
[ 1934.179411] remoteproc remoteproc1: load fw from filesystem, filename: amp_arm_rtos.bin
[ 1934.188444] sunxi-rproc soc@3000000:arm_rtos_rproc@0: handle vendor resource, type: 129
[ 1934.197413] sunxi-rproc soc@3000000:arm_rtos_rproc@0: add trace mem 'aw_trace_log', da: 0x43d58a00, len: 4096
[ 1934.208571] remoteproc remoteproc1: firmware version: UTS - Wed, 29 Apr 2026 20:30:17 +0800
[ 1934.208571] Compile Time - 20:30:17
[ 1934.332092] CPU3 killed.
[ 1934.335826] remoteproc1#vdev0buffer: assigned reserved memory node vdev0buffer@43c00000
[ 1934.345323] virtio_rpmsg_bus virtio0: rpmsg host is online
[ 1934.351564] remoteproc1#vdev0buffer: registered virtio0 (type 7)
[ 1934.358366] remoteproc remoteproc1: remote processor arm_rtos_rproc is now up
root@luckfox:~# [ 1934.613095] virtio_rpmsg_bus virtio0: creating channel sunxi,rpmsg_ctrl addr 0x400子系统 UART 会输出 Shell 终端信息:

3.3 Rpmsg 通信测试
- 在 FreeRTOS 端串口输入以下命令,启动 RPMsg 测试程序:
rpmsg_test -N test -L 496 -c -v - 在 Linux 端执行以下命令,通过 RPMsg 设备节点向 FreeRTOS 端发送测试数据:
rpmsg_test -r arm_rtos_rproc@0 -c test -L 496 -v - 送成功后,FreeRTOS 端串口将显示如下接收到的数据内容:

