阅读:1347回复:8
驱动与设备的关联!!10分相送!!~
假如我有一个PCI板卡,并为此编写一个驱动程序,如何知道驱动是这个板卡工作,而不是为了别的呢。在驱动中如何保证它是打开一个板卡而不是别的板卡。驱动如何区分不同的板卡!
|
|
|
沙发#
发布于:2003-06-11 10:13
是否可以说一个驱动可以驱动所有的设备,驱动本质上是与设备无关的。这一点似乎与windows下的驱动不一样。
兄弟们,过了钌分呀!! |
|
|
板凳#
发布于:2003-06-11 10:20
每个pci设备都有设备ID,通过这个ID来找设备
啊。 |
|
|
地板#
发布于:2003-06-11 11:15
在任何操作系统下,驱动都和硬件直接相关,所以不可能驱动所有的设备。
|
|
|
地下室#
发布于:2003-06-11 16:56
每个pci设备都有设备ID,通过这个ID来找设备 windows下,总线驱动程序已经获得资源,功能驱动程序只是去得到已经获取的资源。功能驱动程序是无权选择驱动的设备的,是设备通过INF文件选择驱动程序。而在linux下,虽然可以通过ID找设备,但是我只要改变一下ID,设备A的驱动就变成设备B的驱动了;而且我可以同时利用设备A、设备B的ID来找设备A、B的资源,驱动设备A、B。即在驱动中可以随意选择设备。 PCI设备还可以通过ID来选择设备,诸如ISA设备这样的设备就不行。假如,我的驱动选择的地址范围是0x10000-0x20000,而这一段地址里包含了10个ISA设备,那么这个驱动就是这10个设备的驱动了。 不知的理解对不对,请各位驱友指点!!!!! |
|
|
5楼#
发布于:2003-06-11 18:19
再问一下,如果通过PCI设备的ID获取PCI设备的资源是否应该在init_module()中实现呢,还有没有别的地方。本人感觉别的地方不合适实现PCI资源的获取。以上是本人的理解,不知对不对,请各位驱友发言!!!!!
|
|
|
6楼#
发布于:2003-06-11 19:17
改变ID和windows改变INF中的ID不都一样吗。
驱动是内核信得过的,你甚至不用申请就可以使用任何资源! PCI资源是可仲裁分配的,所以提供ID就可以找出设备分配了那些资源,而且设备所分配的资源是不会被其他设备使用的,0x10000-0x20000,是不会包含10个ISA的。 在哪儿都可以,只要你使用资源时知道资源就行了。不过一般都在init_module()中。 |
|
|
7楼#
发布于:2003-06-11 20:29
Think you ken!!!
|
|
|
8楼#
发布于:2003-06-18 18:42
通过使用mknod 设备名称 c 主版本 次版本 这个命令来建立和驱动程序和文件的关联。
|
|