关于什么是设备树,设备树的语法,单独编译设备树的方法可以查看立创开发板训练营-Linux设备树的文档。

本文主要讲解使用WSL2与Docker修改设备树文件,编译内核并下载到开发板上。

关于WSL2、Docker的安装可以参考我之前的笔记:

立创泰山派tspi-Windows11安装与配置WSL

立创泰山派tspi-训练营笔记-WSL2安装使用Docker(Win11)

立创泰山派tspi-训练营笔记-WSL2使用Docker编译泰山派tspi的SDK(Win11)

修改设备树文件

我们就以立创训练营的作业选几个为例来修改设备树:

修改设备树失能泰山派上的三色用户LED灯修改设备树失能和使能HDMI输出关闭网口解决串口因寻不到网口频繁打印日志问题调试串口的波特率目前是1500000,尝试把波特率改成115200

如果使用WSL可以直接使用vscode打开SDK的文件夹:

第一次打开会有个弹窗,点允许就可以。

在右侧找到设备树文件,如图进入这个目录,拉到最下面

修改设备树失能泰山派上的三色用户LED灯 在tspi-rk3566-user-v10-linux.dts文件中设置三色灯状态为disabled //用户三色灯

&leds {

status = "disabled";

};

LED默认还是亮,这是因为disabled仅仅是不能闪烁和操作了,而在驱动中LED被默认点亮了。 RGB LED原理图如下所示: 因此如果想熄灭LED,我们可以把上面的status = "okay";改回来,然后把打开时间blink-delay-on改为0即可 leds: leds {

compatible = "gpio-leds";

rgb_led_r: rgb-led-r {

gpios = <&gpio1 RK_PB2 GPIO_ACTIVE_LOW>;

linux,default-trigger = "timer";

linux,delay-reg = <0>; // 延时注册

linux,blink-delay-on = <0>; // 打开时间

linux,blink-delay-off = <1000>; // 关闭时间

};

rgb_led_g: rgb-led-g {

gpios = <&gpio1 RK_PB1 GPIO_ACTIVE_LOW>;

linux,default-trigger = "timer";

linux,delay-reg = <100>; // 延时注册

linux,blink-delay-on = <0>;

linux,blink-delay-off = <1000>;

};

rgb_led_b: rgb-led-b {

gpios = <&gpio1 RK_PB0 GPIO_ACTIVE_LOW>;

linux,default-trigger = "timer";

linux,delay-reg = <100>; // 延时注册

linux,blink-delay-on = <0>;

linux,blink-delay-off = <1000>;

};

};

修改设备树失能和使能HDMI输出 在开头写的很清楚: //【开/关】HDMI 显示屏幕配置,里面内容几乎可以不用动,如果不需要hdmi显示直接注释掉即可

//#include "tspi-rk3566-hdmi-v10.dtsi"

可以选择注释掉或者如下图进去设置状态为disabled: 关闭网口解决串口因寻不到网口频繁打印日志问题 同样把网口注释掉就行 调试串口的波特率目前是1500000,尝试把波特率改成115200 修改tspi-rk3566-core-v10.dtsi中的串口波特率属性,如下图所示

编译内核(包括设备树)

windows需要先打开docker

然后如下图,在命令行启动并进入docker:

docker ps -a //查看容器

docker start lckfb_xly_container //启动容器

docker attach lckfb_xly_container //进入容器

编译内核:

lckfb@lckfb:~$ ls

app build.sh dtc_test Makefile rkflash.sh u-boot

br.log debian envsetup.sh mkfirmware.sh rockdev yocto

buildroot device external prebuilts tools

buildroot_dl_4c7c9df616fb.tar.gz docs kernel rkbin tspi_linux_sdk_repo_20240131.tar.gz

lckfb@lckfb:~$ ./build.sh kernel

拷贝boot.img到windows

查看rockchip目录,boot.img -> /home/lckfb/kernel/boot.img,我们接下来只需要把/home/lckfb/kernel/boot.img拷贝到windows,注意这里是docker目录。

lckfb@lckfb:~$ ls -l rockdev/

total 12556

lrwxrwxrwx 1 lckfb lckfb 27 Mar 9 15:15 boot.img -> /home/lckfb/kernel/boot.img

lrwxrwxrwx 1 lckfb lckfb 41 Mar 9 10:03 MiniLoaderAll.bin -> ../u-boot/rk356x_spl_loader_v1.13.112.bin

lrwxrwxrwx 1 lckfb lckfb 44 Mar 9 10:03 misc.img -> ../device/rockchip/rockimg/wipe_all-misc.img

-rw-r--r-- 1 lckfb lckfb 17457152 Mar 9 10:03 oem.img

lrwxrwxrwx 1 lckfb lckfb 53 Mar 9 10:03 parameter.txt -> ../device/rockchip/rk356x/parameter-buildroot-fit.txt

lrwxrwxrwx 1 lckfb lckfb 64 Mar 9 10:03 recovery.img -> ../buildroot/output/rockchip_rk356x_recovery/images/recovery.img

lrwxrwxrwx 1 lckfb lckfb 54 Feb 6 05:40 rootfs.ext4 -> ../buildroot/output/rockchip_rk3566/images/rootfs.ext2

lrwxrwxrwx 1 lckfb lckfb 54 Mar 9 10:03 rootfs.img -> ../buildroot/output/rockchip_rk3566/images/rootfs.ext2

lrwxrwxrwx 1 lckfb lckfb 19 Mar 9 10:03 uboot.img -> ../u-boot/uboot.img

-rw-r--r-- 1 lckfb lckfb 4472832 Mar 9 10:03 userdata.img

我们先退出到docker(一定要先退出docker,如果容器正在运行,则复制的文件可能会被锁定),然后使用dockcer cp命令:

docker cp lckfb_xly_container:/home/lckfb/kernel/boot.img /mnt/c/Users/whc/Desktop/

lckfb_xly_container:容器名称

/home/lckfb/kernel/boot.img:容器内文件的路径,这里记得修改为你自己的boot.img路径哦

/mnt/c/Users/whc/Desktop/:要拷贝到的容器外的路径,因为WSL2自动把windows的盘符挂载到/mnt目录下,我们可以直接拷贝到windows的桌面上,这里记得修改为你自己的路径哦

下载到开发板

这一部分就参考立创教程,烧录boot.img就行

烧录工具、驱动、配置文件都要下载安装好导入配置Tspi_Linux_config.cfg按住开发板的REC键,点击RST键,进入LOADER设备模式烧录工具仅选中boot,选择自己的boot.img,我的刚才放在桌面了勾选强制按地址写 点击执行

查看结果:

就可以使用串口,波特率为115200连接了。串口也不会打印频繁打印网口日志问题,HDMI插上也没有输出的。

大家可以尝试RGB三个灯同时闪烁就变成了,白色的呼吸灯效果,表示系统运行的“心跳”

精彩文章

评论可见,请评论后查看内容,谢谢!!!
 您阅读本篇文章共花了: