下载
中文
注册

调测参考

本章节以UART3使用作为参考举例。其他UART例如UART6的配置,可以参考源码包中提供的“hi1910B-asic-M150-B50.dts”文件进行配置。

操作步骤

本操作以首次调测为例。

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

    su - root

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

    cd /opt

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

    tar -xzvf Ascend310B-source.tar.gz

  6. 新增整机dts文件。

    例如用户整机的boardid为33150,故dts文件名称为“hi1910B-asic-M150-B33.dts”。具体请参见DTB文件

    1. 执行如下命令,进入dts文件目录。

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

    1. 执行如下命令,新增适配boardid33150的dts文件。

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

      将“hi1910B-asic-M150-B50.dts”另存为boardid33150的dts文件“hi1910B-asic-M150-B33.dts”。

  7. 修改整机dts文件。
    1. 执行以下命令进入dts文件编辑模式。

      vim hi1910B-asic-M150-B33.dts

    2. 在dts文件中,分别配置用户产品的实际整机boardid,注释PCIe的.dtsi文件和确认所使用的pinctrl的.dtsi文件及路径,具体内容如下加粗字体所示。
      compatible = "hisilicon,hi1910B-evb", "hisilicon,ascend610";
      hisi,boardid = <0x0 0x3 0x3 0x1 0x5 0x0>;  //修改为实际整机boardid
      #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-ipcdrv.dtsi"
      /include/ "base/hi1910B-ts-drv.dtsi"
      /include/ "base/hi1910B-tsdrv.dtsi"
      /include/ "base/hi1910B-network-M150-B50.dtsi"
      /include/ "base/hi1910B-hidvpp.dtsi"
      /include/ "base/hi1910B-hdmi.dtsi"
      /include/ "product/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-M150-B50.dtsi" //注释掉PCIe的.dtsi文件
      /include/ "product/hi1910B-mdio-M150-B50.dtsi"
      /include/ "product/hi1910B-pinctrl-M150-B50.dtsi"  //确认所使用的pinctrl的.dtsi文件及路径
      /include/ "product/hi1910B-can-M150-B50.dtsi"
      /include/ "product/hi1910B-hiusbc-B50.dtsi"
      /include/ "product/hi1910B-emmc-M150-B50.dtsi"
      /include/ "product/hi1910B-i2c-M150-B50.dtsi"
      /include/ "product/hi1910B-spi-M150-B50.dtsi"

      如果已调测SerDes接口,直接在已修改的产品dts文件中确认pinctrl的.dtsi文件及路径即可,无需修改boardid和注释PCIe的.dtsi文件。

    3. 在dts中配置UART3以及UART3管脚复用为串口管脚,具体内容如下加粗字体所示。
      uart3: uart@82240000 {
      compatible = "arm,pl011", "arm,primecell";
      reg = < 0x00 0x82240000 0x00 0x1000 >;  //配置为UART基地址
      interrupts = < 0x00 0xac 0x04 >;         //配置UART中断号
      current-speed = < 0x1c200 >;
      arm,primecell-periphid = <0x00241011>;
      clocks = <&refclk150M>;                   //配置UART时钟频率
      clock-names = "apb_pclk";
      pinctrl-names = "default", "idle";
      pinctrl-0 = <&uart3_tx_pmx_func &uart3_rx_pmx_func>;   //工作状态
      pinctrl-1 = <&uart3_tx_pmx_idle &uart3_rx_pmx_idle>;   //休眠状态
      };
    4. 配置完成后,按“Esc”键,再执行:wq!保存修改,并按“Enter”键退出。
  8. 修改pinctrl的.dtsi文件
    1. 执行如下命令进入“product”目录,进入pinctrl的.dtsi文件的编辑模式。

      cd product

      vim hi1910B-pinctrl-M150-B50.dtsi

    2. 在pinctrl的.dtsi文件中配置utxd3、urxd3的复用关系,具体内容如下加粗字体所示。
      pmx_peri: pinmux@82320000 {
      compatible = "pinctrl-single", "pinctrl-single1";
      reg = <0x0 0x82320000 0x0 0x9c>; //寄存器中utxd3、urxd3的MUX Base Address。
      #gpio-range-cells = <3>;
      pinctrl-single,register-width = <32>;
      pinctrl-single,function-mask = <7>;
      uart3_tx_pmx_func: uart3_tx_pmx_func {
      pinctrl-single,pins = <0x50    0x0>;  //0x50为寄存器中管脚的Offset Address,0x0为二进制的管脚复用关系000(pad_utxd3)发送
      };
      uart3_tx_pmx_idle: uart3_tx_pmx_idle {
      pinctrl-single,pins = <0x50    0x0>;  //0x50为寄存器中管脚的Offset Address,0x0为二进制的管脚复用关系000(pad_utxd3)发送
      };
      uart3_rx_pmx_func:uart3_rx_pmx_func {
      pinctrl-single,pins = <0x54    0x0>; //0x54为寄存器中管脚的Offset Address,0x0为二进制的管脚复用关系000(pad_urxd3)接收
      };
      uart3_rx_pmx_idle: uart3_rx_pmx_idle {
      pinctrl-single,pins = <0x54    0x0>; //0x54为寄存器中管脚的Offset Address,0x0为二进制的管脚复用关系000(pad_urxd3)接收
      };
      };

      同一个管脚只能复用为一种功能,如uart3或can,不可同时复用为多个功能。

    3. 配置完成后,按“Esc”键,再执行:wq!保存修改,并按“Enter”键退出。
  9. 将新增的整机dts文件添加到编译路径中。
    1. 执行如下命令,进入“dtbtool”目录。

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

    2. 执行如下命令,修改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 unreleased/hi1911-esl/hi1911-esl-b600.dts unreleased/hi1911-esl/hi1911-esl-rc-b600.dts unreleased/hi1911-fpga/hi1911-fpga-b600_b0.dts unreleased/hi1911-fpga/hi1911-fpga-b600_b0_b1.dts unreleased/hi1911-fpga/hi1911-fpga-b600_b0_b2.dts unreleased/hi1911-fpga/hi1911-fpga-rc-b600_b0.dts unreleased/hi1911-fpga/hi1911-fpga-rc-b600_b0_b1.dts unreleased/hi1911-fpga/hi1911-fpga-rc-b600_b0_b2.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-M160-B51.dts hi1910B-asic-M100-B00.dts hi1910B-asic-M101-B00.dts hi1910B-asic-M150-B00.dts hi1910B-asic-M151-B00.dts  hi1910B-asic-M150-B33.dts)

      新增加的dts只能在加粗字体段落末尾添加。

    3. 配置完成后,按“Esc”键,再执行:wq!保存修改,并按“Enter”键退出。
  10. 编译DTB文件。
    1. 执行如下命令,返回“Ascend310B-source”目录。

      cd /opt/Ascend310B-source

    2. 执行如下命令,编译DTB文件。

      bash build.sh dtb

      出现如下回显,且生成“dt.img”文件表示编译内核userBaseConfig文件成功。

      generate /opt/Ascend310B-source/output/dt.img success! 
      sign /opt/Ascend310B-source/output/dt.img success!

      编译后的“dt.img”文件会自动存放于“Ascend310B-source/output”目录下。

  11. 生效DTB文件,具体请参见生效DTB文件