豆搜网 文档下载 文档下载导航
设为首页 | 加入收藏
搜索 请输入内容:  
 导航当前位置: 文档下载 > 所有分类 > IT/计算机 > 计算机软件及应用 > 字符设备驱动程序开发1
侵权投诉

字符设备驱动程序开发1

Linux操作系统将所有的设备都看成文件,以操作文件的方式访问设备,应用程序不能直接操作硬件,而是使用统一的接口函数调用硬件驱动程序。这组接口被称为系统调用。如open,read.对于每一个系统调用,驱动程序中都有一个与之对应的函数,对于字符设备驱动程序,这些函数调用都集合在一个file_operation类型的数据结构中。当应用程序使用open函数打开某个设备时,设备驱动程序的file_operation结构中的open成员就会被调用。从这个角度来说,编写字符设备驱动程序就是为具体的硬件的file_operation结构编写各个函数。

那么当应用程序通过open,read,write等系统调用访问某个设备文件时,linux系统怎么知道去调用哪个驱动程序的file_operation结构中的open,read,write等成员呢?

驱动程序有一个初始化函数,在安装驱动程序时会调用它,在初始化函数中,会将驱动程序的file_operation结果连同其主设备号一起向内核进行注册。如下

int register_chrdev(unsigned int major, const char *name,const struct file_operations *fops);//参数因此是主设备号,设备名,驱动程序的file_operation.

执行register_chrdev函数后,当应用程序操作设备文件时,linux系统就会根据设备文件的类型(是字符设备还是块设备)、主设备号找到在内核中注册的file_operation结构, 编写字符驱动程序的过程大概如下:

(1)编写驱动程序初始化函数

(2)构造file_operation结构中要用到的各个成员函数

下面仿照别人的驱动写一个小的驱动

#include <linux/module.h>

#include <linux/kernel.h>

#include <linux/fs.h>

#include <linux/init.h>

#include <linux/delay.h>

#include <asm/uaccess.h>

#include <asm/irq.h>

#include <asm/io.h>

#include <asm/arch/regs-gpio.h>

#include <asm/hardware.h>

static int first_drv_open(struct inode *inode, struct file *file)//打开,这里只是简单测试, {

printk("first_drv_open\n");

return 0;

}

static int first_drv_write(struct inode *inode, struct file *file)//写,这里只是简单测试 {

printk("first_drv_write\n");

return 0;

}

static struct file_operations first_drv_fops = {

.owner = THIS_MODULE, /* 这是一个宏,推向编译模块时自动创建的__this_module变量 */

.open = first_drv_open, //指向创建的打开函数

第1页

热门文档

相关文档

  • 字符设备驱动1

    2-1 字符设备驱动程序基本结构 字符设备开发的基本步骤确定主设备号和次设备号 实现字符驱动程序实现file_operations结构体 实现初始化函数,注册字符设备 实现销毁函数...

  • 简单字符设备驱动程序 .

    简单字符设备驱动程序 ._IT/计算机_专业资料。简单字符设备驱动程序 .Blog:http://blog.csdn.net/jianchi88 linux 驱动程序开发步骤 1)查看原理图、数据手册,了解...

  • 字符设备驱动程序

    字符设备驱动:用于驱动能够像字节流(文件)一样被访问 的设备。应用程序通常可以...网络设备驱动程序 字符设备驱动程序基本结构 字符设备开发的基本步骤确定主设备号...

  • Linux字符设备驱动开发方法与应用实例

    Linux字符设备驱动开发方法与应用实例_IT/计算机_专业资料。技术应用栏目编辑:梁春丽...1. 设备驱动程序与内核 设备驱动程序与内核接口是编制驱动程序工作量 最大的一...

  • 第二章 字符设备驱动程序

    第二章 字符设备驱动程序_计算机软件及应用_IT/计算机_专业资料。Linux设备驱动的...设备驱动程序 2-1 字符设备驱动程序基本结构 字符设备开发的基本步骤确定主设备...

  • 字符设备驱动实验

    字符设备驱动实验_IT/计算机_专业资料。实验一:内核模块 /* 建立实验目录添加 ...开发板,则进入开发板上的 mknod 设备节点名(与驱动对应) 设备节点名(与驱动...

  • 字符设备驱动—参考

    Linux 驱动程序开发 - 字符设备驱动 (2008-08-03 08:08:08) 标签:it linux...驱动程序都是字符设备驱动程序,在这一章我们就扩展我们的“Hello World”程序来...

  • 字符设备驱动程序课程设计报告

    2. 3. 4. 了解 Linux 字符设备驱动程序的结构; ...一个设备驱动可能控制多个设备。新的设备驱动要有新...我翻阅了大概两本关 于嵌入式设备驱动开发的书籍, ...

  • 字符设备驱动程序

    Linux 设备驱动程序学习(1)-字符设备驱动程序 设备驱动程序学习( ) 字符设备驱动程序 Linux 设备驱动程序学习(1) 设备驱动程序学习( ) -字符设备驱动程序 字符...

  • 字符设备驱动程序的完整模板

    字符设备驱动程序的完整模板_交通运输_工程科技_专业资料。字符设备驱动程序的完整模板VxWorks 字符设备驱动程序的完整模板字符设备驱动程序的模板以下是一个完整的...

站点地图 | 文档上传 | 侵权投诉 | 手机版
新浪认证  诚信网站  绿色网站  可信网站   非经营性网站备案
本站所有资源均来自互联网,本站只负责收集和整理,均不承担任何法律责任,如有侵权等其它行为请联系我们.
文档下载 Copyright 2013 doc.docsou.com All Rights Reserved.  闽ICP备15022310号-9  闽公网安备 35021102001881号  email
返回顶部