首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

PCI设备驱动程序「建议收藏」

,接上PCI设备,让系统重启扫描一遍,再配合下面会给出的PCI总线驱动框架,你就会明白很多。...当你加载PCI驱动的时候,驱动程序会把系统中已经存在的设备的厂商号和设备号与驱动程序中的对比,如果一致,则会注册PCI总线驱动并进行下一步操作。...下面是我写的一个PCI总线的驱动程序,注意是PCI设备识别时的驱动程序,这里并没有实现具体的功能驱动。...PCI设备驱动分成两个部分,一部分是总线的,就是PCI设备识别、调用驱动程序probe函数的部分,另一部分就是具体的功能驱动,比如网卡。...基于PCI总线的设备有很多种,但就PCI总线驱动这一块来说,都大同小异,实现了PCI总线驱动之后,再去继续做具体的设备驱动

2K21

设备管理器里“SM总线控制器”、“其它PCI设备驱动有问题

WinXP重装系统后设备管理器里面出现黄色问号。...各自是“SM总线控制器”和“其它PCI设备“,主板是七彩虹的,芯片组是 geForce 7025的,南桥是 nForce 630a,用七彩虹官网的主板驱动装了没用。...得到 NVIDIA nForce PCI System Management_*.zip, NVIDIA Network Bus Enumerator_*.zip. 第一个是SM总线驱动。...第二个是其它PCI设备驱动。 将它们分别解压到不同文件夹,更新驱动时选相应的的文件夹。就ok了。...其它PCI设备驱动更新后,winxp就会识别出网卡,由于nVidia的主板是软网卡,必须装这个驱动才干识别到。 只是还是不清楚为什么装主板驱动没用,曾经仅仅要装主板驱动就基本ok了。

2.2K20
您找到你想要的搜索结果了吗?
是的
没有找到

Linux驱动PCI子系统剖析

