调测参考
部分管脚存在复用关系,在使用时需确保当前管脚已经被复用为GPIO。
示例:第7组第2个管脚存在复用关系,配置寄存器IOMUX(基地址为0x400140000,偏移地址为0x30)为3,将此管脚复用为GPIO。
若当前管脚已为GPIO,可通过如下方法进行调测。通过DTB设备树方式配置GPIO为永久生效,其余方式配置GPIO为临时生效。
通过DTB设备树方式
通过在dts文件中配置第7组第2个GPIO管脚,生成DTB文件,具体操作步骤如下,此处以Atlas 200I DK A2 开发者套件为例进行文件配置。
- 登录Linux服务器。
- 执行如下命令,切换至root用户。
su - root
- 使用WinSCP工具或其他工具,将下载软件包获取的源码包“Ascend310B-source.tar.gz”上传至root用户属组目录下,例如“/opt”。详细操作请参见使用WinSCP传输文件。
- 执行如下命令,进入源码包所在的“/opt”目录。
cd /opt
- 执行如下命令,解压源码包“Ascend310B-source.tar.gz”。
tar -xzvf Ascend310B-source.tar.gz
- 执行如下命令,进入“Ascend310B-source/dtb/dts/hi1910b/hi1910BL”目录,查看底板的dts文件,如图1所示。
- 执行如下命令,进入“product”目录。
cd product
- 执行如下命令,打开模块的“hi1910B-pinctrl-M100-B51.dtsi”文件。
- 执行如下命令,进入“Ascend310B-source”目录。
cd /opt/Ascend310B-source
- 执行如下命令,编译OS内核。
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”目录下。
- 参考生效DTB文件章节,使配置生效。
通过gpio_operate工具
通过gpio_operate工具进行操作,详细使用方法请参考GPIO工具介绍。
通过devmem工具
通过devmem工具进行操作。配置第7组第2个GPIO管脚说明如下。
- 查询IOMUX寄存器(基地址为0x400140000,偏移地址为0x30),查询第7组第2个管脚的复用关系。
- 配置IOMUX寄存器(基地址为0x400140000,偏移地址为0x30)为3,将第7组第2个管脚复用为GPIO。
- 查询GPIO寄存器(基地址为0x400150000,偏移地址为0x4),第2位为第7组第2个GPIO管脚的方向。
- 配置GPIO寄存器(基地址为0x400150000,偏移地址为0x4)的第2位为1,可配置第7组第2个GPIO管脚方向为输出方向。
- 查询GPIO寄存器(基地址为0x400150000,偏移地址为0x50),查询第7组第2个GPIO管脚值。
- 配置GPIO寄存器(基地址为0x400150000,偏移地址为0x0)的第2位为1,可配置第7组第2个GPIO管脚值为1。
通过Sysfs方式
通过Sysfs方式控制GPIO。配置第7组第2个GPIO管脚说明如下。

GPIO_ID = START_ID+M = 224 + 2 = 226
- 导出GPIO管脚编号。
echo GPIO_ID > /sys/class/gpio/export
- 查询GPIO管脚方向。
cat /sys/class/gpio/gpioGPIO_ID/direction
- 配置GPIO管脚方向为输出方向。
echo out > /sys/class/gpio/gpioGPIO_ID/direction
- 查询GPIO管脚值。
cat /sys/class/gpio/gpioGPIO_ID/value
- 配置GPIO管脚值为1。
echo 1 > /sys/class/gpio/gpioGPIO_ID/value