片之间中断的硬件连接,以及总线读写的时序。
3.2.3网络数据包的发送
WinCE网络数据发送的流程:当上层协议驱动要发数据时,调用NdisSend请求NDIS发送数据包,NDIS将
会调用紧接其下的中间层驱动的CS8900Send,该函数首先调用NdisQueryPacket,得到需要发送包的数据信息,并拷贝到一个缓冲区暂
存,这样做的目的是保证包数据不被丢失。然后调用CS8900RequestTransmit,向网络控制器发送传送数据的请求,最后调用函数
CS8900CopyTxFrame完成数据包的发生。
3.2.4网络数据的接收和中断
网络设备的接收数据包时通过中断实现,当网络接口接收到新数据包时,发送完成或者报错误信息及连接状态都会出发中断,通常中断处理程序通过检测硬件状态寄存器判断是哪种情况。
当
网络设备有数据到来的时候,将触发中断,相应的中断处理程序接管中断后,将调用Miniport
Driver所注册的中断处理例程CS8900Isr,通过读取CS8900的中断寄存器判断是否是接收到数据中断,如果是就调用数据接收函数
CS8900ReceiveEvent。Miniport Driver通常在这里把网卡上的数据拷贝到Miniport
Driver缓冲区队列中去,出于效率的考虑,Miniport
Driver这时可能不会立即通知上层处理新的数据,因为很可能,马上还有随后的新的数据到来,当接收到的包的数量达到一定程度的时候,驱动程序的接收线
程会调用函数NdisMIndicateReceivePacket指示新的NDIS新数据的到来。
3.2.5Miniport Driver其他接口
CS8900Reset,复位硬件网卡;
CS8900Querylnformation,网卡信息查询函数;
CS8900Setlnformation,设置网卡信息函数。
文章评论(0条评论)
登录后参与讨论