PCI总线常见于x86体系,本文默认面向的体系为x86,注意x86架构下IO与内存是独立编址的。 附: 本文默认读者熟悉Linux设备驱动模型,不熟悉的可以先阅读这两篇blog。...Linux驱动之I2C子系统剖析 Linux驱动之SPI子系统剖析 PCI寻址 PCI系统总体布局组织为树状,从CPU连接的Host Bridge引出PCI主桥,主桥连接的是PCI总线0,可以直接连接PCI...val) int pci_write_config_dword(struct pci_dev *dev, int where, u32 val) PCI驱动的注册及匹配 BIOS在启动时,会为每个PCI...内核中使用struct pci_driver来描述PCI驱动的抽象 struct pci_driver { struct list_head node; char *name;...驱动的注册接口为pci_register_driver(struct pci_driver *drv),当调用该接口后,会调用PCI总线下的match方法来进行匹配 static int pci_bus_match

3.2K20

Linux设备驱动程序(一)——设备驱动简介

前言 这一部分主要是用来介绍 Linux 设备驱动程序的一些基本概念,包括:Linux 设备驱动程序的作用、内核功能的划分、设备和模块的分类以及版本编号。...一、Linux 设备驱动程序的作用 设备驱动程序就像一个个的“黑盒子”,使某个特定硬件响应一个定义良好的内部编程接口,这些操作完全隐藏了设备的工作细节。...用户的操作通过一组标准化的调用执行,而这些调用独立于特定的驱动程序。将这些调用映射到作用于实际硬件的设备特有操作上,则是设备驱动程序的任务。...3 类驱动如下: 字符设备 一个字符(char)设备是一种可以当作一个字节流来存取的设备(如同一个文件); 一个字符驱动负责实现这种行为,这样的驱动常常至少实现 open,close,read,和 write...内核与网络设备驱动间的通讯与字符和块设备驱动所用的完全不同。不用 read 和 write,内核调用和报文传递相关的函数。 有其他的划分驱动模块的方式,与上面的设备类型是正交的。

78641

PCI,PCI-X,PCI-E

PCI-X是PCI总线的扩展架构,PCI-X频率不像PCI那样固定,而是可以随着设备的变化而变化的。PCI-X采用64位PCI总线(PCI為32bit),可以支持66,100,133MHz这些频率。...PCI-X这样的口在一般的PC主板上看不到,多数都在服务器主板上.这种槽好像是PCI的加强型,槽口很长.它同时支持PCI-X和PCI两种插卡....交由PCI-SIG(PCI特殊兴趣组织)认证发布后才改名为“PCI-Express”。这个新标准将全面取代现行的PCI和AGP,最终实现总线标准的统一。...PCI-E规格从1条通道连接到32条通道连接,有非常强的伸缩性,以满足不同系统设备对数据传输带宽不同的需求。...此外,较短的PCI-E卡可以插入较长的PCI-E插槽中使用,PCI-E接口还能够支持热拔插.

99020

Linux内核设备驱动之字符设备驱动笔记整理

/******************** * 字符设备驱动 ********************/ (1)字符设备驱动介绍 字符设备是指那些按字节流访问的设备,针对字符设备驱动称为字符设备驱动...设备通过设备号来标识。设备号分两部分,主设备号和次设备号。 通常,主设备号标示设备对应的驱动程序,linux允许多个驱动共用一个主设备号; 而次设备号用于确定设备文件所指的设备。...在驱动中访问设备号应该用中定义的宏。...copy_to_user等函数如果返回值不等于0,则read或write应向用户空间返回-EFAULT 主设备号用来表示设备驱动, 次设备号表示使用该驱动设备 在内核dev_t 表示设备号, 设备号由主设备号和次设备号组成...把设备驱动加入内核里, 并指定该驱动对应的设备号 cdev_add(&mycdev, 设备号, 次设备号的个数); 5.

4.6K20

设备驱动初探

前言 研究IO也很久了,一直无法串联bio和块设备驱动,只知道bio经过IO调度算法传递到块设备驱动,怎么过去的,IO调度算法在哪里发挥作用,一直没有完全搞明白,查看了很多资料,终于对块设备驱动有所理解...一、传统块设备 我们先来实现一个基于内存的传统块设备驱动。...struct block_device_operations simp_blkdev_fops = {//块设备的操作函数 .owner = THIS_MODULE, }; 1.2 加载驱动...1.5.3 bio-块设备 通过make_request_fn和request_fn,我们将bio和块设备驱动串联起来了。 而且IO调度算法会在这两个函数发挥作用。 ?...上面写的基于内存的块设备不就是一个超高速块设备嘛,我们能不能写一个没有中间商的驱动 2.1 simp_blkdev_init 我们需要重写一下init代码,不调用blk_init_queue。

2K40

Linux设备驱动之字符设备(二)

通过上一节Linux设备驱动字符设备(一)了解了Linux设备驱动的分类,设备号的构成,设备号的申请以及设备号的释放。 在Linux内核中使用struct cdev结构来代码字符设备。...struct kobject kobj 内核的内嵌对象,是Linux设备驱动模型的重要成员。...struct module *owner 字符设备驱动程序所在的内核模块指针 struct file_operations *ops 字符设备驱动程序文件操作函数集,是应用程序通过文件系统访问驱动的桥梁...struct list_head 用来将系统中字符设备形成的链表 dev_t dev 字符设备设备号,由主次设备号组成 unsigned int count 次设备号的个数,用于表示驱动程序管理的同类设备的个数...目前为止,已经了解了设备号,设备号的构成,字符设备分配,字符设备的初始化,字符设备的注册以及字符设备的注销。将在下一节通过一个简单的字符设备驱动程序来再次熟悉整个流程,然后总结字符设备驱动的编写模型。

6K20

linux 字符设备驱动

Linux设备驱动概述 操作系统内核是通过各种驱动程序来驾驭硬件设备,它为用户屏蔽了各种各样的设备设备驱动程序是操作系统内核和机器硬件之间的接口,系统调用是操作系统内核和应用程序之间的接口。...每当用户程序要访问某个设备时,通过系统调用,内核根据设备结点的信息调用相应的驱动程序。当驱动程序执行完后,又返回至用户进程。...Linux下设备的属性 设备的类型:字符设备、块设备、网络设备; 主设备号:标识设备对应的驱动程序。...一般“一个主设备号对应一个驱动程序” 次设备号:每个驱动程序负责管理它所驱动的几个硬件实例,这些硬件实例则由次设备号来表示。同一驱动下的实例编号,用于确定设备文件所指的设备。 文件名:设备文件名字。...为0代表自动分配设备号undefinedname 是驱动的名字(将出现在 /proc/devices),undefinedfops 是设备驱动的file_operations 结构。

9.6K45

linux字符设备驱动

Linux设备驱动概述 操作系统内核是通过各种驱动程序来驾驭硬件设备,它为用户屏蔽了各种各样的设备设备驱动程序是操作系统内核和机器硬件之间的接口,系统调用是操作系统内核和应用程序之间的接口。...每当用户程序要访问某个设备时,通过系统调用,内核根据设备结点的信息调用相应的驱动程序。当驱动程序执行完后,又返回至用户进程。...Linux下设备的属性 设备的类型:字符设备、块设备、网络设备; 主设备号:标识设备对应的驱动程序。...一般“一个主设备号对应一个驱动程序” 次设备号:每个驱动程序负责管理它所驱动的几个硬件实例,这些硬件实例则由次设备号来表示。同一驱动下的实例编号,用于确定设备文件所指的设备。 文件名:设备文件名字。...为0代表自动分配设备号undefinedname 是驱动的名字(将出现在 /proc/devices),undefinedfops 是设备驱动的file_operations 结构。

10.6K65

Linux设备驱动之字符设备(一)

Linux中设备驱动的分类 从上图可以看到Linux系统将各异的设备分为三大类:字符设备,块设备和网络设备。内核针对每一类设备都提供了对应驱动模型架构,包括基本的内核设施和文件系统接口。...主设备号用来标识对于的设备驱动程序,而次设备号则由驱动程序使用,用来标识它所管理的若干同类设备设备号的表示 在linux系统中,设备号用dev_t表示。这是个32位的无符号整数。...为了保证以后主次设备号所占的位数发生变化之后,驱动程序依然可以正常工作,内核提供了如下了几个宏来操作设备号。...假设在内核版本之后对主次设备号所占的位数发生了变化,MINORBITS修改为18位,只要驱动是使用MAJOR和MINOR宏来操作设备号,就不需要修改驱动代码也可以在新内核中使用。...,第一个参数form表示一个设备号,第二个参数count表示次设备的个数,也就是当前驱动程序所管理的同类设备的个数,第三个参数name表示设备或者驱动的名称。

7.1K52

Linux驱动开发: 块设备驱动开发

设备是与字符设备并列的概念, 这两类设备在 Linux 中驱动的结构有较大差异,总体而言, 块设备驱动比字符设备驱动要复杂得多,在 I/O 操作上表现出极大的不同,缓冲、 I/O 调度、请求队列等都是与块设备驱动相关的概念...在Linux中,驱动对块设备的输入或输出(I/O)操作,都会向块设备发出一个请求,在驱动中用request结构体描述。...但对于一些磁盘设备而言请求的速度很慢,这时候内核就提供一种队列的机制把这些I/O请求添加到队列中(即:请求队列),在驱动中用request_queue结构体描述。...编写块设备驱动时,使用的一些单位介绍: 1. 扇区(Sectors):任何块设备硬件对数据处理的基本单位。通常,1个扇区的大小为512字节。(对设备而言) 2....2.1 内核自带可参考的块设备驱动源码 drivers\block\z2ram.c drivers\block\xd.c \drivers\mmc\host\sdhci-s3c.c 2.2 块设备注册与注销函数

31.8K30

Linux内核设备驱动之高级字符设备驱动笔记整理

(1)ioctl 除了读取和写入设备外,大部分驱动程序还需要另外一种能力,即通过设备驱动程序执行各种类型的硬件控制。比如弹出介质,改变波特率等等。...注意这个方向是对用户而言的,所以IOC_READ意味着从设备读取数据,驱动应该向用户空间写入数据。 size 14位。所涉及的用户数据大小。...02.为了真正启动异步通知机制,用户程序还必须在设备中设置FASYNC标志,这是通过fchtl命令F_SETFL完成的。执行完这两步后,设备文件就可以在新数据到达时请求发送一个SIGIO信号。...不是所有的设备都支持异步通知,应用程序通常假设只有套接字和终端才有异步通知能力. (5)驱动程序中如何实现异步通知 a.用户空间操作在内核的对应 01.当设定F_SETOWN时,对file->f_owner...赋值 02.执行F_SETFL以启动FASYNC时,调用驱动程序的fasync方法。

3.4K31

Linux设备驱动程序(三)——字符驱动

前言 本章的目的是编写一个完整的字符设备驱动,我们开发一个字符驱动是因为这一类适合大部分简单硬件设备,字符驱动也比块驱动易于理解。...一、scull 的设计 编写驱动的第一步是定义驱动将要提供给用户程序的能力(机制)。scull 源码实现下面的设备. 模块实现的每种设备都被引用做一种类型。...主编号标识设备相连的驱动,例如 /dev/null 和 /dev/zero 都由驱动 1 来管理,而虚拟控制台和串口终端都由驱动 4 管理;次编号被内核用来决定引用哪个设备,依据你的驱动是如何编写的,你可以从内核得到一个你的设备的直接指针...例如我们要操作某个设备,首先,我们要知道设备在/dev下的设备文件名。这个设备文件提供主设备号以及次设备号。然后内核通过设备文件提供的主设备找到设备驱动程序(操作设备驱动程序实现)。...最后通过主设备号和次设备构成的设备号找到正确的设备。有了操作的对象(设备)和操作的方法(驱动程序)那就可以完成了我们的要求。 一个驱动程序可以操作多个设备,所以不同的设备可以具有相同的主设备号。

39241
领券