关闭

sysfs接口函数到建立_DEVICE_ATTR

sysfs接口:函数宏DEVICE_ATTR 原型:#define DEVICE_ATTR(_name, _mode, _show, _store)      struct  device_attribute  dev_attr_##_name = __ATTR(_name, _mode, _show, _store) 如对设备的使用  DEVICE_ATTR  ,对总线使用  BUS_A...
阅读(1058) 评论(0)

内核树的建立及其Hello World 模块的加载

内核树的建立及其Hello World 模块的加载        每每到了一定程度过后,对自己所做过的事,看过的书等做一些总结是很有必要的。初学驱动编程,面对的第一个难题就是这个驱动编程该怎么学,入门是关键。在前辈们推荐下和在网上搜索中,得出结论:不知道怎么学和该学些什么,那就看这两本书:O'REILLY写的《LINUX设备驱动程序》和宋宝华的《LINUX设备驱动程序(第3版)》,或者你有兴趣的...
阅读(1483) 评论(0)

关于EXPORT_SYMBOL的作用浅析

在查看内核驱动代码的时候会经常看到在一些函数后面总会跟EXPORT_SYMBOL()这样的宏定义,通过网上查阅,它的作用大致总结如下: 1、定义说明      把内核函数的符号导出,也可以理解成将函数名作为符号导出;符号的意思就是函数的入口地址,或者说是把这些符号和对应的地址保存起来的,在内核运行的过程中,可以找到这些符号对应的地址的。 2、相关处理      (1)、对编译所得的.ko进...
阅读(11850) 评论(0)

Linux设备中的并发控制

并发执行的唯一原因是:硬件中断服务。内核代码是可抢占的。 什么是竞争?当 2 个执行的线路[有机会操作同一个数据结构(或者硬件资源), 混合的可能性就一直存在。 避免竞争方法:        在你设计驱动时在任何可能的时候记住避免共享的资源. 如果没有并发存取, 就没有竞争情况. 因此小心编写的内核代码应当有最小的共享. 这个想法的最明显应用是避免使用全局变量. 如果你将一个资源放在多个执行...
阅读(947) 评论(0)

Linux设备驱动入门----USB设备驱动

/**************************************** * USB主机与设备驱动 * 主机侧:由底到高:USB主机控制器硬件--> * USB主机控制器驱动--> USB核心层 --> USB * 设备驱动层 * 设备侧:UDC驱动程序、Gadget API和Gadget * 驱动程序 * 逻辑组织:设备(1) 配置(n) * 配置...
阅读(2538) 评论(2)

Linux设备驱动入门----I2C设备驱动

/* * I2C驱动的一些模板: * (1)、I2C总线驱动的的模块加载和卸载函数模板 * (2)、I2C总线通信方法 * (3)、I2C设备驱动模块的加载和卸载 * (4)、I2C设备驱动的文件操作接口 * (与普通驱动的文件操作一致,只是要使用 * i2c_client,i2c_driver,i2c_adapter,i2c_algorithm * 结构体和I2C...
阅读(1173) 评论(0)

异步:fasync_struct

这一节主要在上一节中添加了异步通知的功能,要注意观察和对比该字符设备的驱动是怎样一步步完善的。 补充一下小知识:异步通知的意思是一旦设备就绪,就主动通知应用程序,这样应用程序根本读不需要查询设备状态。 #include #include #include #include #include #include #include #include #include #incl...
阅读(3114) 评论(1)

信号量和队列:semaphore and wait_queue_head_t

这一次是在globalmem的字符设备驱动的基础上,增加了并发控制(也就是多进程多共享资源的访问的控制),还增加了阻塞I/O 和poll轮询操作,因为我还是菜鸟,有很多东西还不懂,希望与大侠能指点学习Linux设备驱动的要点和关键点。还是看代码吧 #include #include #include #include #include #include #include #in...
阅读(1835) 评论(2)

Linux设备驱动入门----globalmem字符设备驱动

/* globalmem字符设备驱动 * 作者:liwei.cai * 日期:2012-08-03 * globalmem.c */ #include #include #include #include #include #include #include #include #include #include #include #define GLOBALMEM...
阅读(1809) 评论(2)

linux驱动入门---test驱动模块加载

编写一简单的字符驱动程序,这里的设备也就是一段内存,实现简单的都写功能, 并列出常用格式的Makefile已经驱动加载和卸载脚本。 /* test_drv.c */ #include #include #include #include #include #include #include #include #include #define TEST...
阅读(1365) 评论(6)
20条 共2页1 2 下一页 尾页
    个人资料
    • 访问:122041次
    • 积分:1537
    • 等级:
    • 排名:千里之外
    • 原创:27篇
    • 转载:6篇
    • 译文:0篇
    • 评论:25条
    最新评论