基于IEEE1394b的双向传输设备驱动程序设计

2010-12-22 15:28:36来源: 互联网

    现有的大部分数据传输接口总线造价比较高,且难以满足实际运用中对传输速率的要求,成了阻碍整个系统性能提高的一大屏障。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驱动栈。

a.JPG

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分别是排队一完成和即时一完成模型的处理流程图。

b.JPG

c.JPG

5 结束语

    介绍了基于IEEE1394b驱动程序的开发,在此基础之上开发了设备驱动和应用程序,建立了1394组网平台。试验证明,实现了互联与传输,系统能工作在800 Mb·s-1的速率上,达到了预定的目标。

关键字:传输速率  串行总线  即插即用  开发包

编辑:金海 引用地址:http://www.eeworld.com.cn/mndz/2010/1222/article_2798.html
本网站转载的所有的文章、图片、音频视频文件等资料的版权归版权所有人所有,本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如果本网所选内容的文章作者及编辑认为其作品不宜公开自由传播,或不应无偿使用,请及时通过电子邮件或电话通知我们,以迅速采取适当措施,避免给双方造成不必要的经济损失。
论坛活动 E手掌握
微信扫一扫加关注
论坛活动 E手掌握
芯片资讯 锐利解读
微信扫一扫加关注
芯片资讯 锐利解读
推荐阅读
全部
传输速率
串行总线
即插即用
开发包

小广播

独家专题更多

富士通铁电随机存储器FRAM主题展馆
富士通铁电随机存储器FRAM主题展馆
馆内包含了 纵览FRAM、独立FRAM存储器专区、FRAM内置LSI专区三大部分内容。 
走,跟Molex一起去看《中国电子消费品趋势》!
走,跟Molex一起去看《中国电子消费品趋势》!
 
带你走进LED王国——Microchip LED应用专题
带你走进LED王国——Microchip LED应用专题
 
电子工程世界版权所有 京ICP证060456号 京ICP备10001474号 电信业务审批[2006]字第258号函 京公海网安备110108001534 Copyright © 2005-2016 EEWORLD.com.cn, Inc. All rights reserved