i.MX6UL添加GPIO的方法基于飞凌嵌入式OKMX6UL开发板
所有GPIO输入为1。(如果为非零值,是因为读取对应的位为1,可以修改内核源码中drivers/gpio/gpio-generic.c文件,将其中中bgpio_get函数中
return bgc->read_reg(bgc->reg_dat) & bgc->pin2mask(bgc, gpio);修改为
return !!(bgc->read_reg(bgc->reg_dat) & bgc->pin2mask(bgc, gpio));
修改之后,value值为1)
\iomuxc\shell\di\in-test.sh,复制到forlinx(比如)目录下./in-test.sh 118
\iomuxc\shell\do\close.sh,复制到forlinx(比如)目录下./close.sh 118
\iomuxc\shell\do\open.sh,复制到forlinx(比如)目录下./open.sh 118
或者采用\iomuxc\write-117-out-high\test,复制到forlinx(比如)目录下./test 将gpio 117输出为高。
方法二:创建dev/gpio节点。
1、在设备树文件中添加设备节点定义以及其引脚定义:
并将其他复用引脚对应的功能disabed,保证这些引脚没被重复定义使用。引脚的pinmux可以查看imx6ul-pinfunc.h文件。
2、在driver/misc/gpio目录下添加gpio驱动gpio-user.c,名字需要与节点定义里的驱动名字保持相同,客户也可以自己写驱动。同时添加Kconfig和Makefile文件。
修改driver/misc下Kconfig和Makefile文件:
在driver/misc/Makefile 中添加:
obj-y += gpio/
编辑driver/misc/Kconfig, 添加一行:
source "drivers/misc/gpio/Kconfig",如图:
在根目录下修改linux_imx6ul_config文件,添加:
CONFIG_GPIO_USER_INTF=y
3、编译。
make zImage
make ARCH=arm CROSS_COMPILE=arm-fsl-linux-gnueabi- dtbs
4、拷贝前面生成的zImage, imx6ul-14x14-evk.dtb 到 SD卡system目录中,SD卡方式烧录。
在dev下有gpio节点。
采用gpio-test.c为用户测试程序。编译为gpio-test。
使用gpio-test in 2测试DI。
使用gpio-test out 0 1 测试DO1 输出为高电平。
使用gpio-test out 0 0 测试DO1 输出为低电平。
http://www.forlinx.com/zixun/165.htm- 嵌入式系统的定义与发展历史(11-15)
- 嵌入式系统亲密接触(11-22)
- 嵌入式系统设计中的USB OTG方案(02-01)
- 嵌入式线控驾驶系统开发过程中设计和测试考虑(02-02)
- 一个典型的嵌入式系统设计和实现 (02-02)
- DDR SDRAM在嵌入式系统中的应用(02-07)