完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
配置文件简述
配置 gpio 需要研究三个文件,分别为“ arch/arm/plat-mxc/include/mach/iomux- mx6q.h”、“arch/arm/mach-mx6/board-mx6q_topeet.h”、“arch/arm/mach- mx6/board-mx6q_topeet.c”。 其中“arch/arm/plat-mxc/include/mach/iomux-mx6q.h”文件为 IMX6 所有 IO 及其 每个 IO 所有功能的定义集合,用户可通过此文件来查询某个 IO 的功能的定义。 “arch/arm/mach-mx6/board-mx6q_topeet.h”文件用来定义初始化 IMX6 对应需要 用到的 IO 口的功能。在该文件对 gpio 进行初始化。 “arch/arm/mach-mx6/board-mx6q_topeet.c”文件为 IMX6 的板级初始化文件,在 该文件可以对 gpio 引脚进行设置。 |
|
|
|
硬件介绍 1.2.1 底板部分 查看 v_2.2 版本的 iMX6 底板原理图。我们以下面的 5 个引脚为例。进行下面的操作。 下图是 v_2.1 版本的底板原理图。 在底板原理图上搜索各个网络标号“EIM_D17”、“EIM_D18”、“EIM_D20”、“KEY_ROW5”、“EIM_D19”。可以查看到均连接到板对板连接器。也就是全都连接到核心板上。接下来去看核心板原理图。 1.2.2 核心板部分 搜索上述的网络标号,查看连接到核心板的什么位置。如下图。 由上图可知,五个引脚分别接到核心的“EIM_D17”、“EIM_D18”、“EIM_D20”、“GPIO_1”、“EIM_D19”引脚。接下来在“arch/arm/plat-mxc/include/mach/iomux-mx6q.h”查看各个 IO 口的功能定义。 |
|
|
|
软件配置
1.3.1 iomux-mx6q.h 文件 iomux-mx6q.h 文件主要功能是查询某个 IO 的功能的定义。 进入 iMX6 内核源码目录,使用“vi arch/arm/plat-mxc/include/mach/iomux- mx6q.h”命令打开 iomux-mx6q.h 文件。如下图。 搜索上述查看到的五个引脚名称。 以引脚 1 为例。使用“/EIM_D17”搜索到如下信息。如下图。 由上图可以看见扩展总线”EIM_D17”被定义为 8 种功能。我们在使用该引脚是要注意,无论是初始化还是定义功能,都不能冲突,避免自己使用的功能被其他功能占用。EIM_D17 配置为 GPIO 功能时使用的是定义为:_MX6Q_PAD_EIM_D17__GPIO_3_17。 其中 _MX6Q_PAD_EIM_D17__GPIO_3_17 被定义为: #define _MX6Q_PAD_EIM_D17__GPIO_3_17 IOMUX_PAD(0x03A8, 0x0094, 5, 0x0000, 0, 0) 这个宏比较关键,其原型为: #define IOMUX_PAD(_pad_ctrl_ofs,_mux_ctrl_ofs,_mux_mode,_sel_input_ofs,_sel_input,_pad_ctrl) IOMUX_PAD 宏有 6 个参数,每个参数的意思是: 引脚 2、3、12 和引脚 1 定义类似。不再赘述。再搜索一下引脚 10 的定义。使用 “/GPIO_1”命令,查看到如下信息。(注意 GPIO 为 MX6Q_PAD 之后的 GPIO) 由 上 图 可 知 , GPIO_1 配 置 为 GPIO 功 能 时 使 用 的 定 义 为 : _MX6Q_PAD_GPIO_1__GPIO_1_1 。 现在可以暂时总结一下我们得到的信息。如下图。 1.3.2 board-mx6q_topeet.h 文件 board-mx6q_topeet.h 文件用来定义初始化 IMX6 对应需要用到的 IO 口的功能。 在 board-mx6q_topeet.h 文件中要搜索使用的 IO 有没有没被定义为其他功能,有的话需要注释掉,然后添加自己的初始化定义。 在内核源码目录输入“vi arch/arm/mach-mx6/board-mx6q_topeet.h”命令,打开board-mx6q_topeet.h 文件。如下图。 还是以 EIM_D17 的配置为例进行操作。使用”/MX6Q_PAD_EIM_D17”搜索初始化信息,查看到该功能已经被初始化。把该初始化注释掉,如下图。 再次搜素没有发现其他相关定义。其他引脚与此类似。要保证没有被其他功能定义(iomux-mx6q.h 文件中的定义)。还需要注释掉一个地方,如下图。 下面给上述引脚添加初始化。如下图。 注意,是添加到 mx6q_topeet_pads[]之中。 1.3.3 board-mx6q_topeet.c 文件 board-mx6q_topeet.c 文件可以对 gpio 引脚进行设置。 在 board-mx6q_topeet.c 文件中我们将要使用的 gpio 管脚有可能被其他功能占用,需 要我们把其他功能注释掉、或者设置为 NULL。 在 iMX6 的内核源码目录,使用”vi arch/arm/mach-mx6/board-mx6q_topeet.c”命令打开 board-mx6q_topeet.c 文件,如下图。 使用命令“/IMX_GPIO_NR(3, 17)”查找 EIM_D17 对应的配置。(此处应注意 17 和前面的逗号之间有个空格,不然搜索不到)。把搜索到配置修改为 NULL。如下图。 其它引脚与此类似。全部修改如下图。 至此。我们的配置就都做完了。注意:IMX_GPIO_NR(1, 1)一共有两处。 按照”iTOP-i.MX6 开发板之全能版使用手册”中的内核编译步骤,进行编译内核。重新烧写到开发板。 |
|
|
|
只有小组成员才能发言,加入小组>>
692 浏览 0 评论
1106 浏览 1 评论
2473 浏览 5 评论
2808 浏览 9 评论
移植了freeRTOS到STMf103之后显示没有定义的原因?
2646 浏览 6 评论
使用eim外接fpga可是端口一点反应都没有有没有大哥指点一下啊
653浏览 9评论
649浏览 7评论
请教大神怎样去解决iMX6Q在linux3.0.35内核上做AP失败的问题呢
781浏览 6评论
628浏览 5评论
668浏览 5评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-22 09:08 , Processed in 1.105827 second(s), Total 85, Slave 65 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号