0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

利用Fir-eAPI SDK开发IEEE1394b设备驱动程序设计

电子设计 作者:电子设计 2018-10-02 14:02 次阅读

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

利用Fir-eAPI SDK开发IEEE1394b设备驱动程序设计

图1 Un ibra in1394驱动栈

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

利用Fir-eAPI SDK开发IEEE1394b设备驱动程序设计

图2 排队~ 完成模型的处理流程图

利用Fir-eAPI SDK开发IEEE1394b设备驱动程序设计

图3 即时- 完成模型的处理流程图

5 结束语

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

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 电脑
    +关注

    关注

    15

    文章

    1680

    浏览量

    68661
  • 总线
    +关注

    关注

    10

    文章

    2864

    浏览量

    87972
  • 传输系统
    +关注

    关注

    0

    文章

    150

    浏览量

    37154
收藏 人收藏

    评论

    相关推荐

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

    介绍了基于IEEEl394b总线双向数据传输系统PC机端设备驱动程序。结合IEEEl394b总线规范,以Windows环境为例详细介绍了利用
    发表于 10-31 15:47 1951次阅读
    基于<b class='flag-5'>IEEE1394b</b>的双向传输<b class='flag-5'>设备</b><b class='flag-5'>驱动程序设计</b>

    1394采集卡驱动程序下载

    1394采集卡驱动程序下载 1394采集卡驱动.DV相机采集用的.for98和ME.xp以上好像不需要驱动
    发表于 12-06 08:27 2975次下载

    用WinDriver开发适合多平台的设备驱动程序

    WinDriver 是一套功能强大的驱动程序开发包。利用WinDriver 向导,可以生成针对自己设备驱动程序框架,再使用VC 等编译器进
    发表于 04-16 10:06 21次下载

    用WinDriver开发适合多平台的设备驱动程序

    WinDriver 是一套功能强大的驱动程序开发包。利用WinDriver 向导,可以生成针对自己设备驱动程序框架,再使用VC 等编译器进
    发表于 05-15 14:14 15次下载

    IEEE 1394设备的WDM驱动程序设计

    文 中结合IEEE1 394总线规范及具体应用实例,开发IEEE1394设备的WDM驱动程序,详细介绍了在Windows2 000/xp环
    发表于 07-10 15:50 40次下载

    PCI设备WINDOWS驱动程序开发

    PCI设备WINDOWS驱动程序开发 本文主要介绍了在Windows9x操作系统下开发PCI设备驱动
    发表于 05-03 11:54 3313次阅读

    基于IEEEl394b总线双向数据传输设备驱动程序设计

      介绍了基于IEEEl394b总线双向数据传输系统PC机端设备驱动程序。结合IEEEl394b总线规范,以Windows环境为例详细介绍了利用
    发表于 12-17 10:10 1166次阅读
    基于IEEEl394<b class='flag-5'>b</b>总线双向数据传输<b class='flag-5'>设备</b><b class='flag-5'>驱动程序设计</b>

    PCI设备的WDM驱动程序开发

    本文简要介绍了WDM驱动程序的结构体系,之后结合PCI设备的结构特点,通过实例说明如何利用驱动程序开发工具DriverWorks
    发表于 05-19 18:11 0次下载

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

    结合IEEE1394b总线规范,以Windows环境为例详细介绍了利用FireAPI SDK开发IEEE1394b
    发表于 02-08 15:43 41次下载
    基于<b class='flag-5'>IEEE1394b</b>的双向传输<b class='flag-5'>设备</b><b class='flag-5'>驱动程序设计</b>

    Windows CE驱动程序开发

    不同的嵌入式系统硬件平台,往往有其独有或特殊的设备,而这些设备的Windows CE驱动程序设计问题是开发人员经常遇到的。本文着重阐述了Windows CE体系结构和中断机制、Wind
    发表于 04-18 10:13 0次下载

    基于WINDOWS CENET的1394摄像机驱动程序开发

    在嵌入式系统中采用1394摄像机可以满足高速、实时、大量等图像采集处理需求本文针对1394总线及符合DCAM规格摄像机的特点在开发Windows CE.net系统1394
    发表于 04-18 11:28 0次下载

    WinCE流驱动程序设计概述

    WinCE流驱动程序设计概述
    发表于 10-25 09:46 7次下载
    WinCE流<b class='flag-5'>驱动程序设计</b>概述

    Xilinx设备驱动程序

    Xilinx为所有设备都提供了standalone模式的驱动程序。Xilinx SDK会根据硬件系统的配置情况,将使用的设备驱动加入到创建
    发表于 11-18 10:51 8099次阅读

    ieee1394接口是为了连接什么设备_ieee1394接口传输速率

    支持即插即用,现在的WIN98 SE、WIN2000、WIN ME、WIN XP都对IEEE1394支持的很好,在这些操作系统中用户不用再安装驱动程序,也能使用IEEE1394设备
    发表于 11-16 16:10 7905次阅读

    自动删除SDK/Vitis下驱动程序的旧版本的Linux脚本

    Xilinx的开发工具SDK/Vitis都可以自动根据Vivado设计,创建软件工程,自动配置各个外部设备驱动程序。为了兼容旧版本工程,SDK
    发表于 08-02 11:32 594次阅读