基于ok6410:

led驱动程序:

vim led.c

#include<linux/kernel.h>
#include<linux/module.h>
#include<linux/init.h>
#include<linux/io.h>
#include<linux/fs.h>
#include<linux/cdev.h>
#include"led.h"
#include<mach/gpio-bank-k.h>

#define GPMCON 0x7f008820
#define GPMDAT 0x7f008824

unsigned int *led_config;
unsigned int *led_data;

struct cdev cdev;
dev_t devno;

long led_loctl(struct file *filp, unsigned int cmd, unsigned long arg) //实现对硬件的控制
{
switch(cmd)
{
case LED_ON:
writel(0x00,led_data);
return 0;

case LED_OFF:
writel(0xf,led_data);想寄存器写入数据,驱动专用函数
return 0;

default:
return -EINVAL;

}

}
int led_open(struct inode *node, struct file *filp)  //open中实现硬件初始化
{
led_config = ioremap(GPMCON,4);
writel(0x1111,led_config);
led_data = ioremap(GPMDAT,4);//将寄存器映射为虚拟内存。
return 0;
}

const struct file_operations led_fops =
{
.open = led_open,
.unlocked_ioctl = led_loctl,
};

static int led_init() //模块入口函数
{
cdev_init(&cdev, &led_fops);
alloc_chrdev_region(&devno, 0, 1, "myled");
cdev_add(&cdev, devno, 1);
return 0;
}
static void led_exit() //模块注销
{
cdev_del(&cdev);
unregister_chrdev_region(devno, 1);

}

module_init(led_init);
module_exit(led_exit);

头文件的包含必要的命令:

vim led.h

#define LED_MAGIC 'l' //定义幻数
#define LED_ON _IO(LED_MAGIC,0)
#define LED_OFF _IO(LED_MAGIC,1)

应用程序编写:

vim led_app.c

#include"led.h"
#include<stdio.h>
#include<sys/fcntl.h>
#include<sys/ioctl.h>
#include<sys/stat.h>
#include<sys/types.h>

int main(int argc,char *argv[])
{
int cmd;
int fd;
if(argc<2){
printf("please enter the second para!\n");
return 0;}
cmd = atoi(argv[1]);
fd = open("/dev/myled",O_RDWR);
if(cmd == 1)
ioctl(fd,LED_ON);//设备驱动程序中对设备的I/O通道进行管理的函数。
else
ioctl(fd,LED_OFF);
return 0;}

安装模块,安装设备文件,执行编译好的应用程序。

简单的led驱动程序设计的更多相关文章

  1. linux设备驱动归纳总结(五):4.写个简单的LED驱动【转】

    本文转载自:http://blog.chinaunix.net/uid-25014876-id-84693.html linux设备驱动归纳总结(五):4.写个简单的LED驱动 xxxxxxxxxxx ...

  2. 【Linux开发】linux设备驱动归纳总结(五):4.写个简单的LED驱动

    linux设备驱动归纳总结(五):4.写个简单的LED驱动 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx ...

  3. led驱动程序设计

    LED的驱动程序很简单,按照张字符型设备驱动设计方法顺下来即可实现,这里主要讲几个注意事项. 一.在linux系统中,操作硬件不能够使用物理地址,一定要用虚拟地址.将物理地址转化为虚拟地址的函数如下: ...

  4. [国嵌攻略][117][LED驱动程序设计]

    LED程序设计 1.编写内核模块 2.搭建字符驱动框架 3.实现设备方法 头文件 <linux/io.h> writel() 1.编译/安装驱动 make cp leddev.ko ... ...

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

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

  6. Mini2440 LED驱动程序设计

    1 LED初始化: 2 LED闪烁设计 位或操作:| 取反操作:~ 位与操作:& http://www.tuicool.com/articles/eQzEJv

  7. ARM学习笔记13——LED驱动程序设计

    首先我们要根据开发板原理图得到控制LED灯的引脚是哪个,我们现在以LED1为例,我们已经知道LED1由S5PV210的GPC1_3控制,因此我们按如下步骤进行: 第一步是配制S5PV210的GPC1_ ...

  8. s3c6410开发板LED驱动程序设计详细…

    2 下面来看看tiny6410关于LED的原理图如图(1)所示: 图1    LED原理图 3 LED实例,代码如下所示:(代码摘自\光盘4\实验代码\3-3-1\src\main.c) main.c ...

  9. 【转】linux设备驱动程序之简单字符设备驱动

    原文网址:http://www.cnblogs.com/geneil/archive/2011/12/03/2272869.html 一.linux系统将设备分为3类:字符设备.块设备.网络设备.使用 ...

随机推荐

  1. 【深度学习系列】CNN模型的可视化

    前面几篇文章讲到了卷积神经网络CNN,但是对于它在每一层提取到的特征以及训练的过程可能还是不太明白,所以这节主要通过模型的可视化来神经网络在每一层中是如何训练的.我们知道,神经网络本身包含了一系列特征 ...

  2. 什么是MVC ?

    记得第一次面试phper(php是对我来说可以快速上手的另一web开发语言),人家问我MVC,我只知道m就是model,v就是view,c就是Controller,具体把其它的认识我是一无所知,结果我 ...

  3. 【开发技术】JAutodoc使用指南

    JAutodoc使用指南 下载地址:http://sourceforge.net/projects/jautodoc/?source=directory 使用方法:http://wenku.baidu ...

  4. .netCore数据库迁移

    程序包管理器控制台下Nuget 命令: 初始迁移命令: add-migration init -Context DAL.ProductContext 全称:migrations add Initial ...

  5. github not authorized eclipse

    eclipse/myeclipse > menu window > preferences > general > security > content >git ...

  6. vue不是内部或外部命令,配置一个Path系统变量就可以解决

    作为一个vue小白,最近为vue安装真是操碎了心.无论怎么查找网上的教程,还是解决不了"vue不是内部或外部的命令"诸如此类的问题.好在功夫不负有心人,终于在多次的试验下,成功解决 ...

  7. python3 第十六章 - 函数

    函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段.函数能提高应用的模块性,和代码的重复利用率.你已经知道Python提供了许多内建函数,比如print().但你也可以自己创建函数,这被 ...

  8. Django_xadmin后台全局设置

    如何使用xadmin主题功能? 在ursersa app下的adminx.py文件下,注册一个基础设置类BaseSetting,并注册 import xadminfrom xadmin import ...

  9. js面向对象之继承那点事儿根本就不是事

    继承 说道这个继承,了解object-oriented的朋友都知道,大多oo语言都有两种,一种是接口继承(只继承方法签名):一种是实现继承(继承实际的方法) 奈何js中没有签名,因而只有实现继承,而且 ...

  10. js中的语句

    java语句与js的语句一样.1.判断if else/switch <script type=text/javascript> function fun1(){ var num = 10; ...