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