调试exynos4412—ARM嵌入式Linux—LEDS/GPIO驱动之二
/**
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驱动之二的更多相关文章
- 调试exynos4412—ARM嵌入式Linux—LEDS/GPIO驱动之一
/** ****************************************************************************** * @author 暴走的小 ...
- 调试exynos4412—ARM嵌入式Linux—LEDS/GPIO驱动之三
/** ****************************************************************************** * @author 暴走的小 ...
- Linux下GPIO驱动(二) ----s3c_gpio_cfgpin();gpio_set_value();
首先来看s3c_gpio_cfgpin(); int s3c_gpio_cfgpin(unsigned int pin, unsigned int config) { struct s3c_gpio_ ...
- Holer实现外网访问ARM嵌入式Linux系统
公网访问ARM嵌入式Linux系统 实验室里的ARM嵌入式Linux系统,只能在局域网内访问,怎样从公网也能访问内网ARM嵌入式Linux系统? 本文将介绍使用holer实现的具体步骤. 1. 准备工 ...
- 外网访问ARM嵌入式Linux系统
外网访问ARM嵌入式Linux系统 实验室里的ARM嵌入式Linux系统,只能在局域网内访问,怎样从外网也能访问ARM嵌入式Linux系统? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装并 ...
- 【VS开发】【DSP开发】浅谈Linux PCI设备驱动(二)
我们在 浅谈Linux PCI设备驱动(一)中(以下简称 浅谈(一) )介绍了PCI的配置寄存器组,而Linux PCI初始化就是使用了这些寄存器来进行的.后面我们会举个例子来说明Linux PCI设 ...
- Linux下GPIO驱动(一) ----一个简单的LED驱动
/******************************* * *杂项设备驱动:miscdevice *majior=10; * * *****************************/ ...
- Linux下GPIO驱动(三) ----gpio_desc()的分析
上篇最后提出的疑问是结构体gpio_chip中的成员函数set等是怎么实现的,在回答之前先介绍下gpio_desc这个结构体. 如上图所示,右上方部分为GPIO驱动对其它驱动提供的GPIO操作接口,其 ...
- 很好的linux下GPIO驱动详解文章
原文地址 http://blog.csdn.net/llxmedici/article/details/6282372 打算跟着友善之臂的<mini2440 linux移植开发指南>来做 ...
随机推荐
- wndows 7 Wifi热点
2016年09月13日 14時52分 wanglinqiang整理 Step1 cmd.exe(管理员身份运行) Step2 命令行输入[netsh wlan set hostednetwork mo ...
- 玩转C++运算符重载
运算符重载语法:返回值类型 operator运算符(参数列表) { 代码逻辑... } C++中的运算符重载是通过函数来实现的,可以将重载的运算符看作是类成的一个成员函数,向普通函数一样调用.如重 ...
- win7+ubuntu双系统安装方法
转自win7+ubuntu双系统安装方法 前段时间又安装一下win7+ubuntu双系统,过段时间就会忘记,这次自己写下来,以便以后查看. 1. 先准备一个分区来安装ubuntu.在win7 ...
- 用UIKIT的模态对话框要注意的地方
XXX,晚上又搞了三个小时左右,才摸清楚. 多个ID要注意唯一性. 而在DJANGO里,每一个循环的唯一性,也有技巧性. 父循环的编号 {{ forloop.parentloop.counter }} ...
- 在keil中使用Astyle格式化你的代码的方法
一个好的程序,不仅要有好的算法,同时也需要有良好的书写风格.写出好的算法不容易,但是好的代码风格却并不困难.提到格式化代码,Astyle是一个不能错过的工具,它可以方便的将程序代码格式化成自己想要的样 ...
- 14.8.3 Physical Row Structure of InnoDB Tables InnoDB 表的物理行结构
14.8.3 Physical Row Structure of InnoDB Tables InnoDB 表的物理行结构 一个InnoDB 表的物理行结构取决于在创建表指定的行格式 默认, Inno ...
- eclipse 中使用等宽字体 inconsolata
一直以来,就感觉使用 eclipse 时的那几种字体很难看,而且非等宽,空格宽度很小,排版很乱. 搜索并试用了一下,发现了字体inconsolata. 这是一个很适合编程的字体,效果如下: 非常漂亮. ...
- 深入浅出Node.js (9) - 玩转进程
9.1 服务模型的变迁 9.1.1 石器时代:同步 9.1.2 青铜时代:复制进程 9.1.3 白银时代:多线程 9.1.4 黄金时代:事件驱动 9.2 多进程架构 9.2.1 创建子进程 9.2.2 ...
- Linux Shell编程(25)——I/O 重定向
默认情况下始终有3个"文件"处于打开状态, stdin (键盘), stdout (屏幕), and stderr (错误消息输出到屏幕上). 这3个文件和其他打开的文件都可以被重 ...
- 贪心(哈夫曼树):HDU 5884 sort
aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAA2QAAAKACAIAAAB8KCy/AAAgAElEQVR4nOy9a5Adx3UmWL+kHxuekU ...