现有的大部分数据传输接口总线造价比较高,且难以满足实际运用中对传输速率的要求,成了阻碍整个系统性能提高的一大屏障。IEEE-1394是现今最高速的串行总线接口之一,IEEE1394lb更是在原有IEEE1394的基础上速度更快,支持距离更长,在实时批量数据传输方面有广泛的应用前景。
基于1394传输系统设备驱动文献,大部分都是基于IEEE1394a的,而IEEE1394b以其更高的速度展现出了更大的魅力,对实时大批量的数据传输具有重大意义,但是Microsoft并没有提供对1394b的支持,在Windows自带的1394不能支持其S800的速度,因此1394b在应用上受到局限,Unibrian提供了FireAPI SDK开发包,提供了对1394b的完全支持,也是现在唯一持1394b的驱动程序开发包。
1 IEEEl394串行总线概述
IEEE1394又称火线(Fire Wire),是由美国苹果电脑公司开发的一种品质高、传输速度快的串行总线技术。1995年IEEE正式认可IEEE139 4-1995规范,并于2000年又推出了IEEE1394a-2000规范。2002年推出了IEEEl394b-2002的传输速率可达3.2 Gb·s-1,兼容于IEEE1394a,但是接口的形状从IEEE1394a的6 Pin变成9 Pin。IEEE1394的主要特点如下:
(1)高速可升级,支持100 Mb·s-1、200 Mb·s-1、和400 Mb·s-1的传输速率。IEEE1394b增加800 Mb·s-1,16 00 bib·s-1,3 200 Mb·s-1的传输速率,现在市面上所提供的芯片最高支持到800 Mb·s-1。
(2)支持点到点传输,各节点可以脱离主机自主执行事务。
(3)支持较远距离的传输;IEEE1394节点之间的距离不能超过4.5 m。IEEE1394b最远距离可达100 m,而且可以选用更多的传输媒介,比如非屏蔽的5类双绞线、塑料光纤和玻璃光纤等。
(4)支持即插即用,可以在任何时候向IEEE1394网络添加或删除设备。
(5)热插拔,无需将系统断电就可以加入和移除设备。
(6)支持两类事务,包括等时(IsochrONous)和异步(Asynchronous)事务。
(7)拓扑结构,设备间采用树形或菊花链拓扑结构,每条总线最多可以连接63台设备。
(8)公平仲裁,是等时传输具有较高优先级,同时异步传输也能获得对总线公平的访问。
2 IEEE1394b驱动程序的基本结构
Unibrianl394驱动程序栈采用由上而下的架构,这个栈的核心就是1394类驱动,它完成1394所有事物并提供应用程序所需的全部服务。而这个1394类驱动正是WDM驱动中的类驱动。图1为Unibrainl394驱动栈。
图1 Un ibra in1394驱动栈
3 IEEE1394b驱动程序的具体实现
3.1 驱动程序入口点
运用FireAPI的第一件事就是调用C1394IniTIaliza,C1394IniTIalize执行所有对1394初始化支持的必需动作,这个函数会检查FireAPI驱动栈是否已完全安装,相应的驱动程序是否已经开始,以及初始化驱动栈需要的内部结构。
3.2 打开设备方法
当1394总线上添加或删除一个或多个设备时会自动重新配置物理设备地址,以此来支持即插即用特性,这时设备物理ID的重新分配,设备的节点号可能会改变。不过1394要求每个节点都要有一个全球惟一标识符GUID,它存储在Bus_Into_Block,在设备的整个生存期它是惟一不变的,所以在程序中根据设备的GUID打开设备句柄,其传输时将不用担心总线复位及物理ID改变。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)