linux下驱动的基本模型
我们将详细的介绍Linux的设备驱动模型。Linux设备驱动模型是一个相当复杂的系统,对于初学者来说真有些无从入手。而且更加困难的是,随着新的Linux Kernel的release,Linux的设备驱动模型总会有或大或小的变化,我们将尽量展现 Linux Kernel 的这种变化。
早期的Linux内核(版本2.4之前)并没有实现一个统一的设备模型,设备节点的创建一般是mknod命令手动创建或利用devfs文件系统创建。早期的Linux发行版一般会采用手动创建的方式预先把通常用到的节点都创建出来,而嵌入式系统则会采用devfs的方式。起初Linux 2.6 内核还支持devfs,但从2.6.18开始,内核完全移除了devfs系统而采用的udev的方式动态的创建设备节点。因此,新的Linux发行版都采用udev的方式管理设备节点文件。
Linux2.6设备驱动模型的基本元素是Class、Bus、Device、Driver,下面我们分别介绍各个部分。
Class 和Class Device
驱动模型最基本的概念是设备及其类别,Linux中使用struct class 和struct class_device来管理不同类别的设备。由于设备驱动模型是一个复杂的系统,我们还是从一个简单的例子开始介绍,然后在逐步展开。其实实现设备节点的动态创建是一个很简单的事情,并不需要太多的代码。我们修改我们的驱动初始化函数如下:
#include <linux/device.h>
#define DEVNAME "hello"
static dev_t dev;
static struct class *hello_class;
static struct cdev *hello_cdev;
static int __init hello_init(void)
{
int error;
error = alloc_chrdev_region(&dev, 0, 2, "hello");
if (error)
{
printk("hello: alloc_chardev_region failed! ");
goto out;
}
hello_cdev = cdev_alloc();
if (hello_cdev == NULL)
{
printk("hello: alloc cdev failed! ");
error = -ENOMEM;
goto out_chrdev;
}
hello_cdev->ops = &hello_fops;
hello_cdev->owner = THIS_MODULE;
error = cdev_add(hello_cdev, dev, 1);
第2章Linux设备驱动模型_计算机软件及应用_IT/计算机_专业资料。Linux驱动编程 Linux驱动编程之驱动模型 Linux的驱动模型 ? 驱动作用– 在硬件接口与应用软件之间...
对Linux 设备驱动模型的一... 13页 2财富值 linux驱动模型 14页 1财富值 linux设备模型深探 40页 1财富值 linux2.6内核设备驱动模型... 136页 免费...
linux杂项设备驱动模型_计算机软件及应用_IT/计算机_专业资料。linux下,杂项设备驱动小结Linux 驱动中把无法归类的五花八门的设备定义为混杂设备(用 miscdevice 结构...
linux之驱动模型_计算机软件及应用_IT/计算机_专业资料。linux 驱动模型的初始化建立过程分析Linux 驱动模型 1. 引子 2. 驱动模型初始化过程 Linux 驱动模型的...
LINUX设备驱动之设备模型_计算机软件及应用_IT/计算机_专业资料。linux,linux嵌入式,2410-S实验指导书,Inode的关系,设备模型设备驱动之设备模型一---kobject LINUX...
Linux 设备驱动模型摘抄(1) Linux 统一设备模型 简介 Linux2.6 内核提供了新的设备模型, 目的是为了对计算机上的所有设备进行统一地表示 和操作, 包括设备本身和...
对Linux 设备驱动模型的一些理解 对 Linux 设备驱动模型的一些理解作者:张俊岭 EMAIL: sprite_zjl@sina.com; jlzhang@tangrae.com.cn QQ: 251450387 日期:2009-9...
linux platform驱动模型详解_IT/计算机_专业资料。以s3c2440为例详细分析linux platform驱动模型以s3c2440 为例分析 Linuxplatform 驱动模型一。概述 ...
Linux设备驱动模型之上层容器_IT/计算机_专业资料。linux driver model记得刚工作的时候,当时为了查证一个I2C的问题,硬着头皮跟了一下Linux下i2c总线的驱动代码,两...
LINUX驱动开发中字符设备模型浅析_IT/计算机_专业资料。学字符驱动开发很好的资料字符设备驱动模型浅析在 linux 系统中, 很多驱动是字符型驱动, 有些是直接编译集成...
热门文档