調試exynos4412—ARM嵌入式Linux—LEDS/GPIO驅動之二

 /**node

******************************************************************************
* @author    暴走的小哥哥
* @version   V1.0.0
* @date       2016-02-19
******************************************************************************
* <  Beijing university of posts and telecommunications >
*******************************************************************************
******************************************************************************
* platform exynos4412
*******************************************************************************
**/
1工具

1.1硬件工具

1)iTOP4412開發板linux

2)U盤或者TF卡函數

3)PC機工具

4)串口post

1.2軟件工具spa

1)虛擬機Vmware3d

2)Ubuntu12.04.2調試

3)超級終端(串口助手)orm

2驅動MakeFile文件的編寫blog

咱們在前面的devicenode_linux_module.c文件上添加代碼,首先將文件名devicenode_linux_module.c改成leds.c。

先處理一下編譯文件Makefile,以下圖所示,將devicenode_linux_module改成leds。

3編寫驅動調用LED管腳

接着修改leds.c文件。

首先添加須要的頭文件,以下圖所示,分別是申請GPIO、配置函數、配置參數、GPIO宏定義等的頭文件。而後將設備節點名稱由hello_ctl123修改成hello_ctl

而後須要修改的就是probe函數,通常說來GPIO的初始化都是在probe中。以下圖所示,調用配置函數以及配置函數。

而後就是修改一下ioctl函數,在Linux中對GPIO的控制通常是使用ioctl,雖然write函數也能夠實現相似的功能,可是ioctl函數的效率高一些。以下圖所示,根據應用傳入的參數給GPIO賦值。

如上圖所示,先對於參數作一個簡單的判斷,而後給led賦值。

34編寫應用調用LED管腳

接着再來看一下應用,以下圖所示,應用比較簡單,調用延時函數,首先將Led點亮三秒,而後再滅掉三秒,再點亮。

在Ubuntu系統下新建leds文件夾,將寫好的leds和編譯腳本拷貝到leds文件夾下,使用Makefile命令編譯驅動,使用

「arm-none-linux-gnueabi-gcc -o invoke_leds invoke_leds.c -static」命令編譯應用。以下圖所示。

將上圖中的文件invoke_leds和leds.ko拷貝到U盤。

啓動開發板,將U盤插入開發板,使用命令「 mount /dev/sda1 /mnt/udisk/」加載U盤符,

使用命令「 insmod /mnt/udisk/leds.ko 」加載驅動leds.ko,

使用命令「./mnt/udisk/invoke_leds」運行小應用invoke_leds,以下圖所示。

通過上面的操做可觀察到led小燈會一亮一滅一亮,中間大概間隔三秒鐘。

 

本人文字水平有限,因此就一步一步的寫和截圖,但願這種形式對你們有所幫助!

本文只對系統默認的led進行控制,若是想要調用複用的leds,例如和wifi,camera複用

請參考本人博客:調試exynos4412—ARM嵌入式Linux—LEDS/GPIO驅動之三

相關文章
相關標籤/搜索