RK3568 Debian11+RT-Thread混合内核部署方案。
方案:3个核(Linux或Debian) + 1个核(RT-Thread)
以下视频为:YY3568混合部署的演示视频。
欢迎关注视频号,我们将准备一场直播,讲解如何在YY3568混合部署Debian+RT-Thread
Debian-AMP工程

编译构建
搭建编译环境
sudo apt-get update
sudo apt-get install scons git gnupg flex bison gperf libsdl1.2-dev \
libesd-java libwxgtk3.0-dev squashfs-tools build-essential zip curl \
libncurses5-dev zlib1g-dev pngcrush schedtool libxml2 libxml2-utils \
xsltproc lzop libc6-dev schedtool g++-multilib lib32z1-dev lib32ncurses5-dev \
lib32readline-dev gcc-multilib libswitch-perl libssl-dev unzip zip device-tree-compiler \
liblz4-tool python-pyelftools python3-pyelftools -y
解压工程压缩包:
youyeetoo@youyeetoo:~$ tar -zxvf YY3568-Debian11_AMP.tar.gz

编译代码:
youyeetoo@youyeetoo:~$ cd YY3568-Debian11
youyeetoo@youyeetoo:~/YY3568-Debian11$ ./build.sh
- 编译过程, 选择youyeetoo_yy3568_emmc_defconfig:
- 编译完成结果:

- 固件生成目录:you_project/output/firmware

资源保护
在Linux/Debian + RTT AMP模式下,不同系统间会存在资源的竞争。所以在RTT中使用到的的一些外设、时钟等资源时最好都在rk3568-amp.dtsi文件中保护一下,避免和Linux/Debian那边的资源冲突。
CPU划分
- RK3568是由四个64位Cortex-A55核组成,YY3568的AMP方案采用3个核心跑Linux或Debian,1个核心跑RT-Thread。所以需要对其进行约束。
- 约束方法:修改Linux或者Debian端的内核设备树:rk3568-amp.dtsi,修改如下:


内存划分
分区 | 内存起始地址 | 内存大小 | 说明 |
---|---|---|---|
RTT SRAM | 0xfdcc0000 | 64K | 系统SRAM |
RTT固件 | 0x02800000 | 8M | RTT 固件空间 |
共享内存 | 0x07800000 | 4M | 共享内存,可以被所有CPU访问 |
RPMSG内存 | 0x07c00000 | 5M | RPMSG共享内存 |
- 约束方法:修改Linux或者Debian端的内核设备树:rk3568-amp.dtsi,修改如下:

总线仲裁
- 以串口为例,Linux/Debian使用串口2作为调试串口,RT-Thread使用串口4作为调试串口。
- 串口总线仲裁约束方法:修改Linux或者Debian端的内核设备树:rk3568-amp.dtsi,修改如下:
工具准备
USB驱动安装


烧录工具安装


固件烧录
导入固件

进入loader模式
loader模式:在Loader模式下,bootloader会进入升级状态,等待主机命令,用于固件升级等。要进入Loader模式,必须让bootloader在启动时检测到RECOVERY(恢复)键按下,且USB处于连接状态。
进入loader模式:
- 先断开电源适配器连接。
- 双口USB Type-A数据线一端连接主机,一端连接开发板,一定要接图示接口

- 按住设备上的 RECOVERY (恢复)键并保持

- 接上电源
- 大约2~3秒后,松开RECOVERY键。


运行演示
准备工作:板子需要接两个串口:Linux系统(串口2),RT-Thread(串口4)。注意:两个内核的调试串口的波特率:1500000
运行效果: