
北京立萨科技有限公司
咨询热线:010-82488292
公司电话:010-82488292
公司传真:010-82611646
企业邮箱:sales@lisatech.cn
地址:北京市海淀区中关村大街19号 新中关大厦B座南翼15层1507室
I.MX6 评估板 开发指导(GPIO)
摘要 : I.MX6 GPIO的值计算方法是(所在的组 - 1) * 32 + 序号,所以GPIO_1_20的管脚值为 (1 – 1) * 32 + 20 = 20。
I.MX6 评估板 开发指导(GPIO)IF">[size=0.875em]
目录[size=12.502px] [隐藏]
1GPIO输出和输入
1.1修改.h文件
1.2配置内核
1.3编译
1.4重新烧写系统并启动
1.5设备操作
1.5.1查看gpio目录
1.5.2向系统注册GPIO
1.5.3GPIO输出控制
1.5.4GPIO输入设置
1.5.5注销GPIO接口
2GPIO LED
2.1进入内核目录
2.2添加代码
2.2.1修改.h文件
2.2.2修改.c文件
2.3内核配置
2.4编译
2.5重新烧写系统并启动
2.6GPIO_LED操作
2.6.1设备文件目录
2.6.2操作示例
3GPIO按键
3.1修改.h文件
3.2修改.c文件
3.3内核配置
3.4编译
3.5重新烧写系统并启动
3.6GPIO按键操作
3.6.1GPIO_KEYS设备
3.6.2查看设备信息
3.6.3设备文件
3.6.4操作示例
GPIO输出和输入
GPIO输入输出以SD1_CLK管脚为例。
修改.h文件
1)检查头文件中对SD1_CLK的配置
示例如下:
$ sed -n "/PAD_SD1_CLK/p" arch/ARM/mach-mx6/board-mx6q_sabresd.h
2)注释头文件中对SD1_CLK的配置
示例如下:
$ sed -i "s/MX6Q_PAD_SD1_CLK/// &/g" arch/arm/mach-mx6/board-mx6q_sabresd.h
3)在mx6q_sabresd_pads中添加对SD1_CLK的配置
配置SD1_CLK功能为MX6Q_PAD_SD1_CLK__GPIO_1_20
示例如下:
$ sed -i "/mx6q_sabresd_pads/a\ MX6Q_PAD_SD1_CLK__GPIO_1_20,"
arch/arm/mach-mx6/board-mx6q_sabresd.h
4)查看修改结果
示例如下:
$ sed -n "/PAD_SD1_CLK/p" arch/arm/mach-mx6/board-mx6q_sabresd.h
配置内核
菜单定位
Device Drivers ---> -*- GPIO Support ---> /sys/class/gpio/... (sysfs inteRFace)
编译
make uImage
重新烧写系统并启动设备操作查看gpio目录
在/sys/class/gpio/目录下可以看到已经导出的GPIO
$ ls /sys/class/gpio/
向系统注册GPIO
使用echo注册GPIO_1_20到系统,即可看到gpio目录下多出一个gpio20目录。
提示:I.MX6 GPIO的值计算方法是(所在的组 - 1) * 32 + 序号,所以GPIO_1_20的管脚值为 (1 – 1) * 32 + 20 = 20。
$ echo 20 > /sys/class/gpio/export
GPIO输出控制
设置管脚为输出状态
$ echo out > /sys/class/gpio/gpio20/direction
设置管脚为输出为高电平
echo 1 > /sys/class/gpio/gpio20/value
设置管脚为输出为低电平
echo 0 > /sys/class/gpio/gpio20/value
GPIO输入设置
设置管脚为输入状态
echo in > /sys/class/gpio/gpio20/direction
获取输入值
cat /sys/class/gpio/gpio20/value
注销GPIO接口
注销GPIO_1_20
echo 20 > /sys/class/gpio/unexport
GPIO LED
说明:GPIO LED以PAD NANDF_CS0为例。
进入内核目录
$ cd ~/MY-I.MX6/linux-3.0.35/
添加代码修改.h文件
1)查找头文件中对NANDF_CS0的配置
示例如下:
$ sed -n "/PAD_NANDF_CS0/p" arch/arm/mach-mx6/board-mx6q_sabresd.h
2)注释头文件中对NANDF_CS0的配置
示例如下:
$ sed -i "s/MX6Q_PAD_NANDF_CS0/// &/g" arch/arm/mach-mx6/board-mx6q_sabresd.h
3)在mx6q_sabresd_pads中添加对NANDF_CS0的配置
配置NANDF_CS0功能为MX6Q_PAD_NANDF_CS0__GPIO_6_11
示例如下:
$ sed -i "/mx6q_sabresd_pads/a\ MX6Q_PAD_NANDF_CS0__GPIO_6_11," arch/arm/mach-mx6/board-mx6q_sabresd.h
4)查看修改结果
示例如下:
$ sed -n "/PAD_NANDF_CS0/p" arch/arm/mach-mx6/board-mx6q_sabresd.h
修改.c文件
1)检查.c文件中GPIO是否被重复使用
示例如下:
$ sed -n ‘/IMX_GPIO_NR(6,.11)/p‘ arch/arm/mach-mx6/board-mx6q_sabresd.c
2)在.c文件中增加GPIO的宏定义
增加#define SABRESD_USER_LED IMX_GPIO_NR(6, 11)
示例如下:
$ GPIO_DEFINE="#define SABRESD_USER_LED IMX_GPIO_NR(6, 11)"
$ sed -i "1,/#define/{/#define/s/#define/${GPIO_DEFINE} &/}" arch/arm/mach-mx6/board-mx6q_sabresd.c
2)检查gpio_led类型的数据定义
示例如下:
$ sed -n ‘/struct gpio_led /,/}/p‘ arch/arm/mach-mx6/board-mx6q_sabresd.c
3)增加user_led的数据定义
static struct gpio_led imx6q_gpio_leds[] = {
GPIO_LED(SABRESD_USER_LED, "user_led", 0, 1,
"charger"),
};
内核配置
菜单定位
Device Drivers ---> LED Support ---> <*> LED Support for GPIO connected LEDs
编译
make uImage
重新烧写系统并启动GPIO_LED操作设备文件目录
启动系统后即存在/sys/class/leds/user_led目录,使用ls即可看到
$ ls /sys/class/leds/user_led
操作示例
1)置NANDF_CS0为1
$ echo 1 > /sys/class/leds/user_led/brightness
2)置NANDF_CS0为0
$ echo 0 > /sys/class/leds/user_led/brightness
GPIO按键
GPIO按键以GPIO_4、EIM_BCLK、CSI0_DATA_EN为例,分别是原理图的按键SW2,SW3和SW4。
修改.h文件
1)查找头文件中对PAD的配置
示例如下:
$ sed -n "/PAD_GPIO_4/p" arch/arm/mach-mx6/board-mx6q_sabresd.h
$ sed -n "/PAD_EIM_BCLK/p" arch/arm/mach-mx6/board-mx6q_sabresd.h
$ sed -n "/PAD_CSI0_DATA_EN/p" arch/arm/mach-mx6/board-mx6q_sabresd.h
2)注释头文件中对PAD的配置
示例如下:
$ sed -i "s/MX6Q_PAD_GPIO_4/// &/g" arch/arm/mach-mx6/board-mx6q_sabresd.h
$ sed -i "s/MX6Q_PAD_EIM_BCLK/// &/g" arch/arm/mach-mx6/board-mx6q_sabresd.h
$ sed -i "s/MX6Q_PAD_CSI0_DATA_EN/// &/g" arch/arm/mach-mx6/board-mx6q_sabresd.h
3)在mx6q_sabresd_pads中添加对PAD的配置
配置GPIO_4功能为MX6Q_PAD_GPIO_4__GPIO_1_4
示例如下:
$ sed -i "/mx6q_sabresd_pads/a\ MX6Q_PAD_GPIO_4__GPIO_1_4," arch/arm/mach-mx6/board-mx6q_sabresd.h
配置EIM_BCLK功能为MX6Q_PAD_EIM_BCLK__GPIO_6_31
示例如下:
$ sed -i "/mx6q_sabresd_pads/a\ MX6Q_PAD_EIM_BCLK__GPIO_6_31," arch/arm/mach-mx6/board-mx6q_sabresd.h
配置CSI0_DATA_EN的PAD功能为MX6Q_PAD_CSI0_DATA_EN__GPIO_5_20
示例如下:
$ sed -i "/mx6q_sabresd_pads/a\ MX6Q_PAD_CSI0_DATA_EN__GPIO_5_20," arch/arm/mach-mx6/board-mx6q_sabresd.h
4)查看修改结果
示例如下:
$ sed -n "/PAD_GPIO_4/p" arch/arm/mach-mx6/board-mx6q_sabresd.h
$ sed -n "/PAD_EIM_BCLK/p" arch/arm/mach-mx6/board-mx6q_sabresd.h
$ sed -n "/PAD_CSI0_DATA_EN/p" arch/arm/mach-mx6/board-mx6q_sabresd.h
修改.c文件
1)检查.c文件中GPIO是否被重复使用
示例如下:
$ sed -n ‘/IMX_GPIO_NR(1,.4)/p‘ arch/arm/mach-mx6/board-mx6q_sabresd.c
$ sed -n ‘/IMX_GPIO_NR(6,.31)/p‘ arch/arm/mach-mx6/board-mx6q_sabresd.c
$ sed -n ‘/IMX_GPIO_NR(5,.20)/p‘ arch/arm/mach-mx6/board-mx6q_sabresd.c
2)在.c文件中增加GPIO的宏定义
MX6Q_PAD_GPIO_4__GPIO_1_4
在.c文件中添加#define SABRESD_POWER_OFF IMX_GPIO_NR(1, 4)
示例如下:
$ GPIO_DEFINE="#define SABRESD_POWER_OFF IMX_GPIO_NR(1, 4)"
$ sed -i "1,/#define/{/#define/s/#define/${GPIO_DEFINE} &/}" arch/arm/mach-mx6/board-mx6q_sabresd.c
MX6Q_PAD_CSI0_DATA_EN__GPIO_5_20
在.c文件中添加#define SABRESD_VOLUME_UP IMX_GPIO_NR(6, 31)
示例如下:
$ GPIO_DEFINE="#define SABRESD_VOLUME_UP IMX_GPIO_NR(6, 31)"
$ sed -i "1,/#define/{/#define/s/#define/${GPIO_DEFINE} &/}" arch/arm/mach-mx6/board-mx6q_sabresd.c
MX6Q_PAD_CSI0_DATA_EN__GPIO_5_20
在.c文件中添加#define SABRESD_VOLUME_DN IMX_GPIO_NR(5, 20)
示例如下:
$ GPIO_DEFINE="#define SABRESD_VOLUME_DN IMX_GPIO_NR(5, 20)"
$ sed -i "1,/#define/{/#define/s/#define/${GPIO_DEFINE} &/}" arch/arm/mach-mx6/board-mx6q_sabresd.c
3)检查gpio_keys_button类型的数据定义
示例如下:
$ sed -n ‘/gpio_keys_button/,/}/p‘ arch/arm/mach-mx6/board-mx6q_sabresd.c
4)增加volume-up、volume-down、power的数据定义
static struct gpio_keys_button imx6q_buttons[] = {
GPIO_BUTTON(SABRESD_VOLUME_UP, KEY_VOLUMEUP, 1, "volume-up", 0, 1),
GPIO_BUTTON(SABRESD_VOLUME_DN, KEY_VOLUMEDOWN, 1, "volume-down", 0, 1),
GPIO_BUTTON(SABRESD_POWER_OFF, KEY_POWER, 1, "power", 1, 1),
};
内核配置
菜单定位:
Device Drivers ---> Input device support ---> Keyboards ---> <*> GPIO Buttons
编译
make uImage
重新烧写系统并启动GPIO按键操作GPIO_KEYS设备
启动系统后即存在/sys/devices/platform/gpio-keys目录,使用ls即可看到
$ ls /sys/devices/platform/gpio-keys
查看设备信息
在proc文件系统下可以看到相关信息
$ cat /proc/bus/input/devices
设备文件
event0即对应gpio按键对应的设备文件,使用ls可以查看:
$ ls /dev/input/event0 –la
操作示例
见Linux测试手册
上一篇:初学者可以以立萨科技的AM335X学习嵌入式1970-01-01
下一篇:Rockchip RK3399 eMMc 的 DTS 配置说明1970-01-01
文章推荐
- 智能家居必经之路探讨——立萨科技
- 物联网环境下的新零售之战-立萨科技
- 发展农业物联网 攻关核心技术是关键——立萨科技
- 应用推广遭遇三大障碍——立萨科技
- 最近的大热人工智能行业,创业者成功的有多大?-立萨科技
- 农业自动化的发展趋势——立萨科技
- 以光子作为存储单元?这样的内存有啥优势
- 物联网云智能锁助力智能家居安全系统——立萨科技
- 云电视或成智能家居普及的突破口——立萨科技
- 物联网将做大智能家居市场蛋糕——立萨科技
- 利用现代信息技术改造提升传统农业——立萨科技
- 可穿戴设备将成为远程医疗的优选终端——立萨科技
- 智慧农业--梦想因物联网技术而变成现实——立萨科技
- 农业物联网技术前景广阔 农民开始幸福生活——立萨科技
- 国内首家“物联网”农贸市场 ——立萨科技
- 物联网:传感器改变农业“靠天吃饭”的传统——立萨科技
- 北京今起试点实行路侧停车电子收费 有多种支付方式
- 成本过高,农业物联网难“接地气”——立萨科技
- 浅析医疗物联网——立萨科技
- 物联网时代,ARM向左和英特尔向右-立萨科技
我要评论: | |
*内 容: |
|
验证码: |
|
共有0条评论