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ā)板設備樹內核 IO 是如何配置為各種功能的基礎文檔。
1 系列 IO 配置概述
在作者接觸過的所有的飛思卡爾 BSP 源碼中,它們的 IO 配置方法基本都是類似的。
源碼中都會有一個頭文件,用戶保存全部 IO 的所有配置宏,在設備樹源碼中是
“arch/arm/boot/dts/imx6q-pinfunc.h”這個文件。
如下圖所示,是該文件 GPIO_2(這是 燈的宏定義)中所有的宏定義。這些宏定義在
內核運行的時候根據(jù)需要,選擇一個,默認內核中應該是使用的是
“MX6QDL_PAD_GPIO_2__GPIO1_IO02 ”這個宏,使用這個宏配置之后,它就是 GPIO
了。
源碼中都有一個初始化的地方,也就是引用上面宏的數(shù)組或者結構體。在設備樹代碼中
是“arch/arm/boot/dts/imx6qdl-sabresd.dtsi”文件。
例如上面提到的宏,在如下圖所示位置定義。
當然,我們在這個設備樹文件中,可以看到還有其它宏在別的地方定義和初始化,這里我
們先只介紹 GPIO 的,GPIO 在上圖中的位置定義即可,另外如果還有別的地方調用 IO 的
宏,是需要屏蔽掉的。
假如我們在調試 LED(GPIO_2)的時候,在上面位置加入了
“MX6QDL_PAD_GPIO_2__GPIO1_IO02”這個宏,另外還需要確保源碼中沒有引用其它的
宏,如果有引用必須屏蔽掉,如下圖所示剩下的四個宏都不能被引用。
2 LED 燈 IO 的配置原理分析
前面提到 LED 的 IO 宏對應的是 MX6QDL_PAD_GPIO_2__GPIO1_IO02,作者是直接給
的結論,這里給大家詳細分析下如果通過網(wǎng)絡標號找到對應的宏定義。
LED 小燈的網(wǎng)絡標號是“KEY_ROW6”,如下圖所示。
搜索“KEY_ROW6”,找到網(wǎng)絡標號在核心板上對應的 PIN 腳,如下圖所示,PIN 腳名
稱為“GPIO_2”。