OKMX6DL/Q 平台 GPIO 功能应用笔记
本文档介绍了在飞凌 OKMX6DL/Q-S3 平台(Linux 4.1.15)上配置和使用 GPIO 的两种方法。
基本信息
- 原始路径: /工作相关/飞凌嵌入式imx6全部资料/原始下载资料/OKMX6DL、Q系列产品应用笔记/OKMX6DL&Q-S3-linux4.1.15应用笔记/GPIO/GPIO 应用笔记.pdf
- 文件大小: 762 KB
- 页数: 9页
- 处理日期: 2026-09-20
- 提取方式: PDF文本提取(pdf-inspector)
- 状态: done
- 适用范围: 飞凌 OKMX6DL/Q-S3 平台 Linux 4.1.15
方法一:使用 iomux(设备树配置)
适用于需要在设备树中定义 GPIO 引脚复用功能的场景。
步骤
-
查找引脚定义
- 在
kernel/arch/arm/boot/dts/imx6q-pinfunc.h中查找对应的引脚宏定义 - 例如:
#define MX6QDL_PAD_EIM_A17__GPIO2_IO21 0x0f0 0x404 0x000 0x5 0x0
- 在
-
修改设备树
- 编辑
Kernel/arch/arm/boot/dts/imx6qdl-sabresd.dtsi - 添加引脚定义,去掉其他复用功能
- 编辑
-
编译烧录
- 编译生成新的镜像并烧写到开发板
-
文件系统操作
# 计算 GPIO 编号: GPIOn_IOx = (n-1)*32 + x # GPIO2_IO21 = (2-1)*32+21 = 53 # 导出 GPIO echo 53 > /sys/class/gpio/export # 设置为输出 echo out > /sys/class/gpio/gpio53/direction echo 1 > /sys/class/gpio/gpio53/value # 高电平 echo 0 > /sys/class/gpio/gpio53/value # 低电平 # 设置为输入 echo in > /sys/class/gpio/gpio53/direction # 取消导出 echo 53 > /sys/class/gpio/unexport
GPIO 输出测试脚本示例
#!/bin/bash
for test in 53 168
do
echo $test > /sys/class/gpio/export
echo out > /sys/class/gpio/gpio$test/direction
echo $1 > /sys/class/gpio/gpio$test/value
echo $test > /sys/class/gpio/unexport
done
echo complete执行:./gpiotest_o.sh 0(输出低电平)或 ./gpiotest_o.sh 1(输出高电平)
方法二:创建 dev/gpio 节点(内核驱动)
适用于需要通过字符设备接口控制 GPIO 的场景。
步骤
-
查找引脚定义
- 在
kernel/arch/arm/boot/dts/imx6q-pinfunc.h中查找
- 在
-
修改设备树配置文件
- 编辑
Kernel/arch/arm/boot/dts/imx6qdl-sabresd.dtsi - 确保引脚未被其他功能占用
- 编辑
-
添加设备节点
- 修改
Kernel/arch/arm/boot/dts/imx6q-s3-sabresd.dts - 在
drivers/gpio目录下添加驱动文件gpio-user.c - 同时添加
Kconfig和Makefile
- 修改
-
修改内核配置
# driver/gpio/Makefile obj-$(CONFIG_GPIO_USER_INTF) += gpio-user.o# driver/gpio/Kconfig config GPIO_USER_INTF tristate "gpio user interface" ---help--- this driver for all gpio control# arch/arm/config/imx_v7_defconfig CONFIG_GPIO_USER_INTF=y -
编译内核
- 确认生成
gpio-user.o - 用新的 zImage 和 dtb 替换 SD 卡 system 目录中的文件
- 确认生成
-
使用测试程序
# 编译 gpio-test.c gcc -o gpio-test gpio-test.c # 输出高电平 ./gpio-test out 0 1 # 输出低电平 ./gpio-test out 0 0
关键要点
- GPIO 编号计算:
GPIOn_IOx = (n-1)*32 + x - sysfs 接口: 通过
/sys/class/gpio/目录控制 GPIO - 设备树: 必须在设备树中正确配置引脚复用功能
- 电源域: GPIO 输出高电平电压取决于引脚所在的电源域