led.c:

#include <linux/module.h>
#include <linux/init.h>
#include <linux/fs.h> int major = ; void arm_init(void)
{
/*操作硬件*/
printk("hello arm init!\n");
} int led_open(struct inode *inode, struct file *file)
{
arm_init(); return ;
} struct file_operations led_fops = {
.owner = THIS_MODULE, //属于本模块所有
.open = led_open,
}; int led_init(void)
{
int ret; /*模块入口*/
printk("hello kernel\n"); /*注册字符设备驱动*/
ret = register_chrdev(major,"led-driver",&led_fops);
if(ret < ){
printk("register chrdev led failed\n");
return -EBUSY;
} return ;
} void led_exit(void)
{
/*模块出口*/ /*注销*/
unregister_chrdev(major,"led-driver");
printk("bye!\n");
} /*执行insmod 的时候调用module_init*/
module_init(led_init); /*执行 rmmod 的时侯调用module_exit */
module_exit(led_exit); MODULE_DESCRIPTION("this my first drivers");
MODULE_AUTHOR("zhang san feng");
MODULE_LICENSE("GPL"); //许可证 (必须)

app.c:

#include <sys/types.h>
#include <stdio.h>
#include <sys/stat.h>
#include <fcntl.h> int main(int argc,char *argv[])
{
int fd; //文件描述符 /*以读的方式打开一个文件,如果文件不存在,则返回错误*/
fd = open("/dev/led",O_RDONLY);
if(fd < ){
perror("open");
return -;
}
printf("fd == %d\n",fd); return ;
}

Makefile:

obj-m        += led.o

################################################

KERNEL = /home/linux-3.0.-FS210_v9
ROOTFS = /opt/filesystem
CROSS_COMPILE = arm-cortex_a8-linux-gnueabi-gcc all:
make M=`pwd` -C $(KERNEL) modules
$(CROSS_COMPILE) -o app app.c
cp led.ko /opt/filesystem/test
cp app /opt/filesystem/test
cp test.sh /opt/filesystem/test clean:
make M=`pwd` -C $(KERNEL) modules clean install:
make M=`pwd` -C $(KERNEL) modules_install INSTALL_MOD_PATH=$(ROOTFS)

test.sh:

#/bin/bash

insmod led.ko
mknod /dev/led c
./app

led.c驱动框架2nd的更多相关文章

  1. Linux内核的LED设备驱动框架【转】

    /************************************************************************************ *本文为个人学习记录,如有错 ...

  2. led.c驱动框架

    Makefile: obj-m += led.o ################################################ KERNEL = /home/linux--FS21 ...

  3. Linux驱动框架之misc类设备驱动框架

    1.何为misc设备 (1)misc中文名就是杂项设备\杂散设备,因为现在的硬件设备多种多样,有好些设备不好对他们进行一个单独的分类,所以就将这些设备全部归属于 杂散设备,也就是misc设备,例如像a ...

  4. 驱动框架入门——以LED为例[【转】

    本文转载自;http://blog.csdn.net/oqqHuTu12345678/article/details/72783903 以下内容源于朱有鹏<物联网大讲堂>课程的学习,如有侵 ...

  5. Linux驱动框架之framebuffer驱动框架

    1.什么是framebuffer? (1)framebuffer帧缓冲(一屏幕数据)(简称fb)是linux内核中虚拟出的一个设备,framebuffer向应用层提供一个统一标准接口的显示设备.帧缓冲 ...

  6. linux驱动摸索 --驱动框架初始化(结合韦东山视频教程)

    一.驱动框架 初始化:insmod 加载 1.确定主设备号: 分为静态和动态分配,其中LED_GPIO_SIZE 表示支持的次设备号数目,一般默认为1. 相关实现代码如下: int result; d ...

  7. 一步步理解linux字符设备驱动框架(转)

    /* *本文版权归于凌阳教育.如转载请注明 *原作者和原文链接 http://blog.csdn.net/edudriver/article/details/18354313* *特此说明并保留对其追 ...

  8. platform设备驱动框架

    驱动框架 通过使用platform设备驱动框架,实现led驱动与设备操作的分离.     我们关注led_drv里面的 struct platform_driver led_drv里面的.probe函 ...

  9. 嵌入式Linux学习笔记(三) 字符型设备驱动--LED的驱动开发

    在成功构建了一个能够运行在开发板平台的系统后,下一步就要正式开始应用的开发(这里前提是有一定的C语言基础,对ARM体系的软/硬件,这部分有疑问可能要参考其它教程),根据需求仔细分解任务,可以发现包含的 ...

随机推荐

  1. 《C++ Primer》之面向对象编程(三)

    继承情况下的类作用域 在继承情况下,派生类的作用域嵌套在基类作用域中.如果不能在派生类作用域中确定名字,就在外围基类作用域中查找该名字的定义.正是这种类作用域的层次嵌套使我们能够直接访问基类的成员,就 ...

  2. hdu_5778_abs(暴力)

    题目链接:hdu_5778_abs 题意: 给你一个数x,然你找一个y,这个y只能被素数分解,每一个素数恰好出现2次,求y-x的绝对值最小 题解: 给官方的  ps:数据太水,打35个素数也能过 #i ...

  3. hdu_5727_Necklace(二分匹配)

    题目连接:hdu_5727_Necklace 题意: 有2*n个珠子,n个阳珠子,n个阴珠子,现在要将这2n个珠子做成一个项链,珠子只能阴阳交替排,有些阳珠子周围如果放了指定的阴珠子就会变坏,给你一个 ...

  4. hdu_4521_小明系列问题——小明序列(LIS)

    题目连接:http://acm.hdu.edu.cn/showproblem.php?pid=4521 题意:中文题,不解释 题解:这题就是LIS的加强版,可以用二分的nlogn来做,也可以用线段树的 ...

  5. ios 视频播放

    #import "ViewController.h"@import MediaPlayer; @interface ViewController (){    MPMoviePla ...

  6. 设置ubuntu 默认不启动图形界面

    设置ubuntu 默认不启动图形界面 一. 编辑文件/etc/X11/default-display-manager 如果值为/usr/sbin/gdm,则进入图形界面如果值为false,则进入控制台 ...

  7. PS:抠图方法1(利用对比度ctrl+l)

    PS:抠图方法1(利用对比度ctrl+l) 工具/原料   Photoshop.美女照片 方法/步骤     小编使用的是Photoshop cs5版本,大家使用其他版本都没有关系,界面略有不同,但操 ...

  8. JavaScript 常用功能实现一览(一)

    摘自于网络:http://www.cnblogs.com/joinger/articles/1506482.html 适合阅读范围:对JavaScript一无所知-离精通只差一步之遥的人基础知识:HT ...

  9. white-space详解

    white-space共有5种属性normal,nowrap,pre,pre-wrap,pre-line 网上的解释多半过于详细冗长,先做个简化处理,以便查询 normal    忽略空白  过长换行 ...

  10. SSH整合中为获取表单对象Action类实现的接口及拦截器配置

    保存员工或者用户信息时,以员工为例,是通过表单收集信息的,需要把这些信息赋给一个对象,然后保存到数据库中.对应的Action类须实现Preparable接口及ModelDriven接口,且在Actio ...