红联Linux门户
Linux帮助

驱动程序小谈

发布时间:2008-07-27 10:01:07来源:红联作者:Jadonose
  忽然有点不明白驱动程序做了什么,怎么做的。API函数又是怎么实现它们之间的联系的。上网查查,有人这样说:“对一个硬件无非是分配地址,初始化,读/写等操作,操作系统一般都定义了统一的接口和规范,硬件厂商必须按照那个标准的规范和接口来提供驱动程序,否则操作系统就根本不知道那是个什么东西,更谈不上在API中使用了。

  另外一个例子,想一想一个非常显然的事情:为什么针对Linux的驱动不能给Windows用?显然嘛,二个操作系统的规范不一样,所以对于Windows来说,Linux上的驱动屁都不是,反之亦然。所以,API和驱动的关系当然不是随便乱来的。说得不错,呵呵。

  对驱动程序的理解:有人这么说:凡是安装一个原本不属于你电脑中的硬件设备时,系统就会要求你安装驱动程序,将新的硬件与电脑系统连接起来。驱动程序扮演沟通的角色,把硬件的功能告诉电脑系统,并且也将系统的指令传达给硬件,让它开始工作。我课题的PCI板卡,使用一片PCI通用接口芯片CH365来实现与PCI 总线的转接,通常情况下,PCI 设备的I/O 基址是由计算机初始化时自动分配的,一方面保证了一些专用I/O地址不会被随意占用,另一方面保证了多个设备的I/O 地址不会冲突。与ISA板卡的I/O地址可以灵活使用不同,PCI 总线规范没有提供一种由产品制造商确定板卡I/O 地址的方法。由于采用固定I/O地址可以简化测试软件的难度,CH365提供了一种可以由产品制造商选定PCI 设备I/O地址的方法,即本地硬件定址,其原理是将PCI 设备的部分I/O 地址译码通过外围的二级译码电路(在本课题中烧录在CPLD芯片内)实现。外围的二级译码电路比较简单,与ISA总线的I/O地址译码类似,CH365将PCI总线I/O操作的地址同步提供给外围电路,当外围电路对地址译码匹配后,向CH365请求本地硬件定址,再由CH365请求PCI总线在该地址进行I/O操作。所以我板卡的驱动就是CH365提供的现成的驱动程序。我工作时候用到的PCIe板卡,是用PLX8311做的。它的驱动可以由其SDK 生成。然后软件的编写,可以利用其提供的一系列的API函数。

  不管怎样,可以看到,驱动就是让计算机能认识到连接到其上的硬件,进而可以通过它(利用API函数或者直接对硬件地址进行操作)对板卡上的硬件进行操作,从而让板卡工作。
文章评论

共有 2 条评论

  1. cupid8505 于 2008-07-27 13:36:09发表:

    tks .

  2. yjh5216 于 2008-07-27 11:52:32发表:

    ok