• 调试exynos4412—ARM嵌入式Linux—LEDS/GPIO驱动之二


     /**

    ******************************************************************************
    * @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驱动之三

    当一个人一心前行,整个世界为之让路! 我要从小白,一年时间之内掌握ARM,多核技术,linux应用,驱动,了解linux内核,会写Android代码 每周至少发布一篇博文!
  • 相关阅读:
    Linux-Oracle 安装配置步骤
    lombok 安装
    request (请求对象)
    response (响应对象)
    ServletContext (上下文对象)
    JavaWeb数据库配置
    HttpServlet
    博客园代码字体大小
    博客园背景美化
    用PHP实现反向代理服务器
  • 原文地址:https://www.cnblogs.com/-4412/p/5206728.html
Copyright © 2020-2023  润新知