RK3562 AMP SDK
AMP SDK是一个多核异构系统, 把CPU4个核自由分配来运行Linux及RTOS系统, 对于实时性要求高的, 常常使用此特性。
1. Linux + Bare-metal(裸机系统)组合
首先拿到Neardi RK3562 设备及SDK, 安装SDK编译环境。 如何安装编译环境, 请参考Neardi wiki, 在此忽略。
选择目标设备, 如下命令
neardi@ubuntu2204-docker:~/rk3562_amp/rk-repo-510$ ./build.sh lunch
############### Rockchip Linux SDK ###############
Manifest: rk3562_linux_release_v1.3.0_20241220.xml
Log colors: message notice warning error fatal
Log saved at /mnt/data/rk3562_amp/rk-repo-510/output/sessions/2025-03-04_15-12-15
Pick a defconfig:
1. rockchip_defconfig
2. neardi_lkd3562_ddr4_amp_defconfig
3. rockchip_rk3562_dictpen_test3_v20_defconfig
4. rockchip_rk3562_evb1_lp4x_v10_amp_defconfig
5. rockchip_rk3562_evb1_lp4x_v10_defconfig
6. rockchip_rk3562_evb2_ddr4_v10_amp_defconfig
7. rockchip_rk3562_evb2_ddr4_v10_defconfig
8. rockchip_rk3562_robot_evb1_lp4x_v10_defconfig
9. rockchip_rk3562_robot_evb2_ddr4_v10_defconfig
Which would you like? [1]: 2
此处选择2.
编译Linux+ AMP固件, 使用如下命令编译即可:
neardi@ubuntu2204-docker:~/rk3562_amp/rk-repo-510$ ./build.sh
############### Rockchip Linux SDK ###############
Manifest: rk3562_linux_release_v1.3.0_20241220.xml
Log colors: message notice warning error fatal
Log saved at /mnt/data/rk3562_amp/rk-repo-510/output/sessions/2025-03-04_15-15-11
Using last kernel version(5.10)
生成的rootfs固件在#SDK/rockdev目录, 如下:
neardi@ubuntu2204-docker:~/rk3562_amp/rk-repo-510$ ls rockdev
amp.img boot.img MiniLoaderAll.bin oem.img parameter.txt recovery.img rootfs.img uboot.img update.img userdata.img
编译amp固件
进入#SDK/rtos/bsp/rockchip/rk3562-32, 先执行如下命令:
neardi@ubuntu2204-docker:~/rk3562_amp/rk-repo-510/rtos/bsp/rockchip/rk3562-32$ ./build.sh all
scons: Reading SConscript files ...
RTT_ROOT:/mnt/data/wumingfeng/rk3562_amp/rk3562_amp_510_next/rtos
release build
...
再执行编译基于cpu3核心的amp固件, 如下:
neardi@ubuntu2204-docker:~/rk3562_amp/rk-repo-510/rtos/bsp/rockchip/rk3562-32$ ./build.sh 3
scons: Reading SConscript files ...
RTT_ROOT:/mnt/data/rk3562_amp/rk-repo-510/rtos
release build
...
最后, 在#SDK根目录下面执行, ./build.sh amp即可, 如下:
neardi@ubuntu2204-docker:~/rk3562_amp/rk-repo-510$ ./build.sh amp
############### Rockchip Linux SDK ###############
Manifest: neardi_3562_amp_linux5.10_next.xml
Log colors: message notice warning error fatal
Log saved at /mnt/data/rk3562_amp/rk-repo-510/output/sessions/2025-03-06_11-23-24
Using last kernel version(5.10)
烧录linux + amp固件
打开Rockchip烧录工具, 如下方法烧录:

当然, 也可以先烧录整包update.img, 之后再烧录amp.img。
运行
烧录成功后, 系统起来在UART7有如下log:
6.1 RTOS
****************************************
Hello RK3562 Bare-metal using RK_HAL!
Rockchip Electronics Co.Ltd
CPI_ID(3)
****************************************
[(3)0.640.678] CPU(3) Initial OK!
rpmsg remote: remote core cpu_id-3
rpmsg remote: link up! link_id-0x3
Notes: UART7默认没有引出来, 需要如下飞线:

