编译
- 登录Linux服务器。
- 执行如下命令,切换至root用户。
su - root
- 将源码包“Ascend310B-source.tar.gz”上传至Linux系统root用户属组目录下,例如/opt。
- 执行如下命令,进入源码包所在目录,例如/opt。
cd /opt
- 执行如下命令,解压源码包“Ascend310B-source.tar.gz”。
tar -xzvf Ascend310B-source.tar.gz
tar -xzvf 源码包
- 执行如下命令,进入product目录。
cd Ascend310B-source/dtb/dts/hi1910b/hi1910BL/product
- 执行如下命令编辑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。
- (可选)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”目录下。
- 按“Esc”键,再执行如下命令,保存修改并按“Enter”键退出。
:wq!
- 执行以下命令,返回至opt目录。
cd /opt
- 禁用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文件,禁用不使用的功能或添加新功能。
- 按“Esc”键,再执行如下命令,保存修改并按“Enter”键退出。
:wq!
- 执行如下命令,编译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目录下。
