xSpirit2 移植

前言
对于这块 rk3568 的开发板(俗称 XSpirit2),之前使用的都是野火的 SDK,而是使用官方的 linux kernel进行编译配置,并且适配硬件。关于 U-Boot,因为我暂时对调试还没有太大的兴趣并且 SDK 中的 uboot 烧录到 SD 卡中挺好用的,所以保持使用 SDK 中的版本。
正文
编译 Linux Kernel
使用 linux-rockchip 仓库,这是基于内核版本 6.1 移植的,理论上讲只需要进行简单的设备树配置就能够直接使用。懒得配置环境变量,并且这个仓库只用来编译用于这个开发板的,就直接修改 Makefile 的交叉编译工具部分。
1 | ARCH ?= arm64 |
避免每次在 shell 中进行环境变量的配置。
1 | make rochip_linux_defconfig // 覆盖内核根目录的 .config 文件 |
这个仓库能够 uImage 的编译,但我后面会使用 booti 的命令启动,并且还处于调试阶段在 sd 卡的读取时间也不算久,于是采用的是未压缩的 Image 镜像。
编译 Buildroot
使用 buildroot 仓库,基于 configs/rockpro64_defconfig
复制出了一份进行配置,修改了基础的配置如架构、内核版本等。
1 | make rockpro64_defconfig // 覆盖根目录的 .config 文件 |
从 u-boot 启动
如果在调试阶段,可以使用 tftp 将 kernel image 与 dtb 读入内存(确保linux 的 tftp 服务开启)
1 | bdinfo // 可以查看镜像读取到内存哪个地址合适 |
已经拥有了稳定可用的版本,就可以尝试烧录,修改 uboot 的环境变量 bootcmd 等。但我的这块板子的 nor_flash 不能读取写入了,于是通过修改了原有 boot 分区的 extlinux 文件加载我的镜像与设备树达到相同的目的。
结语
至此基础的移植操作就已经完成,目前镜像已经能够在这个板子上启动,但是许多的硬件还不能使用,比如 pcie 、i2c 、usb 等等。具体的硬件调试就需要修改修改、调试驱动。