Bare-metal
此裸机demo源代码在rk-repo-510/hal/project/rk3562/src, 如下:
neardi@ubuntu2204-docker:~/rk3562_amp/rk-repo-510/hal/project/rk3562/src$ ls -l
total 56
-rw-rw-r-- 1 linx linx 1566 Feb 25 16:33 hal_conf.h
-rw-rw-r-- 1 linx linx 5206 Feb 28 15:51 main.c
-rw-rw-r-- 1 linx linx 1053 Feb 25 16:33 middleware_conf.h
-rw-rw-r-- 1 linx linx 575 Feb 25 16:33 task_ipc.c
-rw-rw-r-- 1 linx linx 247 Feb 25 16:33 task_ipc.h
-rw-rw-r-- 1 linx linx 330 Feb 25 16:33 test_conf.h
-rw-rw-r-- 1 linx linx 28216 Feb 28 15:51 test_demo.c
需要测试RPMSG通信时, test_demo.c 打开如下的宏:
/********************* Private MACRO Definition ******************************/
//#define IRQ_LATENCY_TEST
//#define PERF_TEST
#define RPMSG_LINUX_TEST
//#define RPMSG_PERF_TEST
//#define SOFTIRQ_TEST
//#define SPINLOCK_TEST
//#define TIMER_TEST
//#define UART_TEST
//#define PWM_TEST
//#define GPIO_TEST
//#define GPIO_VIRTUAL_MODEL_TEST
//#define WDT_TEST
//#define UNITY_TEST
- Linux系统
Linux系统包括buildroot或者使用Debian, 系统启动时, 可以查看如下log:
Fdt Ramdisk skip relocation
Sysmem Warn: kernel 'reserved-memory' "amp@800000"(0x00800000 - 0x02000000) is overlap with "bare-mental-core3" (0x01800000 - 0x01812a40)
Sysmem Warn: kernel 'reserved-memory' "amp@800000"(0x00800000 - 0x02000000) is overlap with "KERNEL" (0x01fff800 - 0x0436fa04)
root@rk3562-buildroot:/# cat /proc/cpuinfo
processor : 0
BogoMIPS : 48.00
Features : fp asimd evtstrm aes pmull sha1 sha2 crc32 cpuid
CPU implementer : 0x41
CPU architecture: 8
CPU variant : 0x0
CPU part : 0xd03
CPU revision : 4
processor : 1
BogoMIPS : 48.00
Features : fp asimd evtstrm aes pmull sha1 sha2 crc32 cpuid
CPU implementer : 0x41
CPU architecture: 8
CPU variant : 0x0
CPU part : 0xd03
CPU revision : 4
processor : 2
BogoMIPS : 48.00
Features : fp asimd evtstrm aes pmull sha1 sha2 crc32 cpuid
CPU implementer : 0x41
CPU architecture: 8
CPU variant : 0x0
CPU part : 0xd03
CPU revision : 4
Serial : 9880eebff967d662
从上面的log可以看出, CPU核心cpu0, cpu1, cpu2运行的是Linux, cpu3运行的是Bare-metal
2. Linux + RT Thread组合
Linux+RT Thread组合, 基于逻辑系统的步骤, rootfs等是相同的, 不同的是AMP固件。 在此, 我们只编译RT Thread固件即可。
2.1 编译RT Thread
首先需要更改RT Thread编译脚本, 在#SDK/rtt_amp.sh更改如下CROSS_COMPILE宏定义:
make distclean
#make rk3562_defconfig rk-amp.config
make rk3562_defconfig rk-amp.config
./make.sh CROSS_COMPILE=/mnt/data/rk3562_amp/rk-repo-510/prebuilts/gcc/linux-x86/aarch64/gcc-arm-10.3-2021.07-x86_64-aarch64-none-linux-gnu/bin/aarch64-none-linux-gnu- rk3562 rk-amp ../rkbin/RKBOOT/RK3562MINIALL_AMP_CPU3.ini --spl-new
cd ..
echo "**********************************"
echo " KERNEL COMPILE "
echo "**********************************"
cd kernel
#make ARCH=arm64 rockchip_linux_defconfig
make ARCH=arm64 neardi_lkd3562_defconfig
make ARCH=arm64 neardi-lkd3562-ddr4-linux-amp.img CROSS_COMPILE=/mnt/data/rk3562_amp/rk-repo-510/prebuilts/gcc/linux-x86/aarch64/gcc-arm-10.3-2021.07-x86_64-aarch64-none-linux-gnu/bin/aarch64-none-linux-gnu- LLVM=1 LLVM_IAS=1 -j8
cd ..
把CROSS_COMPILE更改你实际的SDK路径名称。
之后, 执行如下命令即可编译RT Thread:
neardi@ubuntu2204-docker:~/rk3562_amp/rk-repo-510$ ./rtt_amp.sh
**********************************
UBOOT COMPILE
PLEASE CHECK CPUX RUN IN SYSTEM
\u-boot\drivers\cpu\amp.its
default cpu0:linux
cpu1,2,3:bare-mental
mcu:standalone
**********************************
CLEAN dts/../arch/arm/dts
CLEAN dts
CLEAN examples/standalone
CLEAN tools
CLEAN tools/lib tools/common
...
**********************************
RT-THREAD PACKAGE TO UBOOT
**********************************
FIT description: FIT source file for rockchip AMP
Created: Tue Mar 4 16:09:23 2025
Image 0 (amp3)
Description: bare-mental-core3
Created: Tue Mar 4 16:09:23 2025
Type: Firmware
Compression: uncompressed
Data Size: 163776 Bytes = 159.94 KiB = 0.16 MiB
Architecture: ARM
Load Address: 0x01800000
Hash algo: sha256
Hash value: 855b85555a2b5dfc5994f1f796f8d34977c7fe58c59e05464b02931b8dc8eebc
Default Configuration: 'conf'
Configuration 0 (conf)
Description: Rockchip AMP images
Kernel: unavailable
Loadables: amp3
Image: amp.img is ready.
**********************************
PACKAGE UPDATEIMG
**********************************
**********************************
PACKAGE UPDATEIMG
**********************************
编译成功后, 在#SDK根目录下面会生成IMAGE目录, 包含如下文件:
neardi@ubuntu2204-docker:~/rk3562_amp/rk-repo-510$ ls IMAGE/
amp.img boot.img MiniLoaderAll.bin parameter.txt uboot.img
这里的amp.img就是RT Thread固件。
2.2. 烧录RT Thread固件
由于Uboot +Kernel + rootfs都没有变, 因此单独更新amp.img即可, 如下:

Notes: 此处的amp.img需要选择#SDK/IMAGE/amp.img.
更新成功后, 在UART7有如下打印:
\ | /
- RT - Thread Operating System
/ | \ 4.1.1 build Mar 4 2025 02:27:32
2006 - 2022 Copyright by RT-Thread team
[I/I2C] I2C bus [i2c0] registered
[I/I2C] I2C bus [i2c1] registered
[I/I2C] I2C bus [i2c2] registered
Hi, this is RT-Thread!!
msh />
从log看, RT Thread OS运行成功。