编译

  1. 登录Linux服务器。
  2. 执行如下命令,切换至root用户。

    su - root

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

    cd /opt

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

    tar -xzvf Ascend310B-source.tar.gz

    tar -xzvf 源码包

  6. 执行如下命令,进入product目录。

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

  7. 执行如下命令编辑hi1910B-pinctrl-M100-B51.dtsi文件。

    vim hi1910B-pinctrl-M100-B51.dtsi

    根据表格表1管脚19、21、23与24的端口复用寄存器基地址为0x0082320000,管脚19、21、23与24的复用寄存器偏移地址分别为0x068、0x06c、0x060和0x064。

    找到pinmux@82320000节点,修改SPI0节点的复用寄存器的值即可。

    当前寄存器值0x0为SPI功能,将其更改为0x3,0x3为gpio功能。

    更改后如下图所示,图中红色方框内为修改内容。

    用户可根据自身需要配置端口复用寄存器的值,寄存器的值与复用功能的对应关系请参见表1

  8. (可选)hi1910B-pinctrl-M100-B51.dtsi文件未全部包含表1中涉及的管脚,当用户需要复用文件中未涉及的管脚,可参考此步骤添加。

    • 当管脚的复用寄存器基地址为0x00C4000000、0x0082320000或0x0400140000时,可在hi1910B-pinctrl-M100-B51.dtsi文件中对应节点下参考如下格式进行配置。

      示例:在0x00C4000000节点下新增配置,将管脚22复用为gpio0_02,红框内为新增内容。

    • 当管脚的复用寄存器基地址为0x00A0140000时,hi1910B-pinctrl-M100-B51.dtsi文件中无此节点,此时可参考hi1910B-pinctrl-M150-B50.dtsi中的配置。

      hi1910B-pinctrl-M150-B50.dtsi在“Ascend310B-source/dtb/dts/hi1910b/hi1910BL/product”目录下。

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

    :wq!

  10. 执行以下命令,返回至opt目录。

    cd /opt

  11. 禁用SPI0功能。

    由于SPI0的管脚被改成GPIO功能,SPI0的驱动无法使用,需要将其功能进行屏蔽。

    执行以下命令,打开Ascend310B-source/dtb/dts/hi1910b/hi1910BL/base路径下的“hi1910B-spi.dtsi”文件。

    vim Ascend310B-source/dtb/dts/hi1910b/hi1910BL/base/hi1910B-spi.dtsi

    在SPI0设备节点中添加语句“status = "disabled";”以禁用SPI0管脚的主功能。修改完成后如下图所示,图中红色方框内为新增内容。

    本节以SPI0为例,修改dts文件,若复用其他管脚功能,请根据实际情况修改dts文件,禁用不使用的功能或添加新功能。

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

    :wq!

  13. 执行如下命令,编译dtb文件。

    cd /opt/Ascend310B-source

    bash build.sh dtb

    出现如下回显,表示编译内核dtb文件成功。

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

    编译后的dt.img文件会自动存放于output目录下。