/**

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

1.1硬件工具

1)iTOP4412开发板

2)U盘或者TF卡

3)PC机

4)串口

1.2软件工具

1)虚拟机Vmware

2)Ubuntu12.04.2

3)超级终端(串口助手)

2驱动MakeFile文件的编写

我们在前面的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驱动之三

调试exynos4412—ARM嵌入式Linux—LEDS/GPIO驱动之二的更多相关文章

  1. 调试exynos4412—ARM嵌入式Linux—LEDS/GPIO驱动之一

    /** ****************************************************************************** * @author    暴走的小 ...

  2. 调试exynos4412—ARM嵌入式Linux—LEDS/GPIO驱动之三

    /** ****************************************************************************** * @author    暴走的小 ...

  3. Linux下GPIO驱动(二) ----s3c_gpio_cfgpin();gpio_set_value();

    首先来看s3c_gpio_cfgpin(); int s3c_gpio_cfgpin(unsigned int pin, unsigned int config) { struct s3c_gpio_ ...

  4. Holer实现外网访问ARM嵌入式Linux系统

    公网访问ARM嵌入式Linux系统 实验室里的ARM嵌入式Linux系统,只能在局域网内访问,怎样从公网也能访问内网ARM嵌入式Linux系统? 本文将介绍使用holer实现的具体步骤. 1. 准备工 ...

  5. 外网访问ARM嵌入式Linux系统

    外网访问ARM嵌入式Linux系统 实验室里的ARM嵌入式Linux系统,只能在局域网内访问,怎样从外网也能访问ARM嵌入式Linux系统? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装并 ...

  6. 【VS开发】【DSP开发】浅谈Linux PCI设备驱动(二)

    我们在 浅谈Linux PCI设备驱动(一)中(以下简称 浅谈(一) )介绍了PCI的配置寄存器组,而Linux PCI初始化就是使用了这些寄存器来进行的.后面我们会举个例子来说明Linux PCI设 ...

  7. Linux下GPIO驱动(一) ----一个简单的LED驱动

    /******************************* * *杂项设备驱动:miscdevice *majior=10; * * *****************************/ ...

  8. Linux下GPIO驱动(三) ----gpio_desc()的分析

    上篇最后提出的疑问是结构体gpio_chip中的成员函数set等是怎么实现的,在回答之前先介绍下gpio_desc这个结构体. 如上图所示,右上方部分为GPIO驱动对其它驱动提供的GPIO操作接口,其 ...

  9. 很好的linux下GPIO驱动详解文章

    原文地址  http://blog.csdn.net/llxmedici/article/details/6282372 打算跟着友善之臂的<mini2440 linux移植开发指南>来做 ...

随机推荐

  1. mvc4 to mvc5 and EF5 to EF6

    今天把 后台的mvc 升级到了mvc5和ef6 .出错很正常. 下面是一些错误信息. [A]System.Web.WebPages.Razor.Configuration.HostSection 无法 ...

  2. Java serialVersionUID

    1.为什么要使用serialVersionUID (1)对于实现了Serializable接口的类,可以将其序列化输出至磁盘文件中,同时会将其serialVersionUID输出到文件中. (2)然后 ...

  3. keil C51中建立多文件时,变量重复定义的解决

    c/c++语言中有很多地方要用到extern,但是如果没有真正的了解它的意义,会给编程带来很大的麻烦,为了使大家少走弯路,特祥细的说明一下. 对于比较小的程序,一般只有一个c文件和一个头文件,全局变量 ...

  4. Java FutureTask理解

    尊敬原创作者,转载请注明出处: http://blog.csdn.net/gemmem/article/details/8956703 FutureTask是为了弥补Thread的不足而设计的,它可以 ...

  5. 使用bacula实现Linux的远程备份和还原

    Bacula,被誉为开源软件中最好的备份还原软件,它提供了企业级的客户机/服务器的备份解决方案,能够通过网络来管理文件的备份,恢复和核实工作.Bacula,既有windows版本的,也有Linux,U ...

  6. Maven学习(1) - Maven入门

    home index:http://maven.apache.org/ download:http://maven.apache.org/download.cgi install: http://ma ...

  7. 传智播客C语言视频第一季(有效下载期为10.1-10.7,10.8关闭)

     J:\传智播客_尹成_C语言从菜鸟到高手├─传智播客_尹成_C语言从菜鸟到高手_第一章C语言概述A│      第一讲1.1C语言第一阶段.mp4│      第二讲1.2c语言入门教程.mp4 ...

  8. HDU-2149 Public Sale

    http://acm.hdu.edu.cn/showproblem.php?pid=2149 巴什博奕(Bash Game): Public Sale Time Limit: 1000/1000 MS ...

  9. lazyman学习

    1.安装: gem install lazyman 2.建立工程: cd到工程目录下 lazyman new 工程名 3.打开调试命令 lazyman c lazyman调用selenium-webd ...

  10. Uncode-Schedule首页、文档和下载 - 分布式任务调度组件 - 开源中国社区

    Uncode-Schedule首页.文档和下载 - 分布式任务调度组件 - 开源中国社区 分布式任务调度组件 Uncode-Schedule