9. 设备树的编译与修改

在U-boot和kernel的源码中都有设备树文件。按照U-Boot的原⽣架构要求⼀块板卡必须对应⼀份U-Boot dts, 并且U-Boot dts⽣成的dtb是打包到U-Boot⾃⼰的镜像中的。这样就会出现各SoC平台上,N块板卡需要N份U-Boot镜像。

在算能平台中uboot的设备树和内核设备树是用的同一个文件,路径是sophon-image-build/build/boards/sg200x/sg200x_xxx/dts_riscv/sg200x_xxx.dts

通过⽀持设备树可以达到兼容板卡差异,如:regulator、clk等。

9.1. 编译设备树文件

借助SDK可以很方便地进行编译,进入SDK顶层目录,以sg2000_lubancat_riscv_ubuntu_sd为例:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
#初始化编译环境,输入当前用户的密码
source build/cvisetup.sh

#加载对应的板级配置文件
defconfig sg2000_lubancat_riscv_ubuntu_sd

#清除kernel编译输出
clean_kernel

#构建kernel
build_kernel

构建生成的内核和设备树打包进了sophon-image-build/install/soc_sg2000_lubancat_riscv_ubuntu_sd/boot.sd,如果是emmc则是boot.emmc。

9.2. 修改设备树文件

直接修改对应板级目录下的dts即可,例如sg2000_lubancat_riscv_ubuntu_sd,即修改sophon-image-build/build/boards/sg200x/sg2000_lubancat_riscv_ubuntu_sd/dts_riscv/sg2000_lubancat_riscv_ubuntu_sd.dts

值得注意的是,算能芯片的引脚复用和电气属性不是通过设备树进行配置的,没有使用Pinctrl子系统,初始化工作是在uboot下进行,具体可参考: U-boot修改