说到外设,与之对应的就是主机了。外设与主机的互联必然通过总线BUS。外设本身就是DEVICE,外设的工作就是靠DRIVER完成。
BUS
总线作为主机和外设的连接通道,有些总线是比较规范的,形成了很多协议。如PCI,USB,1394,IIC等。任何设备都可以选择合适的总线连接到主机。当然主机也可能就是CPU本身。内存也是通过BUS连接到主机的,可内存使用的总线不是外设总线,因此和内存使用相同类型的总线的设备,谈及BUS比较含糊。
一块网卡在嵌入式开发中,直接通过内存总线接入到CPU。我们在写网卡驱动时,要给该BUS定义就麻烦了。
DRIVER
驱动程序是在CPU运行时,提供操作的软件接口。所有的设备必须有与之配套驱动程序才能正常工作。一个驱动程序可以驱动多个类似或者完全不同的设备。
DEVICE
设备就是连接在总线上的物理实体。设备是有功能之分的。具有相同功能的设备被归到一个类(CLASS中)。如音频设备(和声音相关的都算),输入设备(鼠标,键盘,游戏杆等)。。。。
从宏观考虑,任何设备必须要连接到主机才能发挥其作用。一个鼠标离开了电脑主机就不再是鼠标了。提到了连接就必然出现总线BUS。任何设备要正常运行必须有软件支持,所有的设备必须有DRIVER。设备的目的就是完成功能,根据功能的分类,该设备必然属于某个CLASS。
下面举个例子,SCSI硬盘和IDE硬盘的对比。
SCSI硬盘是个存储设备(CLASS),使用的是SCSI总线连接到主机,要使用硬盘(DISK)驱动程序。
IDE硬盘也是个存储设备(CLASS),使用IDE总线连接到主机,同样使用硬盘(DISK)驱动程序。
同一个类下面的设备高层驱动通用,同一个总线上的设备,通信协议部分驱动通用。
再举个例子,PCI总线上,可以接很多设备,如两个IDE控制器,两个USB控制器。该PCI总线上将有两个DRIVER,四个DEVICE。如果在IDE控制器上分别接入了一个硬盘和一个光驱。总线上将多两个DRIVER去驱动这两个设备。我们需要在硬盘和光盘上使用文件系统,那么就要多出一个DISK驱动程序,工作于前面的那两个驱动程序之上。为什么一个DISK驱动就够了呢?硬盘和光盘同属于存储设备类(CLASS),因此当抽象到高层后,代码的复用就比较强了。
设备DEVICE 驱动程序 DRIVER 总线 BUS 类CLASS
IDE控制器 IDE芯片驱动程序 PCI 无
USB控制器 USB芯片驱动程序 PCI 无
IDE硬盘 硬盘驱动程序 IDE 存储设备
IDE光驱 光驱驱动程序 IDE 存储设备
SCSI控制器 SCSI芯片驱动程序 无 无
SCSI硬盘 硬盘驱动程序 SCSI 存储设备
主机就好比各个城市。
BUS好比公路,铁路,航空。
DEVICE好比汽车,火车,飞机。
CLASS好比客运,货运。
DRIVER好比能源,如汽油,电力,天然气等。
从北京到西安的BUS很多,根据需要选取。50年代技术落后多选铁路,现在最好是航空。每种BUS上的设备都是特定的,没有人把火车开到公路上,也就没人把键盘接到SCSI总线上一样。运人就要坐客车,运货就要坐货车,物以类聚,人以群分。人怎么能用货车运呢?汽车也好火车也罢,都可以使用电力作为牵引动力。一个驱动程序道理上可以驱动所有设备,通常还是专设备单独驱动。就象没人把航空煤油放到汽车里用。离开DRIVER,所有的DEVICE都无法正常工作。
再顺便提一下那些BUS为无的设备。就好比某些人从北京徒步走到了西安,针对这种情况就比较特殊。可以遇到,比较罕见,处理起来就因人而异了。你可以从北京到郑州来到西安,可以沿着铁路走,可以沿着公路走,总之是不好统一了。唯一的一点就是你是用两条腿走的,要么运人要么运货,CLASS还是可以确定的。
这样比喻不知道大家能不能明白,反正偶是明白了。
文章评论(0条评论)
登录后参与讨论