修改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。

  1. 登录准备环境所搭建Linux服务器。
  2. 执行如下命令,切换至root用户。

    su - root

  3. 使用WinSCP工具,将下载软件包获取的源码包“Ascend310B-source.tar.gz”上传至Linux系统root用户属组目录,例如“/opt”。详细操作请参见使用WinSCP传输文件
  4. 执行如下命令,进入源码包所在目录“/opt”。

    cd /opt

  5. 执行如下命令,解压源码包“Ascend310B-source.tar.gz”。

    tar -xzvf Ascend310B-source.tar.gz

  6. 执行如下命令,进入“hi1910BL”目录。

    cd Ascend310B-source/dtb/dts/hi1910b/hi1910BL/

  7. 默认加载最小集hi1910B-default.dts。

    1. 查看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>;
              };
    1. 执行如下命令,进入“base”目录。

      cd base

    2. 执行如下命令拷贝hi1910B-emmc.dtsi另存为hi1910B-emmc-default.dtsi。

      cp hi1910B-emmc.dtsi hi1910B-emmc-default.dtsi

    3. 执行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>;
    1. 按“Esc”键,再执行如下命令,保存修改并按“Enter”键退出。

      :wq!

    2. 执行如下命令,进入“hi1910BL”目录。

      cd /opt/Ascend310B-source/dtb/dts/hi1910b/hi1910BL/

    3. 执行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"
    4. 按“Esc”键,再执行如下命令,保存修改并按“Enter”键退出。

      :wq!

  8. 添加适配产品boardid的dts文件。

    系统正常启动后,用户可根据需求自行修改适配产品boardid的dts文件。

    以boardid是33150为例,添加适配产品boardid的dts文件。

    1. 执行如下命令拷贝hi1910B-default.dts另存为hi1910B-asic-M150-B33.dts。

      cp hi1910B-default.dts hi1910B-asic-M150-B33.dts

    2. 执行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>;
              };
    3. 按“Esc”键,再执行如下命令,保存修改并按“Enter”键退出。

      :wq!

  9. 执行如下命令,进入“dtbtool”目录。

    cd /opt/Ascend310B-source/dtb/dtbtool/

  10. 执行如下命令,修改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。

  11. 按“Esc”键,再执行如下命令,保存修改并按“Enter”键退出。

    :wq!

  12. 重新编译生成dt.img文件。

    1. 返回“Ascend310B-source”目录。

      cd /opt/Ascend310B-source

    2. 执行如下命令,编译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”目录下。

    把编译生成dt.img文件重构入驱动run包,具体请参见重构驱动run包