本文檔主要講解,iMX6 開發板,通過 sys 文件的方式來控制 GPIO。 要通過 sys 控制 GPIO,需要做以下幾步操作: 1 開啟內核中的“GPIO_SYSFS”驅動配置; 2 確保 IO 被配置為 GPIO,并且沒有驅動調用; 3 計算 GPIO 編號,通過命令或者腳本操作 GPIO。 1 GPIO_SYSFS 配置 如下圖所示,可以看到內核中 GPIO_SYSFS 是默認配置的,這個驅動所有原廠 BSP 基本都會包含,一般情況下是默認配置的。 2 確保 IO 被配置為 GPIO,并且沒有驅動調用 這里以 LED 的 GPIO 為例, 將 LED 的驅動去掉,確保沒有驅動調用。 Device Drivers ---> Character devices ---> Enable LEDS config ---去掉,并重新編譯內核燒寫到開發板中。 如下圖所示配置 menuconfig。 燒寫到開發板中,確保沒有 led 的設備節點,默認的內核中是有 led 設備節點的,如下圖所示。 GPIO 的配置這里就不再重復介紹,在“iTOP-iMX6-設備樹內核-IO 配置分析文檔_V1.0”中有介紹。 3 計算 GPIO 編號并測試 LED 的網絡標號為:KEY_ROW6 LED 對應 GPIO 的 PIN 腳名稱為:GPIO_2 GPIO_2 對應的宏定義為:#define MX6QDL_PAD_GPIO_2__GPIO1_IO02 那么 GPIO_2 對應的 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 ---> 寫低電平,小燈滅 如下圖所示,執行三條命令之后小燈亮。 接著執行 echo 0 > /sys/class/gpio/gpio2/value 小燈滅。 至此,sys 測試 gpio 完成。 另外需要注意的是,本文檔沒有介紹 LED 對應的管腳是如何配置的,因為 LED 驅動能夠運行,那么肯定在設備樹文件中配置了。 如果想要掌握如何配置管腳,可以參考“iTOP-iMX6-設備樹內核-IO 配置分析文檔_V1.X”和“iTOP-iMX6-設備樹內核-IO 擴展例程_V1.X”文檔。 |