跳到主要内容位置

泰山派tspi-解决串口终端一直打印错误信息以及设备树编译

参考立创·泰山派解决串口间歇性输出gmac报错信息

在RK的SDK中设备树是和内核一起编译打包成zboot.img文件的

解决终端一直打印错误信息#

串口终端一直打印错误信息是因为我们没有接扩展板的千兆网口。

进入/tspi_linux_sdk_20230916/Release目录,使用vim编辑器修改设备树:

book@100ask:~/tspi_linux_sdk_20230916/Release$ vi kernel/arch/arm64/boot/dts/rockchip/tspi-rk3566-user-v10-linux.dts

注释掉千兆网口的include,如下图所示:

然后保存退出。

然后编译内核:

./build.sh kernel

如果你不想了解编译内核的细节可以直接把Release/rockdev/目录下的boot.img拷贝到windows上

烧录进去就可以了。

一些内核编译细节

进入内核目录我们可以看到zboot.img和boot.img两个镜像文件:

我们可以发现boot.img大小是zboot.img的两倍左右:

然后我们再进入rockdev目录,里面会有所有编译好的镜像文件,如下图所示:

会发现这里也有boot.img,它链接到了上面的boot.img。

但是在《【正点原子】ATK-DLRV1126 系统开发手册V1.5》中说zboot.img才是应该烧录的文件,以下进行尝试:

我把zboot.img拷贝到windows,然后尝试烧录,发现烧录失败,而烧录boot.img是成功的。所以tspi应该是使用的是boot.img

那么,zboot和boot到底有什么区别呢?

我们回去查看编译内核信息:

发现分别是Image和Image.lz4。搜索一下:

lz4是一种无损压缩算法,主要优势在于压缩与解压的效率高,特别是解压非常快。

所以zboot.img就是压缩后的boot.img。

那么在正点原子上的uboot中使用boot命令时,会启动kernel,其中涉及到kernel的压缩与解压。

而tspi估计uboot没有进行相关操作,所以使用的应该是未压缩的boot.img。(还未学习uboot不太清楚,如有错误欢迎指出)

设备树编译#

在rk系列中,使用./build.sh kernel进行内核编译,就包括了设备树编译。多个设备树和内核编译成一个boot.img文件。