现有的大部分数据传输接口总线造价比较高,且难以满足实际运用中对传输速率的要求,成了阻碍整个系统性能提高的一大屏障。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改变。
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分别是排队一完成和即时一完成模型的处理流程图。
图2 排队~ 完成模型的处理流程图
图3 即时- 完成模型的处理流程图
5 结束语
介绍了基于ieee1394b驱动程序的开发,在此基础之上开发了设备驱动和应用程序,建立了1394组网平台。试验证明,实现了互联与传输,系统能工作在800 mb·s-1的速率上,达到了预定的目标。
Intersil电池管理解决方案(BMS)
嵌入式中是否使用动态内存?
液体电阻起动柜采用移动极板来改变液体电阻的方式
基于March SSE算法改善嵌入式RAM存储器的测试算法
小小的贴片电阻可以让你的电路无缘无故失效
利用Fir-eAPI SDK开发IEEE1394b设备驱动程序设计
万用表直流电流档小量程时指示正常,大量程时无指示故障修理
乔布斯女儿吐槽iPhone14没新意
美国研发首款全固态中红外激光束转向控制器件
如何兼得物联网和隐私呢
性价比高的蓝牙耳机推荐,盘点2021蓝牙耳机排行榜
华为积极推动5G在拉美快速发展
环境温度对GDT陶瓷气体放电管影响大小
波粒数字百万高清监控系统的应用优势及特点
重塑人们出行方式的硅基平台
谷歌的未来:人工智能、云技术、机器学习
魅蓝note6值得入手吗 几乎毫无短板的千元机
索尼公布PS5规格 将为主机VR带来更高端的PC功能
电磁炉常见故障及维修
BEOL应用中去除蚀刻后残留物的不同湿法清洗方法