下载此文档

WinCE的网络驱动实现原理.doc


文档分类:IT计算机 | 页数:约12页 举报非法文档有奖
1/12
下载提示
  • 1.该资料是网友上传的,本站提供全文预览,预览什么样,下载就什么样。
  • 2.下载该文档所得收入归上传者、原创者。
  • 3.下载的文档,不会出现我们的网址水印。
1/12 下载此文档
文档列表 文档介绍
WinCE的网络驱动实现原理
WinCE的网络驱动实现原理2010-11-12 17:
WinCE的网络通信架构如图1所示,workDriver Interface Specification,NDIS),它支持多种网络媒体,以及提供包括TCP/IP等多种网络协议。
图1 WINCE通信网络的层
其中最上层的Wins0ck是提供给应用层的接口,一般开发网络应用都会用Winsock接口来开发。NDIS位于协议驱动层下面,而位于硬件驱动Miniport Driver之上。协议驱动层通过调用NDIS封装层的接口函数,实现与底层硬件驱动的交互。对于协议层来说,NDIS相当于一个Miniport Driver,而对于底层的硬件驱动来说,NDIS相当于上层的协议层,所以NDIS起到承上启下的作用,也起到对底层硬件接口的规范作用。

在WinCE中,网卡驱动的实现原理如图2所示,在上层的协议驱动层看来,它调用NDIS接口函数访问网络设备,其具体实现过程(如图2虚线框),是通过调用底层的Miniport Driver接口函数来实现。在WinCE系统中NDIS接口函数库是Microsoft开发好的,所以开发winCE下的网卡驱动就是编写一个Miniport Driver,它向上导出接口函数与NDIS接口实现对接,向下直接管理网卡硬件。
图2 WINCE网络驱动原理


在WinCE中,应用层通过调用NDIS接口(图3实线框)实现与底层硬件的交互,而NDIS接口是微软已经开发好的,被定义成一个数据结构体的形式。开发网卡驱动就是写一个Miniport Driver,导出相应的Miniport接口函数(图3的虚线框),这些接口函数会在系统注册一个Miniport Driver的时候与NDIS封装层的接口函数对接,这样内核协议层通过调用NDIS的接口就可以访问底层硬件。
图3网络驱动接口实现流程
微软定义的与Miniport Driver相关的NDIS标准接口总共有18个,针对不同的网络设备其接口的实现也不尽相同,本流程图中罗列出的是CS89OO网卡驱动所实现的接口函数,具体的接口实现可参照Platform Builder的帮助文档。

实际网络驱动的编写,就是理解wincE下网络驱动程序的构架,然后针对实际的硬件编写代码,实现相应的中间层Miniport Driver接口函数。,介绍网卡驱动程序Miniport Driver接口的具体实现(由于本驱动的硬件设备是CS8900,所以在函数接口的取名上一律用CS8900代替Miniport Driver)。

DriverEntry,该函数中首先调用NdisMinitializeWrapper函数来通知NDIS Library要注册一个Miniport。然后初始化MINIPORT结构体,所有的Miniport的相关接口函数都会赋到MINIPORT结构中,最后调用NdisMRegisterMiniport来注册Miniport。通过此函数,实现了Miniport Driver接口与NDIS接口的对接。

Miniportlnitialize,该函数为调用函数CS8900RegisterAdapter来完成网络设备的初始化,而CS8900RegisterAdapter又会调用CS8900Initialize,CS8900Initialize函数会相继调用:findCS,查找网络设备;resetCS,重启网络控制器,并设置工作模式为16bit的I/0模式;InitIrq,开启网络控制器的中断;initCS,设置临时的物理地址,为网络控制器设置与嵌入式芯片之间中断的硬件连接,以及总线读写的时序。

WinCE网络数据发送的流程:当上层协议驱动要发数据时,调用NdisSend请求NDIS发送数据包,NDIS将会调用紧接其下的中间层驱动的CS8900Send,该函数首先调用NdisQueryPacket,得到需要发送包的数据信息,并拷贝到一个缓冲区暂存,这样做的目的是保证包数据不被丢失。然后调用CS8900RequestTransmit,向网络控制器发送传送数据的请求,最后调用函数CS8900CopyTxFrame完成数据包的发生。

网络设备的接收数据包时通过中断实现,当网络接口接收到新数据包时,发送完成或者报错

WinCE的网络驱动实现原理 来自淘豆网www.taodocs.com转载请标明出处.

相关文档 更多>>
非法内容举报中心
文档信息
  • 页数12
  • 收藏数0 收藏
  • 顶次数0
  • 上传人aideliliang128
  • 文件大小42 KB
  • 时间2018-02-11