/**linux
1)iTOP4412開發板ios
2)U盤或者TF卡數組
3)PC機ide
4)串口函數
1)虛擬機Vmware工具
2)Ubuntu12.04.2post
3)超級終端(串口助手)測試
4)源碼文件夾「gpios」3d
操做步驟調試
由於前面關於GPIO的使用都已經介紹的差很少了,如今直接給你們介紹操做過程。
以下圖所示,針對32提供的32個GPIO在驅動代碼中進行代碼註釋,簡要說明。
先須要去掉調用了這些GPIO的相關驅動。
1)去掉攝像頭驅動VIDEO_OV5640
Device Drivers --->
Multimedia support(MEDIA_SUPPORT [=y]) --->
Video capture adapters(VIDEO_CAPTURE_DRIVERS [=y])(去掉) --->
2)去掉WIFI驅動MTK_COMBO_CHIP_MT662
Device Drivers --->
MediaTek Connectivity Combo Chip Config --->
MediaTek Connectivity Combo Chip Support (MTK_COMBO [=y])(去掉) --->
Select Chip (<choice> [=y]) --->
3)去掉leds的驅動
Device Drivers --->
Character devices --->
Enable LEDS config --->
4)去掉Buzzer的驅動
Device Drivers --->
Character devices --->
Enable BUZZER config --->
修改完以後從新編譯內核,將新生成的內核二進制文件zImage燒寫到開發板。
由於我這裏使用的是以模塊的形式編譯驅動程序,因此能夠在這裏直接編譯內核zImage文件,燒寫到板子中
接着將前一個實驗的leds.c改成gpios.c。
修改一下Makefile文件,以下圖所示。
將這些GPIO打包爲一個數組,數組以下圖所示,而後定義一下數組長度LED_NUM。
將設備節點的名稱修改成hello_gpio,以下圖所示。
以下圖所示,先在probe函數中初始化。
以下圖所示,而後是ioctl函數中寫一個簡單的switch語句,提供給上層調用測試。
以下圖所示,最後是在remove函數中添加gpio_free釋放GPIO。
簡單的修改一下前面的應用程序。
在Ubuntu系統下新建gpios文件夾,將寫好的gpios、編譯腳本以及應用拷貝到gpios文件夾下,以下圖所示。
使用Makefile命令編譯驅動,而後使用
「arm-none-linux-gnueabi-gcc -o invoke_gpios invoke_gpios.c -static」命令編譯應用,以下圖所示。
將上圖中的文件invoke_gpios和gpios.ko拷貝到U盤。
啓動開發板,將U盤插入開發板,使用命令「mount /dev/sda1 /mnt/udisk/」加載U盤符。
使用命令「insmod /mnt/udisk/gpios.ko」加載驅動gpios.ko,
使用命令「./mnt/udisk/invoke_gpios 0」或者「./mnt/udisk/invoke_gpios 1」運行小應用invoke_gpios,以下圖所示。
如上圖所示,使用命令「./mnt/udisk/invoke_gpios 0」以後燈會滅,而後其它的GPIO也會都成爲低電平。
使用命令「./mnt/udisk/invoke_gpios 0」以後燈會亮,而後其它的GPIO也會都成爲高電平。
也能夠檢查一下運行應用以後有沒有錯誤,若是有錯誤,多半是由於沒有將調用對應GPIO的驅動去除,致使GPIO被佔用了。
本人文字水平有限,因此就一步一步的寫和截圖,但願這種形式對你們有所幫助!
若是有覺得能夠先參考本人博客另外的文章:
調試exynos4412—ARM嵌入式Linux—LEDS/GPIO驅動之一
調試exynos4412—ARM嵌入式Linux—LEDS/GPIO驅動之二