|
本文檔主要介紹 iMX6 板子 gpio 引腳讀寫配置。有關平臺文件的設備注冊的資料可以參 考“iTOP-iMX6-平臺文件注冊設備”文檔。注冊的設備名稱是“gpio_ctl”。 硬件環境:iMX6 開發板:核心板 v_1.2、底板 v_2.2(以及 v_2.1 底板)。 軟件環境:Ubuntu12.04。 1.4 平臺文件修改 進入 iTOPiMX6_android4.4.2/kernel_imx/arch/arm/mach-mx6/目錄,使用 vi board-mx6q_topeet.c 命令,打開 board-mx6q_topeet.c 文件。 搜索關鍵詞“CONFIG_LEDS_CTL”,按照 leds 模塊,添加 gpio 的配置。如下如所示。
修改完成后,保存退出。再次打開 board-mx6q_topeet.c 文件。 搜索關鍵詞“LEDS_CTL”,按照 leds 模塊,添加 gpio 配置。如下圖所示。
添加完成后,保存退出。 接著進入“iTOP-iMX6_android4.4.2/kernel_imx/drivers/char”目錄,使用“vi Kconfig”命令打開 Kconfig 文件。 搜索關鍵詞”LEDS_CTL”,按照 leds 模塊,添加 gpio 配置。如下圖所示。
修改完成后,保存退出。 可按下面步驟驗證一下。 進入內核目錄,依次使用命令”cp config_for_iTOPiMX6_linux .config”、” export ARCH=arm”、”make menuconfig”。進入 Device Drivers →Character devices 目 錄,可以看見新添加的配置。如下圖所示。
選中,退出,按照”iTOP-i.MX6 開發板之全能版使用手冊”中的內核編譯步驟,進行編 譯內核。重新燒寫到開發板。 開發板啟動后,使用命令“ls /sys/devices/platform/”可以查看到新注冊的 gpio_ctl 設 備。如下圖所示。
至此,設備注冊完成。 1.5 驅動加載及應用測試 1.5.1 讀操作 具體編譯過程不再贅述。依然可以參考“iTOP-iMX6-GPIO 讀取 GPIO 以及撥碼開關狀 態”文檔。下面講解加載過程和測試過程。 可以通過掛載 nfs 共享目錄、tftp 傳輸文件和 U 盤掛載等方法,把 iTOP- iMX6_gpio_read.ko 文件上傳到開發板。 使用 insmod 命令加載驅動模塊。如下圖。
在 probe 函數中,有獲取 gpio 狀態的函數,然后打印出來。如下圖。
下面使用”./iMX6_gpio_read”命令運行應用測試程序,檢測 gpio 狀態。如下圖。
此時檢測到的狀態和剛加載驅動時狀態一致。 通過驅動程序,我們可以得知,第一個 gpio 為 1 號撥碼開關。后面依次為 U38 接口,1 號、2 號、3 號、10 號、12 號引腳。如下圖。
接下來我們做一些連接,然后再運行測試程序,進行檢測狀態。 通過上述的底板原理圖我們知道。U38 接口的 4 號引腳接地。11 號引腳接 3.3v 電源。 把 1 號撥碼開關撥下來、通過導線連接 U38 接口 1 號引腳和 4 號引腳。然后使用 “./iMX6_gpio_read”命令,運行測試程序。結果如下圖。
由上圖可知,和我們預期相同。 使用引線連接 11 號引腳和 12 號引腳、使用引線連接 4 號引腳和 2 號引腳。然后使用 “./iMX6_gpio_read”命令,運行測試程序。結果如下圖。
測試完成。 1.5.2 寫操作 與讀操作類似。具體編譯過程不再贅述。依然可以參考“iTOP-iMX6-GPIO 讀取 GPIO 以及撥碼開關狀態”文檔。下面講解加載過程和測試過程。 可以通過掛載 nfs 共享目錄、tftp 傳輸文件和 U 盤掛載等方法,把 iTOP- iMX6_gpio_write.ko 文件上傳到開發板。 使用 insmod 命令加載驅動模塊。如下圖。
在 probe 函數中,我們已經將各個 gpio 狀態設置為 1,也就是高電平,如下圖。
現在 U38 上的五個引腳均為高電平。通過萬用表測量電壓均為 3.3v(4 號、9 號引腳為 地)。下面調用應用程序,改變引腳的電壓值。使用”./iMX6_gpio_write 0 1”命令改變 1 號引腳的電壓值。如下圖。
此時使用萬用表測量引腳 1 的電壓值。為 0V。 下面說明一下運行應用程序時,傳遞的兩個參數。第一參數 cmd 表示狀態。1 表示高電 平、0 表示低電平。第二個參數 arg 表示對應操作的 gpio。arg 為 0 表示 1 號撥碼開關、為 1~5 表示 U38 接口的 1 號、2 號、3 號、10 號、12 號引腳。 下面把 1 號引腳拉高,10 號引腳拉低。使用命令”./iMX6_gpio_write 1 1” 和”./iMX6_gpio_write 0 4”。如下圖。
使用萬用表測量這兩個引腳的電壓。1 號引腳為 3.3v,10 號引腳為 0v。 測試完成。
|