linux设备驱动模型
linux设备驱动中的自己一些学习体会
new_abc
这个作者很懒,什么都没留下…
展开
-
linux设备驱动模型一字符设备open系统调用流程
从前面 的例子可以看到,我们在操作一个调和时都 是通过open系统调用先去打开这个设备,不管是设备还是文件,我们要访问它都要称通过open函数来先打开, 这样才能调用其它的函数如read、write来操作它,即通知内核新建一个代表该文件的结构,并且返回该文件的描述符(一个整数),该描述符在进程内唯一。在linux系统进程中,分为内核空间和用户空间,当一个任务(进程)执行系统调用而陷入内核代码中原创 2012-05-27 23:28:34 · 13709 阅读 · 8 评论 -
linux设备驱动模型一字符设备 驱动简析
字符设备不需要复杂的缓冲策略,也不涉及磁盘高速缓存,处理起来比较容易字符设备驱动程序由一个cdev结构描述:struct cdev {struct kobject kobj; // 每个 cdev 都是一个 kobjectstruct module *owner; // 指向实现驱动的模块const struct file_operations *o原创 2012-05-26 12:10:14 · 1925 阅读 · 0 评论 -
linux设备驱动模型一字符设备 驱动实例
前面分析了驱动中的一些基本结构,下面结合实例分析一下驱动的编写及实现下面这个例子来处网上:#include //模块所需的大量符号和函数定义#include //指定初始化和清楚函数#include //文件系统相关的函数和头文件#include //cdev结构的头文件#include //在内核和用户空间中移动数据的函数#inc原创 2012-05-25 22:53:12 · 1589 阅读 · 0 评论 -
linux设备驱动模型一上层容器之class
class,是设备类,完全是抽象出来的概念,没有对应的实体。所谓设备类,是指提供的用户接口相似的一类设备的集合,常见的设备类的有block、tty、input、usb等等。 类是一个设备的高层视图,它抽象出了底层的实现细节,从而允许用户空间使用设备所提供的功能,而不用关心设备是如何连接和工作的。类成员通常由上层代码所控制,而无需驱动的明确支持。但有些情况下驱动也需要直接处理类。在驱动开发中原创 2012-05-23 23:10:57 · 3359 阅读 · 2 评论 -
linux设备驱动模型一上层容器之driver
备驱动程序 使计算机系统可以与设备进行通信的一个软件组。在大多数情况下,驱动程序也会对硬件进行操作以便将数据传送给设备。有些设备,尤其是 PC 兼容机上的一些视频示配器,在系统中没有安装正确的设备驱动程序时,这些设备将无法正常工作.首先还是看一下其结构:struct device_driver { const char *name; //名字 struct bus_type *bu原创 2012-05-22 22:45:49 · 3159 阅读 · 0 评论 -
linux设备驱动模型一上层容器之device
系统中任一设备都有一个device对象描述,我们先来看一下它在内核中的表示:struct device { struct device *parent;//父设备 struct device_private *p;//设备的私有数据 struct kobject kobj;//表示该设备并把它链接到设备模型中的kobject const char *init_name;//初始原创 2012-05-19 09:17:22 · 3666 阅读 · 0 评论 -
linux设备驱动模型一上层容器之bus
总线是处理器与设备之间通道,在设备模型中,所有的设备都通过总线相连我们看一下一般我们的系统中都 注册了哪些总线:总线由 bus_type 结构表示, 定义在 struct bus_type { const char *name;;/*总线类型名称*/ struct bus_attribute *bus_attrs;/*总线属性*/ struct device_attri原创 2012-05-17 22:59:49 · 1993 阅读 · 2 评论 -
linux设备驱动模型一上层容器之关系
linux的上层容器主要有bus,device,driver,这三者是个什么关系呢:bus: 总线作为主机和外设的连接通道,有些总线是比较规范的,形成了很多协议。如PCI,USB,1394,IIC等。任何设备都可以选择合适的总线连接到主机。当然主机也可能就是CPU本身。内存也是通过BUS连接到主机的,可内存使用的总线不是外设总线,因此和内存使用相同类型的总线的设备,谈及BUS比较含糊。原创 2012-05-17 21:40:19 · 2032 阅读 · 0 评论 -
linux设备驱动模型一上层容器之bus概述
声明:以下内容均是从网上摘录过来这里先摘取下百科的介绍:总线(Bus)是计算机各种功能部件之间传送信息的公共通信干线,它是由导线组成的传输线束, 按照计算机所传输的信息种类,计算机的总线可以划分为数据总线、地址总线和控制总线,分别用来传输数据、数据地址和控制信号。总线是一种内部结构,它是cpu、内存、输入、输出设备传递信息的公用通道,主机的各个部件通过总线相连接,外部设备通过相应的接口电路原创 2012-05-16 22:07:53 · 2555 阅读 · 0 评论 -
linux设备驱动模型一三基础结构之示例
前面我们了解了设备驱动模型的三个基本结构,以及它们的相关操作函数,这里我们以实例来看一下它们的用法。首先定义一个内嵌的kobject结构:struct test_container { int member; struct kobject kobj;};定义了一个kobject和一个member成员,主要就是嵌套了kobject结构。struct test_cont原创 2012-05-14 10:07:22 · 2809 阅读 · 16 评论 -
linux设备驱动模型一三基础结构之Ktype
不同的结构包含kobject后,kobject的属性会不同,kobject销毁时所做的操作会不同,kobject所表现出的类型也会不同。所以,kobject中包含了一个叫作kobj_type的结构。kobj_type的目标就是为不同类型的kobject提供不同的属性以及销毁方法。kobj_type与kobject的关系比较简单,是一种明显的依存关系,正如价值因为人的存在而产生意义并发挥作用原创 2012-05-13 17:45:16 · 3680 阅读 · 0 评论 -
linux设备驱动模型一三基础结构之Kset
有时候,某个设备的可能具有多个kobject的子类对象,或者某些设备具有相同的特性,为了便于管理,应该把这些对象统一放入一个容器中。这里要用到的容器就是kset。kset只是kobject的一个集合。对应到linux文件系统中,一个kset就是/sys下的一个文件夹。Kset本身也是一个kobject,所以它在sysfs里同样表现为一个目录,但它和kobject的不同之处在于kset可以看原创 2012-05-12 13:06:37 · 3035 阅读 · 4 评论 -
linux设备驱动模型一三基础结构之Kobject
在linux的驱动表示中,主要有三个基本的结构,分别是kobject,kset,ktype.Kobject,kset,kypte这三个结构是设备模型中的下层架构。模型中的每一个元素都对应一个kobject.kset和ktype可以看成是kobject在层次结构与属性结构方面的扩充。将三者之间的关系用图的方示描述如下:如上图所示:我们知道。在sysfs中每一个目录都对应一个kobje原创 2012-05-11 23:13:28 · 8159 阅读 · 5 评论 -
linux设备驱动模型一概述
注:这几篇博客有些是从别的地方转载了部分过来稍加整理的,如有冒犯望见谅!Linux 2.6内核最初为了应付电源管理的需要,提出了一个设备模型来管理所有的设备。在物理上,外设之间是有一种层次关系的,比如把一个U盘插到笔记本上,实际上这个U盘是接在一个USB Hub上,USB Hub又是接在USB 2.0 Host Controller (EHCI)上,最终EHCI又是一个挂在PC原创 2012-05-10 23:36:51 · 2864 阅读 · 0 评论