本文档主要介绍 iMX6 板子 gpio 引脚读写配置。有关平台文件的设备注册的资料可以参 考“iTOP-iMX6-平台文件注册设备”文档。注册的设备名称是“gpio_ctl”。 硬件环境:iMX6 开发板:核心板 v_1.2、底板 v_2.2(以及 v_2.1 底板)。 软件环境:Ubuntu12.04。 1.4 平台文件修改 进入 iTOPiMX6_android4.4.2/kernel_imx/arch/arm/mach-mx6/目录,使用 vi board-mx6q_topeet.c 命令,打开 board-mx6q_topeet.c 文件。 搜索关键词“CONFIG_LEDS_CTL”,按照 leds 模块,添加 gpio 的配置。如下如所示。
修改完成后,保存退出。再次打开 board-mx6q_topeet.c 文件。 搜索关键词“LEDS_CTL”,按照 leds 模块,添加 gpio 配置。如下图所示。
添加完成后,保存退出。 接着进入“iTOP-iMX6_android4.4.2/kernel_imx/drivers/char”目录,使用“vi Kconfig”命令打开 Kconfig 文件。 搜索关键词”LEDS_CTL”,按照 leds 模块,添加 gpio 配置。如下图所示。
修改完成后,保存退出。 可按下面步骤验证一下。 进入内核目录,依次使用命令”cp config_for_iTOPiMX6_linux .config”、” export ARCH=arm”、”make menuconfig”。进入 Device Drivers →Character devices 目 录,可以看见新添加的配置。如下图所示。
选中,退出,按照”iTOP-i.MX6 开发板之全能版使用手册”中的内核编译步骤,进行编 译内核。重新烧写到开发板。 开发板启动后,使用命令“ls /sys/devices/platform/”可以查看到新注册的 gpio_ctl 设 备。如下图所示。
至此,设备注册完成。 1.5 驱动加载及应用测试 1.5.1 读操作 具体编译过程不再赘述。依然可以参考“iTOP-iMX6-GPIO 读取 GPIO 以及拨码开关状 态”文档。下面讲解加载过程和测试过程。 可以通过挂载 nfs 共享目录、tftp 传输文件和 U 盘挂载等方法,把 iTOP- iMX6_gpio_read.ko 文件上传到开发板。 使用 insmod 命令加载驱动模块。如下图。
在 probe 函数中,有获取 gpio 状态的函数,然后打印出来。如下图。
下面使用”./iMX6_gpio_read”命令运行应用测试程序,检测 gpio 状态。如下图。
此时检测到的状态和刚加载驱动时状态一致。 通过驱动程序,我们可以得知,第一个 gpio 为 1 号拨码开关。后面依次为 U38 接口,1 号、2 号、3 号、10 号、12 号引脚。如下图。
接下来我们做一些连接,然后再运行测试程序,进行检测状态。 通过上述的底板原理图我们知道。U38 接口的 4 号引脚接地。11 号引脚接 3.3v 电源。 把 1 号拨码开关拨下来、通过导线连接 U38 接口 1 号引脚和 4 号引脚。然后使用 “./iMX6_gpio_read”命令,运行测试程序。结果如下图。
由上图可知,和我们预期相同。 使用引线连接 11 号引脚和 12 号引脚、使用引线连接 4 号引脚和 2 号引脚。然后使用 “./iMX6_gpio_read”命令,运行测试程序。结果如下图。
测试完成。 1.5.2 写操作 与读操作类似。具体编译过程不再赘述。依然可以参考“iTOP-iMX6-GPIO 读取 GPIO 以及拨码开关状态”文档。下面讲解加载过程和测试过程。 可以通过挂载 nfs 共享目录、tftp 传输文件和 U 盘挂载等方法,把 iTOP- iMX6_gpio_write.ko 文件上传到开发板。 使用 insmod 命令加载驱动模块。如下图。
在 probe 函数中,我们已经将各个 gpio 状态设置为 1,也就是高电平,如下图。
现在 U38 上的五个引脚均为高电平。通过万用表测量电压均为 3.3v(4 号、9 号引脚为 地)。下面调用应用程序,改变引脚的电压值。使用”./iMX6_gpio_write 0 1”命令改变 1 号引脚的电压值。如下图。
此时使用万用表测量引脚 1 的电压值。为 0V。 下面说明一下运行应用程序时,传递的两个参数。第一参数 cmd 表示状态。1 表示高电 平、0 表示低电平。第二个参数 arg 表示对应操作的 gpio。arg 为 0 表示 1 号拨码开关、为 1~5 表示 U38 接口的 1 号、2 号、3 号、10 号、12 号引脚。 下面把 1 号引脚拉高,10 号引脚拉低。使用命令”./iMX6_gpio_write 1 1” 和”./iMX6_gpio_write 0 4”。如下图。
使用万用表测量这两个引脚的电压。1 号引脚为 3.3v,10 号引脚为 0v。 测试完成。
|