介绍了依据IEEEl394b总线双向数据传输体系PC机端设备驱动程序。结合IEEEl394b总线标准,以Windows环境为例详细介绍了运用Fir-eAPI SDK开发IEEE1394b设备驱动程序的规划原理、完结办法。
现有的大部分数据传输接口总线造价比较高,且难以满意实践运用中对传输速率的要求,成了阻止整个体系功能进步的一大屏障。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驱动栈。
3 IEEE1394b驱动程序的详细完结
3.1 驱动程序进口点
运用FireAPI的榜首件事便是调用C1394Initializa,C1394Initialize履行一切对1394初始化支撑的必需动作,这个函数会查看FireAPI驱动栈是否已彻底安装,相应的驱动程序是否现已开端,以及初始化驱动栈需求的内部结构。
3.2 打开设备办法
当1394总线上添加或删去一个或多个设备时会主动重新配置物理设备地址,以此来支撑即插即用特性,这时设备物理ID的重新分配,设备的节点号可能会改动。不过1394要求每个节点都要有一个全球专一标识符GUID,它存储在Bus_Into_Block,在设备的整个生存期它是专一不变的,所以在程序中依据设备的GUID打开设备句柄,其传输时将不必忧虑总线复位及物理ID改动。
4 IEEE1394b详细通讯机制
IEEE1394串行总线支撑两种传输类型;异步传输和等时传输。
(1)异步传输,异步传输运用承认的物理地址来指向某一个节点,以完结读、写、承认操作。依据恳求和应对的机制来保证数据传输的正确性。
(2)等时传输,等时传输是一种不需求承认数据的传输类型,它首要着重的是传输数据的实时性。等时传输是经过一个6位的信道号码来承认一个或多个设备。其以固定时刻距离(125 ms)发送数据,所以有必要分配固定的总线带宽,有着高于异步传输的优先级。等时传输所用的最大带宽是整个带宽的80%。
4.1 IEEE1394b异步传输
异步传输的首要过程如下:
(1)设置传输速度,1394b支撑的最高速度为800 Mb·s-1,驱动程序能够在总线复位完结后当即经过C1394GetMaxSpeedToNode或1394Get-MaxSpeedBetweenNodes设置节点间速度。
(2)设置最大包,1394b在S800的速度下所支撑的最大包长为4 096 bit,可经过C1394GetMaxPayloadForSpeedand C1394GetMaxPayloadF-orMaxRec设置最大包长。
(3)设置带宽,要注意的是带宽不只取决于包的巨细,还与节点间的传输速率有关,当传输速率添加时,所需的带宽会减小。
(4)异步读/写,异步传输分为堵塞调用和非堵塞调用,C1394ReadNode/C1394WriteNodewei为堵塞调用,只在读或写业务完结 (包含发送恳求数据包,查看承认,等候呼应或超时)后回来。C1394ReadNodeAsynch/C1394WriteNodeAsynch为非堵塞调用。非堵塞调用比堵塞调用更节省时刻,节省资源。
4.2 IEEE1394b等时传输机制
与异步传输不同,等时传输着重了数据的实时性。等时传输是依据时刻片的。
建立等时传输的过程为:(1)设置传输速率,最大为800 Mb·s-1。(2)设置带宽。(3)分配等时信道。(4)分配等时资源。(5)等时业务处理。(6)完结后开释资源。
有时候运用程序并不只发送一个等时恳求,那么适配器通道要处理下一个恳求,一起程序还要处理上一个恳求完结的成果,这样保证等时接纳时不会丢数据包,这时要用到等时恳求行列来完结。内核形式的API两种等时处理模型,排队一完结和即时一完结,驱动能够运用其间恣意一个,如有必要可混合运用。在用户形式中,操作形式有一些约束,不能直接回调,运用程序一般运用排队一完结形式处理一切等时恳求。图2和图3分别是排队一完结和即时一完结模型的处理流程图。
5 结束语
介绍了依据IEEE1394b驱动程序的开发,在此根底之上开发了设备驱动和运用程序,建立了1394组网渠道。实验证明,完结了互联与传输,体系能作业在800 Mb·s-1的速率上,达到了预订的方针。