AEAT-6010-A06
AEAT-6012-A06
AEAT-6600-T16
AEAT-8800-Q24
AEDB-9140-A06
AEDB-9140-A13
AEDR-8710-102
AEDR-8711-102
AEDR-8712-102
AEDR-8723-102
AEDS-9340-L00
AEDS-9340-W00
AEDT-9140-B0B
AEDT-9340-W00
AEDT-9811-B00
AEDT-9811-W00
AEDT-9811-Z00
AR18-A21E
AR18-A21S
AR18-S01
AR18-S02
AR18-S11
AR35-A21E
AR35-A21S
AR35-S12
AR35-S13
AR35-S15
AS22-M520-5G12
AS22-M530-5A12
AS22-M530-5B12
AS22-M530-5G12
AS22-M530-5T12
AS22-M560-4A12
AS22-M560-4B12
AS22-M560-4G12
AS22-M560-4T12
AS22-M562-4G12
AS22-M570-4B12
AS22-M570-4G12
AS22-M570-4J12
AS22-M572-4G12
HEDB-9100-C12
HEDB-9140-A12
HEDR-5420-ES214
HEDR-5421-EP111
HEDS-9000#B00
HEDS-9040#B00
HEDS-9040#J00
HEDS-9100#A00
HEDS-9100#B00
HEDS-9100#E00
HEDS-9140#A00
HEDS-9140#G00
HEDS-9140#H00
HEDS-9700#D50
HEDS-9700#E50
HEDS-9700#H50
HEDS-9720#P50
HEDS-9730#A50
HEDS-9730#Q50
HEDS-9731#B50
HRPG-AD32#16C
HRPG-AD32#16F
HRPG-AD32#56R
HRPG-ASCA#16C
HRPG-ASCA#16F
本文檔主要講解在 iMX6 開發(fā)板設(shè)備樹內(nèi)核 IO 是如何配置為各種功能的基礎(chǔ)文檔。
1 系列 IO 配置概述
在作者接觸過的所有的飛思卡爾 BSP 源碼中,它們的 IO 配置方法基本都是類似的。
源碼中都會有一個(gè)頭文件,用戶保存全部 IO 的所有配置宏,在設(shè)備樹源碼中是
“arch/arm/boot/dts/imx6q-pinfunc.h”這個(gè)文件。
如下圖所示,是該文件 GPIO_2(這是 燈的宏定義)中所有的宏定義。這些宏定義在
內(nèi)核運(yùn)行的時(shí)候根據(jù)需要,選擇一個(gè),默認(rèn)內(nèi)核中應(yīng)該是使用的是
“MX6QDL_PAD_GPIO_2__GPIO1_IO02 ”這個(gè)宏,使用這個(gè)宏配置之后,它就是 GPIO
了。
源碼中都有一個(gè)初始化的地方,也就是引用上面宏的數(shù)組或者結(jié)構(gòu)體。在設(shè)備樹代碼中
是“arch/arm/boot/dts/imx6qdl-sabresd.dtsi”文件。
例如上面提到的宏,在如下圖所示位置定義。
當(dāng)然,我們在這個(gè)設(shè)備樹文件中,可以看到還有其它宏在別的地方定義和初始化,這里我
們先只介紹 GPIO 的,GPIO 在上圖中的位置定義即可,另外如果還有別的地方調(diào)用 IO 的
宏,是需要屏蔽掉的。
假如我們在調(diào)試 LED(GPIO_2)的時(shí)候,在上面位置加入了
“MX6QDL_PAD_GPIO_2__GPIO1_IO02”這個(gè)宏,另外還需要確保源碼中沒有引用其它的
宏,如果有引用必須屏蔽掉,如下圖所示剩下的四個(gè)宏都不能被引用。
2 LED 燈 IO 的配置原理分析
前面提到 LED 的 IO 宏對應(yīng)的是 MX6QDL_PAD_GPIO_2__GPIO1_IO02,作者是直接給
的結(jié)論,這里給大家詳細(xì)分析下如果通過網(wǎng)絡(luò)標(biāo)號找到對應(yīng)的宏定義。
LED 小燈的網(wǎng)絡(luò)標(biāo)號是“KEY_ROW6”,如下圖所示。
搜索“KEY_ROW6”,找到網(wǎng)絡(luò)標(biāo)號在核心板上對應(yīng)的 PIN 腳,如下圖所示,PIN 腳名
稱為“GPIO_2”。