i.MX6UL添加GPIO的方法基于飞凌嵌入式OKMX6UL开发板_第1页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、i.mx6ul添加gpio的方法基于飞凌嵌入式okmx6ul开发板注:i.mx6ul添加gpio办法,用法平台为飞凌okmx6ul-c开发板,其它平台可参考用法 i.mx6ul开发板细节 办法一:采纳iomux的办法在设备树中iomux中添加复用gpio引脚如下,详细设置的上下拉,驱动能力,查找i.mx6ul cpu手册,对应修改。 比如mx6ul_pad_csi_data00_gpio4_io21 0x3008mx6ul_pad_csi_data01_gpio4_io22 0x1f0b1mx6ul_pad_csi_data02_gpio4_io23 0x1f0b1mx6ul_pad_csi_

2、data03_gpio4_io24 0x1f0b1 mx6ul_pad_snvs_tamper9_gpio5_io09 0x1f0b1mx6ul_pad_snvs_tamper8_gpio5_io08 0x1f0b1mx6ul_pad_jtag_tdo_gpio1_io12 0x1f0b1 同时修改设备树文件中(其他地方复用引脚) 编译设备树。替换飞凌imx6ul开发板中所用设备树。 此时可以用法echo指令举行控制:指令为:echo $i /sys/class/gpio/export echo out /sys/class/gpio/gpio$i/direction或echo in /sys

3、/class/gpio/gpio$i/direction echo 1 /sys/class/gpio/gpio$i/valueecho 0 /sys/class/gpio/gpio$i/value echo $i /sys/class/gpio/unexport 以控制gpio4_io22为例:1. 计算对应sys/class/gpio的值gpion_iox = (n-1)*32 + xgpio4_io22=(4-1)*32+22=1182. 将gpio4_io22设置为输出。echo 118 /sys/class/gpio/export用于通知系统需要导出控制的gpio引脚编号echo o

4、ut /sys/class/gpio/gpio118/direction 控制为输出echo 1 /sys/class/gpio/gpio118/value 输出为高电平或者echo 0 /sys/class/gpio/gpio118/value输出为低电平echo 118 /sys/class/gpio/unexport 通知系统取消导出3. 将gpio4_io22设置为输入。echo 118 /sys/class/gpio/export用于通知系统需要导出控制的gpio引脚编号echo in /sys/class/gpio/gpio118/direction 控制为输入这时给该引脚接高电平

5、,输入即为高电平,反之为低电平echo 118 /sys/class/gpio/unexport 通知系统取消导出4. 另外客户可以自己通过shell文件来控制gpio做为输入或者输出。4.1 gpio输出测试编写测试脚本 vi gpiotest_o.sh!/bin/bash gpio list gpio (bank-1)*32 + nr for test in 118 119 120 137 136 12doecho exporting pin $test.echo $test /sys/class/gpio/exportecho setting pin $1.echo out /sys/c

6、lass/gpio/gpio$test/directionecho $1 /sys/class/gpio/gpio$test/valueecho $test /sys/class/gpio/unexportdoneecho complete 修改脚本执行权限:chmod u+x gpiotest_o.sh测试gpio输出为低。进入到脚本所在路径:./gpiotest_o.sh 0全部gpio输出低电平 0v。测试gpio输出为高电平。进入到脚本所在路径:./gpiotest_o.sh 1全部gpio输出高电平。输出的高电平,按照引脚所在的电源域不同,可能会有区分。 另外有些客户发觉echo 1

7、18 /sys/class/gpio/export用于通知系统需要导出控制的gpio引脚编号echo out /sys/class/gpio/gpio118/direction 控制为输出echo 1 /sys/class/gpio/gpio118/value 输出为高电平cat /sys/class/gpio/gpio118/value 照旧为0缘由如下图所示,客户可以从cpu手册中查找到相关内容: 输入模式读取的是psr的值。 读取output的value值是从psr中读取的。而写入output值是写入到dr中的。可以通过设置sion位回环。 4.2 gpio输入测试编写测试脚本 vi g

8、piotest_i.sh!/bin/bash gpio list gpio (bank-1)*32 + nr for test in 118 119 120 137 136 12doecho exporting pin $test.echo $test /sys/class/gpio/exportecho in /sys/class/gpio/gpio$test/directiongpioval=cat /sys/class/gpio/gpio$test/valueecho gpio $test = $gpiovalechoecho $test /sys/class/gpio/unexport

9、doneecho complete 修改脚本执行权限:chmod u+x gpiotest_i.sh测试gpio输入为低。进入到脚本所在路径:./gpiotest_i.sh 全部gpio输入为 0。 测试gpio输入为高电平,比如5v。进入到脚本所在路径:./gpiotest_i.sh全部gpio输入为1。(假如为非零值,是由于读取对应的位为1,可以修改内核源码中drivers/gpio/gpio-generic.c文件,将其中中bgpio_get函数中return bgc-read_reg(bgc-reg_dat) & bgc-pin2mask(bgc, gpio);修改为return !(

10、bgc-read_reg(bgc-reg_dat) & bgc-pin2mask(bgc, gpio);修改之后,value值为1) iomuxcshelldiin-test.sh,复制到forlinx(比如)名目下./in-test.sh 118iomuxcshelldoclose.sh,复制到forlinx(比如)名目下./close.sh 118iomuxcshelldoopen.sh,复制到forlinx(比如)名目下./open.sh 118或者采纳iomuxcwrite-117-out-hightest,复制到forlinx(比如)名目下./test 将gpio 117输出为高。办

11、法二:创建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=y3、编译。make zimagemake arch=arm cross_compile=arm-fsl-linux-gnueabi- dtbs 4、拷贝前面生成的zimage, imx6ul-

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论