1. 设备树修改
所有复用pin脚的定义在节点都在节点iomuxc中定义,通过pinctrl子系统来控制
&iomuxc_snvs {
/*对所定义的pin脚定义进行引用*/
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_gpio_gpio>;
imx6ul-evk {
pinctrl_gpio_gpio:gpio_gpio_grp{
fsl,pins = <
MX6ULL_PAD_SNVS_TAMPER2__GPIO5_IO02 0x80000000
MX6ULL_PAD_SNVS_TAMPER4__GPIO5_IO04 0x80000000
>;
...
};
}
编译出dtb文件后烧录到板子中
测试方法
输出测试
- 对于没有使用到的gpio管脚,可以将其导出到应用成。所对应的gpio序列号以上面MX6ULL_PAD_SNVS_TAMPER2__GPIO5_IO02为例,其为第5组第2个,序列号为(5-1)*32 + 2 =130
- 设置gpio为输出模式
- 通过手动输入进行测试
echo 130 > /sys/class/gpio130/export
echo out > /sys/class/gpio130/direction
echo 0 > /sys/class/gpio130/value
echo 1 > /sys/class/gpio130/value
可以通过电表或者led观测是否成功
输入测试
- 同样是导出
- 设置为输入模式
- 对该管脚进行上拉或者接地,并通过打印value观测值
echo 130 > /sys/class/gpio130/export
echo in > /sys/class/gpio130/direction
//管脚进行上拉或者接地
cat > /sys/class/gpio130/value