调试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驱动之三