修改dts并编译DTB
用户需要根据自己的底板适配自己的dt.img文件。Hboot2根据Atlas 200I A2 加速模块的adc_board_id和底板的adc_board_id在dt.img中选择匹配的DTB加载,当无匹配的DTB时会加载默认DTB文件。本节讲述了默认支持最小集启动的DTB文件的步骤。
操作步骤
制作default dts和制作adc_board_id的LSADC[7:6]设置为实际底板的值的dts。
- 登录准备环境所搭建Linux服务器。
- 执行如下命令,切换至root用户。
su - root
- 使用WinSCP工具,将下载软件包获取的源码包“Ascend310B-source.tar.gz”上传至Linux系统root用户属组目录,例如“/opt”。详细操作请参见使用WinSCP传输文件。
- 执行如下命令,进入源码包所在目录“/opt”。
cd /opt
- 执行如下命令,解压源码包“Ascend310B-source.tar.gz”。
tar -xzvf Ascend310B-source.tar.gz
- 执行如下命令,进入“hi1910BL”目录。
cd Ascend310B-source/dtb/dts/hi1910b/hi1910BL/
- 默认加载最小集hi1910B-default.dts。
- 查看boardid字段值和pcie相关dtsi,确认与如下所示回显信息加粗字体保持一致。
/ { compatible = "hisilicon,hi1910B-evb", "hisilicon,ascend610"; hisi,boardid = <0x0 0x0 0x0 0x0>; #address-cells = <0x2>; #size-cells = <0x2>; interrupt-parent = <0x1>; model = "Hisilicon PhosphorHi1910B evb"; /include/ "base/hi1910B-asic-kernel-rc.dtsi" /include/ "base/hi1910B-commmon-smmu.dtsi" /include/ "base/hi1910B-mpam.dtsi" /include/ "base/hi1910B-lp-pm.dtsi" /include/ "base/hi1910B-lp-devmng.dtsi" /include/ "base/hi1910B-mbigen-ao.dtsi" /include/ "base/hi1910B-gpio.dtsi" /include/ "base/hi1910B-i2c.dtsi" /include/ "base/hi1910B-spi.dtsi" // /include/ "base/hi1910B-bindcore.dtsi" // /include/ "base/hi1910B-can.dtsi" /include/ "base/hi1910B-emmc.dtsi" /include/ "base/hi1910B-ipcdrv.dtsi" /include/ "base/hi1910B-ts-drv.dtsi" /include/ "base/hi1910B-tsdrv.dtsi" /include/ "base/hi1910B-network-M100-B51.dtsi" /include/ "base/hi1910B-hidvpp.dtsi" /include/ "base/hi1910B-hdmi.dtsi" /include/ "base/hi1910B-audio.dtsi" /include/ "base/hi1910B-mipitx.dtsi" /include/ "base/hi1910B-vdp.dtsi" /include/ "base/hi1910B-isp.dtsi" /include/ "base/hi1910B-hilink.dtsi" /include/ "base/hi1910B-mntn-milanr3.dtsi" /include/ "base/hi1910B-gpu.dtsi" /include/ "base/hi1910B-ctl.dtsi" /include/ "base/hi1910B-itrustee.dtsi" /include/ "base/hi1910B-sata.dtsi" // /include/ "product/hi1910B-pcie-rc-M100-B51.dtsi" /include/ "product/hi1910B-pinctrl-M100-B51.dtsi" /include/ "product/hi1910B-hiusbc-B51.dtsi" /include/ "product/hi1910B-usb-B51.dtsi" poweroff { compatible = "hisi,power_off"; reg = <0x0 0xc4060000 0x0 0x10000>; pinctrl-names = "default", "idle"; pinctrl-0 = <&poweroff_pmx_func>; pinctrl-1 = <&poweroff_pmx_idle>; };
- 执行如下命令,进入“base”目录。
cd base
- 执行如下命令拷贝hi1910B-emmc.dtsi另存为hi1910B-emmc-default.dtsi。
- 执行vim hi1910B-emmc-default.dtsi命令,按如下回显信息注释掉加粗字体的两行代码,并增加non-removable代码。
sdhci1: sdhci1@82010000 { // sd compatible = "hisilicon,sdhci_sd"; reg = <0x0 0x82010000 0x0 0x10000>; interrupt-parent = <&mbigen_sd>; interrupts = <917 4>; bus-width = <4>; host_id = <0>; no-sdio; no-mmc; max-frequency =<200000000>; clock-frequency = <1200000000>; non-removable; // cd-gpio = <&gpio3 8 0>; // cd-inverted; wp-inverted; /*sd卡需要配置这个 否则会被设置为只读*/ timing_0_cfg = <4000000 0x6 0x6 0x0 0x0 4000000 0 0x23 0x0 0x44 0x42 0x1 0x1 0x2 0x8>; timing_1_cfg = <200000000 0x7 0x6 0xf 0x0 200000000 1 0x23 0x1 0x44 0x44 0x2 0x0 0x0 0x20>; timing_2_cfg = <1200000000 0x7 0x6 0x5 0x0 200000000 1 0x23 0x1 0x44 0x44 0x2 0x0 0x0 0x20>;: timing_3_cfg = <1200000000 0x7 0x6 0x5 0x0 200000000 1 0x23 0x1 0x44 0x44 0x2 0x0 0x0 0x20>; timing_4_cfg = <1200000000 0x7 0x6 0x5 0x0 200000000 1 0x23 0x1 0x44 0x44 0x2 0x0 0x0 0x20>; timing_5_cfg = <1200000000 0x6 0x6 0x5 0x1 200000000 0 0x25 0x4 0x48 0x42 0x4 0x0 0x0 0x20>;
- 按“Esc”键,再执行如下命令,保存修改并按“Enter”键退出。
- 执行如下命令,进入“hi1910BL”目录。
cd /opt/Ascend310B-source/dtb/dts/hi1910b/hi1910BL/
- 执行vim hi1910B-default.dts命令,按如下加粗字体回显信息注释掉“/include/ "base/hi1910B-emmc.dtsi"”代码,并增加“/include/ "base/hi1910B-emmc-default.dtsi"”代码。
/ { compatible = "hisilicon,hi1910B-evb", "hisilicon,ascend610"; hisi,boardid = <0x0 0x0 0x0 0x0>; #address-cells = <0x2>; #size-cells = <0x2>; interrupt-parent = <0x1>; model = "Hisilicon PhosphorHi1910B evb"; /include/ "base/hi1910B-asic-kernel-rc.dtsi" /include/ "base/hi1910B-commmon-smmu.dtsi" /include/ "base/hi1910B-mpam.dtsi" /include/ "base/hi1910B-lp-pm.dtsi" /include/ "base/hi1910B-lp-devmng.dtsi" /include/ "base/hi1910B-mbigen-ao.dtsi" /include/ "base/hi1910B-gpio.dtsi" /include/ "base/hi1910B-i2c.dtsi" /include/ "base/hi1910B-spi.dtsi" // /include/ "base/hi1910B-bindcore.dtsi" // /include/ "base/hi1910B-can.dtsi" // /include/ "base/hi1910B-emmc.dtsi" /include/ "base/hi1910B-emmc-default.dtsi" /include/ "base/hi1910B-ipcdrv.dtsi" /include/ "base/hi1910B-ts-drv.dtsi" /include/ "base/hi1910B-tsdrv.dtsi" /include/ "base/hi1910B-network-M100-B51.dtsi" /include/ "base/hi1910B-hidvpp.dtsi" /include/ "base/hi1910B-hdmi.dtsi" /include/ "base/hi1910B-audio.dtsi" /include/ "base/hi1910B-mipitx.dtsi" /include/ "base/hi1910B-vdp.dtsi" /include/ "base/hi1910B-isp.dtsi" /include/ "base/hi1910B-hilink.dtsi" /include/ "base/hi1910B-mntn-milanr3.dtsi" /include/ "base/hi1910B-gpu.dtsi" /include/ "base/hi1910B-ctl.dtsi" /include/ "base/hi1910B-itrustee.dtsi" /include/ "base/hi1910B-sata.dtsi" ///include/ "product/hi1910B-pcie-rc-M100-B51.dtsi" /include/ "product/hi1910B-pinctrl-M100-B51.dtsi" /include/ "product/hi1910B-hiusbc-B51.dtsi" /include/ "product/hi1910B-usb-B51.dtsi"
- 按“Esc”键,再执行如下命令,保存修改并按“Enter”键退出。
- 查看boardid字段值和pcie相关dtsi,确认与如下所示回显信息加粗字体保持一致。
- 添加适配产品boardid的dts文件。
系统正常启动后,用户可根据需求自行修改适配产品boardid的dts文件。
以boardid是33150为例,添加适配产品boardid的dts文件。
- 执行如下命令拷贝hi1910B-default.dts另存为hi1910B-asic-M150-B33.dts。
- 执行vim hi1910B-asic-M150-B33.dts命令,修改boardid字段值,如下回显信息的加粗字体所示。
/ { compatible = "hisilicon,hi1910B-evb", "hisilicon,ascend610"; hisi,boardid = <0x0 0x3 0x3 0x1 0x5 0x0>; #address-cells = <0x2>; #size-cells = <0x2>; interrupt-parent = <0x1>; model = "Hisilicon PhosphorHi1910B evb"; /include/ "base/hi1910B-asic-kernel-rc.dtsi" /include/ "base/hi1910B-commmon-smmu.dtsi" /include/ "base/hi1910B-mpam.dtsi" /include/ "base/hi1910B-lp-pm.dtsi" /include/ "base/hi1910B-lp-devmng.dtsi" /include/ "base/hi1910B-mbigen-ao.dtsi" /include/ "base/hi1910B-gpio.dtsi" /include/ "base/hi1910B-i2c.dtsi" /include/ "base/hi1910B-spi.dtsi" // /include/ "base/hi1910B-bindcore.dtsi" // /include/ "base/hi1910B-can.dtsi" // /include/ "base/hi1910B-emmc.dtsi" /include/ "base/hi1910B-emmc-default.dtsi" /include/ "base/hi1910B-ipcdrv.dtsi" /include/ "base/hi1910B-ts-drv.dtsi" /include/ "base/hi1910B-tsdrv.dtsi" /include/ "base/hi1910B-network-M100-B51.dtsi" /include/ "base/hi1910B-hidvpp.dtsi" /include/ "base/hi1910B-hdmi.dtsi" /include/ "base/hi1910B-audio.dtsi" /include/ "base/hi1910B-mipitx.dtsi" /include/ "base/hi1910B-vdp.dtsi" /include/ "base/hi1910B-isp.dtsi" /include/ "base/hi1910B-hilink.dtsi" /include/ "base/hi1910B-mntn-milanr3.dtsi" /include/ "base/hi1910B-gpu.dtsi" /include/ "base/hi1910B-ctl.dtsi" /include/ "base/hi1910B-itrustee.dtsi" /include/ "base/hi1910B-sata.dtsi" // /include/ "product/hi1910B-pcie-rc-M100-B51.dtsi" /include/ "product/hi1910B-pinctrl-M100-B51.dtsi" /include/ "product/hi1910B-hiusbc-B51.dtsi" /include/ "product/hi1910B-usb-B51.dtsi" poweroff { compatible = "hisi,power_off"; reg = <0x0 0xc4060000 0x0 0x10000>; pinctrl-names = "default", "idle"; pinctrl-0 = <&poweroff_pmx_func>; pinctrl-1 = <&poweroff_pmx_idle>; };
- 按“Esc”键,再执行如下命令,保存修改并按“Enter”键退出。
- 执行如下命令,进入“dtbtool”目录。
cd /opt/Ascend310B-source/dtb/dtbtool/
- 执行如下命令,修改CMakelists文件,将所增加的dts添加到编译路径中,如下回显信息的加粗字体所示。
vim CMakeLists.txt
set(DTS_BASE_DIR ${TOP_DIR}/tools/customize/dts) if(PRODUCT STREQUAL "ascend310Besl" OR PRODUCT STREQUAL "ascend310B" OR PRODUCT STREQUAL "ascend310Bemu" OR PRODUCT STREQUAL "ascend310Brc" OR PRODUCT STREQUAL "ascend310Brcesl" OR PRODUCT STREQUAL "ascend310Brcemu") # 当前driver跟esl用相同的dts,后期需要更新到单独的目录 set(DTS_SRC_DIR ${DTS_BASE_DIR}/hi1910b/hi1910BL) set(DTS_FILE_LIST hi1910B-default.dts hi1910B-evb-900.dts hi1910B-evb-901.dts hi1910B-evb-902.dts hi1910B-evb-903.dts hi1910B-evb-905.dts hi1910B-asic-M150-B50.dts hi1910B-asic-M100-B51.dts hi1910B-asic-M150-B51.dts hi1910B-asic-M151-B50.dts hi1910B-asic-M101-B51.dts hi1910B-asic-M150-B33.dts) set(OUT_DT_IMAGE dt.img) elseif(PRODUCT STREQUAL "helper310p") set(DTS_SRC_DIR ${DTS_BASE_DIR}/helper) set(DTS_FILE_LIST helper-evb-925-1p.dts helper-evb-949-1p.dts helper-asic-450-1p.dts helper-asic-455-1p.dts helper-asic-475-2p.dts helper-evb-900-2p.dts)
默认dts要添加在第一个编译的位置,在加粗字体段落末尾添加对应产品的dts。
- 按“Esc”键,再执行如下命令,保存修改并按“Enter”键退出。
:wq!
- 重新编译生成dt.img文件。
- 返回“Ascend310B-source”目录。
cd /opt/Ascend310B-source
- 执行如下命令,编译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”目录下。
把编译生成dt.img文件重构入驱动run包,具体请参见重构驱动run包。
- 返回“Ascend310B-source”目录。
父主题: SD卡制作和启动系统镜像(方法一)