本文檔主要講解,iMX6 開發(fā)板,通過 sys 文件的方式來控制 GPIO。 要通過 sys 控制 GPIO,需要做以下幾步操作: 1 開啟內(nèi)核中的“GPIO_SYSFS”驅(qū)動配置; 2 確保 IO 被配置為 GPIO,并且沒有驅(qū)動調(diào)用; 3 計算 GPIO 編號,通過命令或者腳本操作 GPIO。 1 GPIO_SYSFS 配置 如下圖所示,可以看到內(nèi)核中 GPIO_SYSFS 是默認配置的,這個驅(qū)動所有原廠 BSP 基本都會包含,一般情況下是默認配置的。 ![]() 2 確保 IO 被配置為 GPIO,并且沒有驅(qū)動調(diào)用 這里以 LED 的 GPIO 為例, 將 LED 的驅(qū)動去掉,確保沒有驅(qū)動調(diào)用。 Device Drivers ---> Character devices ---> Enable LEDS config ---去掉,并重新編譯內(nèi)核燒寫到開發(fā)板中。 如下圖所示配置 menuconfig。 ![]() 燒寫到開發(fā)板中,確保沒有 led 的設(shè)備節(jié)點,默認的內(nèi)核中是有 led 設(shè)備節(jié)點的,如下圖所示。 ![]() GPIO 的配置這里就不再重復(fù)介紹,在“iTOP-iMX6-設(shè)備樹內(nèi)核-IO 配置分析文檔_V1.0”中有介紹。 3 計算 GPIO 編號并測試 LED 的網(wǎng)絡(luò)標號為:KEY_ROW6 LED 對應(yīng) GPIO 的 PIN 腳名稱為:GPIO_2 GPIO_2 對應(yīng)的宏定義為:#define MX6QDL_PAD_GPIO_2__GPIO1_IO02 那么 GPIO_2 對應(yīng)的 GPIO 的 bank[n]為 GPIO1_IO02,也就是 bank 1 的 02 號 GPIO。 GPIO 的編號計算方法為:nr=(P -1)* 32 + N; nr 為編號,P 為 bank 號,N 為具體 bank 中的編號。 那么 P=1,N=2,通過計算得出 nr=2。 測試命令為: echo nr > /sys/class/gpio/export echo out > /sys/class/gpio/gpionr/direction echo 1 > /sys/class/gpio/gpionr/value ---> 寫高電平,小燈亮 echo 0 > /sys/class/gpio/gpionr/value ---> 寫低電平,小燈滅 以上 nr 替換成 GPIO 的編號,則命令為: echo 2 > /sys/class/gpio/export echo out > /sys/class/gpio/gpio2/direction echo 1 > /sys/class/gpio/gpio2/value --->寫高電平,小燈亮 echo 0 > /sys/class/gpio/gpio2/value ---> 寫低電平,小燈滅 如下圖所示,執(zhí)行三條命令之后小燈亮。 ![]() 接著執(zhí)行 echo 0 > /sys/class/gpio/gpio2/value 小燈滅。 至此,sys 測試 gpio 完成。 另外需要注意的是,本文檔沒有介紹 LED 對應(yīng)的管腳是如何配置的,因為 LED 驅(qū)動能夠運行,那么肯定在設(shè)備樹文件中配置了。 如果想要掌握如何配置管腳,可以參考“iTOP-iMX6-設(shè)備樹內(nèi)核-IO 配置分析文檔_V1.X”和“iTOP-iMX6-設(shè)備樹內(nèi)核-IO 擴展例程_V1.X”文檔。 ![]() ![]() |