项目场景:
在眺望电子TW-IMX6DL-EVM开发板上开发时发现,即使IO口设置为输出状态,设置其电平为高,硬件上测量电平也是对的,但是gpio_get_value获取的状态一直是0。
编译环境及开发包:
主机:ubuntu18.04
交叉编译器:arm-linux-gnueabihf-gcc
QT5.12.8:qt-everywhere-opensource-src-5.12.8
开发板:TW-IMX6DL-EVM
Linux:Linux-4.1.15
串口工具:Xshell
注意:本文章的所有命令涉及到的路径均为眺望电子官方环境路径,需根据自身实际环境改变。本文所演示的平台来自于眺望电子 iMX6 ARM嵌入式平台,这是一个基于NXP iMX6 ARM处理器,支持单核/双核Cortex-A9的核心板。
解决方案:
1.配置SION位,使IO口在输出状态下可以正确获取状态。
这里以DTS配置为例:
&iomux {
pinctrl-name = "default";
pinctrl-0 = <&pinctrl_hog_1>;
imx6ul-evk {
...
/* 第29位配置为4,即表示设置SION位 */
MX6UL_PAD_GPIO1_IO09__GPIO1_IO09 0x40017059
...
};
...
};
2.参考资料:
drivers/pinctrl/freescale/pinctrl-imx.c
关键词:IMX_PAD_SION