编译并生效内核DTB文件
操作场景
当用户需要定制自定义设备树文件时,如开启UART0串口功能,可以通过修改源码包中对应形态的dts文件以重新编译内核DTB文件,并重构驱动包进行安装。

若Atlas 200I A2 加速模块环境已存在NPU驱动,只需升级dt.img,获取制作dt.img使用的Ascend-hdk-310b-sdk-soc_<version>.zip时,软件包的版本需与当前Atlas 200I A2 加速模块的驱动版本号保持一致。否则,版本号不一致,升级dt.img后Atlas 200I A2 加速模块环境无法登录,只能通过重新烧写系统镜像进行恢复。
前提条件
- 一台带网络端口且操作系统为Ubuntu 22.04的x86 Linux服务器。
- Linux服务器已安装python、make、gcc、unzip、pigz、bison、flex、libncurses-dev、squashfs-tools、bc、device-tree-compiler、libssl-dev、cmake、rpm2cpio与交叉编译工具链。

- 所有的依赖必须用root用户进行安装。
- 用户可以通过如下命令进行安装上述依赖。
apt-get install -y python3 make gcc unzip pigz bison flex libncurses-dev squashfs-tools bc device-tree-compiler libssl-dev cmake rpm2cpio
- 交叉编译工具链安装请参见安装工具链。
操作步骤
- 登录Linux服务器。
- 执行如下命令,切换至root用户。
su - root
- 使用WinSCP工具或其他工具,将下载软件包获取的源码包“Ascend310B-source.tar.gz”上传至root用户属组目录下,例如“/opt”。详细操作请参见使用WinSCP传输文件。
- 执行如下命令,进入源码包所在目录,例如“/opt”。
cd /opt
- 执行如下命令,解压源码包“Ascend310B-source.tar.gz”。
tar -xzvf Ascend310B-source.tar.gz
- 执行如下命令,进入“Ascend310B-source”目录。
cd Ascend310B-source
- 修改对应设备的dts文件。
- 如果需要使能DTB相关功能,可参考此步骤,下文以Atlas 200I DK A2 开发者套件新增调试串口功能为例进行说明。
- 执行如下命令,打开Atlas 200I DK A2 开发者套件boardid为51100的dts文件。
vim dts/hi1910b/hi1910BL/hi1910B-asic-M100-B51.dts
- 可通过修改bootargs字段中的加粗字体,使能配置。
此处以使能UART0串口作为控制台设备为例进行配置(Atlas 200I DK A2 开发者套件默认已使能UART0串口配置)。
chosen { bootargs = "console=ttyAMA0,115200 log_redirect=0x1fc000@0x22741000 root=/dev/mmcblk1p1 rw rdinit=/sbin/init rodata=off syslog earlycon=pl011,mmio32,0xC4010000 loglevel=5 initrd=0x2BA00000,300M rootwait mpam=of enable_ascend_share_pool ascend_enable_all enable_sp_multi_group_mode init_all_gicr enable_fpga no_console_suspend use_kallsyms_lookup_symbol selinux=0 systemd.unified_cgroup_hierarchy=0 fbcon=map:6"; };
- 按“Esc”键,再执行如下命令,保存修改并按“Enter”键退出。
- 返回“Ascend310B-source”目录。
cd /opt/Ascend310B-source
- 执行如下命令,打开Atlas 200I DK A2 开发者套件boardid为51100的dts文件。
- 如果需要使能DTB相关功能,可参考此步骤,下文以Atlas 200I DK A2 开发者套件新增调试串口功能为例进行说明。
- 执行如下命令,编译DTB文件。
bash build.sh dtb
出现如下回显,且生成“dt.img”文件表示编译内核DTB文件成功。
generate /opt/Ascend310B-source/output/dt.img success! sign /opt/Ascend310B-source/output/dt.img success!
编译后的dt.img文件会自动存放于“Ascend310B-source/output”目录下。
生效DTB文件
- 登录Atlas 200I A2 加速模块系统环境,具体操作请参见使用PuTTY登录设备(网口方式)。
- 使用“WinSCP”,将编译后的“dt.img”文件上传至任意目录下,例如“/opt”。详细操作请参见使用WinSCP传输文件。
- 执行如下命令,进入“opt”目录。
cd /opt
- 执行如下命令,查询启动方式。
boot_tool get boot_sel
- 若回显如下,表示启动方式从eMMC启动。
boot from eMMC
- 若回显如下,表示启动方式从SD卡启动。
boot from SD
- 升级dt.img文件。
- eMMC启动。
- M.2启动。
- SD卡启动。
- 升级主区DTB,执行如下命令。
dd if=dt.img of=/dev/mmcblk1 count=4096 seek=114688 bs=512
852+1 records in 852+1 records out 436480 bytes (436 kB, 426 KiB) copied, 0.113982 s, 3.8 MB/s
- 升级备区DTB,执行如下命令。
- 升级主区DTB,执行如下命令。
建议用户在调测阶段仅升级主区与备区中的其中一个dt.img文件。
- 执行如下命令,重启生效。
reboot
建议查看串口日志确认升级重启进展。
- 用户可根据实际配置的功能进行验证。如使能UART0串口配置后,验证UART0串口功能是否正常。