立创泰山派tspi-rk3566修改编译设备树,即编译内核(使用WSL、docker)

关于什么是设备树,设备树的语法,单独编译设备树的方法可以查看立创开发板训练营-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就行

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

动画

查看结果:

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

image-20240310123610121

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

  • 24
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值