[linux驱动]设备驱动模型相关(二)——常用API

1,在/sys/class/目录下创建一个设备节点,比如创建一个class_test_usb的设备节点

[cpp] view plaincopy

  1. static struct calss *test_class;
  2. test_class = class_creat(THIS_MODULE,"class_test_usb");

2,在class_test_usb目录下创建另外一个设备节点android0,如下

[cpp] view plaincopy

  1. struct device *dev;
  2. dev = device_creat(test_calss,NULL,MKDEV(0,0),NULL,"android0");
  3. if(IS_ERR(dev))
  4. return PTR_ERR(dev);

3,在/sys/class/class_test_usb/android0/目录下创建几个其它设备节点enable state等

[cpp] view plaincopy

    1. static struct device_attribute* test_attributes[]={
    2. &dev_attr_state,
    3. &dev_attr_enable,
    4. NULL
    5. }
    6. static DEVICE_ATTR(enable,S_IRUGO |S_IWUSR,enable_show,enable_store);
    7. struct device_attribute ** attrs=test_attributes;
    8. struct device_attribute *attr;
    9. int err;
    10. while((attr=*attrs++))
    11. {
    12. err=device_creat_file(dev,attr);
    13. if(err)
    14. {
    15. device_destory(test_class,dev->devt);
    16. return err;
    17. }
    18. }
时间: 2024-10-10 13:27:40

[linux驱动]设备驱动模型相关(二)——常用API的相关文章

Linux I2C设备驱动编写(二)

在(一)中简述了Linux I2C子系统的三个主要成员i2c_adapter.i2c_driver.i2c_client.三者的关系也在上一节进行了描述.应该已经算是对Linux I2C子系统有了初步的了解.下面再对他们之间的关系进行代码层的深入分析,我认为对他们的关系了解的越好,越有助于I2C设备的驱动开发及调试. 带着问题去分析可能会更有帮助吧,通过对(一)的了解后,可能会产生以下的几点疑问: i2c_adapter驱动如何添加? i2c_client与i2c_board_info究竟是什么

linux总线设备驱动模型

本篇文章通过平台总线设备模型为例,讲解总线设备驱动模型: platform_device_register的作用: 1.把device放入bus的device链表 2.从bus的driver链表中取出每一个driver,用bus的match函数判断driver能否支持这个device 3.若可以支持,调用driver的probe函数 platform_driver_register的作用: 1.将driver放入bus的driver链表 2.从bus的device链表中取出每一个device,用

(57)Linux驱动开发之三Linux字符设备驱动

1.一般情况下,对每一种设备驱动都会定义一个软件模块,这个工程模块包含.h和.c文件,前者定义该设备驱动的数据结构并声明外部函数,后者进行设备驱动的具体实现. 2.典型的无操作系统下的逻辑开发程序是:这种三层的裸机驱动模型是足够满足低耦合.高内聚的特点的. 3.当有操作系统存在时,设备驱动成为了连接硬件和内核的桥梁,这时候的设备驱动对外表现为操作系统的API,与直接裸机开发不同,裸机开发时的设备驱动是应用工程师的API.如果设备驱动都按照操作系统给出的独立于设备的接口而设计,应用程序将可以使用统

linux字符设备驱动

一.字符设备.字符设备驱动与用户空间访问该设备的程序三者之间的关系. 如图,在Linux内核中使用cdev结构体来描述字符设备,通过其成员dev_t来定义设备号(分为主.次设备号)以确定字符设备的唯一性.通过其成员file_operations来定义字符设备驱动提供给VFS的接口函数,如常见的open().read().write()等. 在Linux字符设备驱动中,模块加载函数通过register_chrdev_region( ) 或alloc_chrdev_region( )来静态或者动态获

深入理解Linux字符设备驱动

文章从上层应用访问字符设备驱动开始,一步步地深入分析Linux字符设备的软件层次.组成框架和交互.如何编写驱动.设备文件的创建和mdev原理,对Linux字符设备驱动有全面的讲解. 本文整合之前发表的<Linux字符设备驱动剖析>和<Linux 设备文件的创建和mdev>两篇文章,基于linux字符设备驱动的所有相关知识给读者一个完整的呈现. 一.从最简单的应用程序入手 1.很简单,open设备文件,read.write.ioctl,最后close退出.如下: 二./dev目录与文

LINUX块设备驱动&lt;1&gt;

转自:http://blog.chinaunix.net/uid-15724196-id-128139.html 第1章 +---------------------------------------------------+|                 写一个块设备驱动                  |+---------------------------------------------------+| 作者:赵磊                               

linux input设备驱动分析

linux input设备驱动分析 工作机制 输入设备工作机制: 输入动作–>产生中断–>CPU通过总线或者IO读取数据到缓冲区 构架层次 app //-------------------- input_event_driver //-------------------- input_core //-------------------- input_device_driver //-------------------- hardware 数据结构 输入设备对象 struct input

linux块设备驱动之实例

前两篇blog已经基本熟悉了块设备的相关结构,这里来总结下ldd3中提到的一些块设备驱动例题: 1.注册:向内核注册个块设备驱动,其实就是用主设备号告诉内核这个代表块设备驱动 sbull_major = register_blkdev(sbull_major, "sbull"); if (0 >= sbull_major){ printk(KERN_WARNING "sbull: unable to get major number!\n"); return

LINUX块设备驱动&lt;2&gt;

转自:http://blog.chinaunix.net/uid-15724196-id-128140.html 第2章 +---------------------------------------------------+|                 写一个块设备驱动                  |+---------------------------------------------------+| 作者:赵磊                               

LINUX块设备驱动&lt;6&gt;

转自:http://blog.chinaunix.net/uid-15724196-id-128144.html 第6章 +---------------------------------------------------+|                 写一个块设备驱动                  |+---------------------------------------------------+| 作者:赵磊