保存桌面快捷方式 - - 设为首页 - 手机版
凹丫丫旗下网站:四字成语大全 - 故事大全 - 范文大全
您现在的位置: 范文大全 >> 理工论文 >> 电子通信论文 >> 正文

QNX操作系统及网络设备驱动模块


X网络设备驱动模块处于网络硬件和io-net模块之间。驱动模块负责配置硬件使其正常工作,向io-net报告数据收发情况,接收和传递数据,接受io-net的调度和管理。QNX网络设备驱动程序依照以上功能,分为初始化、接收发送数据、网络设备信息统计几个功能块。要使网络设备工作正常,驱动程序就要对它进行一定的寄存器配置,同时,还要向QNX网络子系统注册自己,表明网络设备的存在和网络通信能力,才能为系统和应用程序所用。在初始化工作完成以后,网络设备就进入了工作状态,收发数据。设备信息的统计也是由设备驱动程序来完成的。

(1)初始化

初始化包括两个方面,一方面是初始化网络设备,使其正常工作;另一个方面,是向io-net正确注册驱动模块,表明自己的属性,方便上层正确操作。网络设备的初始化工作和硬件紧密相关,这里就不一一描述。

驱动模块向io-net加载自己的时候,系统遵循如下工作流程:

①io-net搜索全局的符合io_net_dll_entry。它定义了驱动的初始化函数,io-net会直接调用这个函数。

②初始化函数向io-net注册驱动和相应的函数。

③初始化函数告诉io-net和它的模块自己的通信能力。

经过以上流程以后,io-net中就建立起有关此驱动程序的数据和函数调用列表。驱动程序必须正确编写初始化函数,并将该函数正确链接至io_net_dll_entry。

(2)从网络设备接收数据

当有包到达网络设备的时候,网络设备就会用某种方式通知驱动程序(例如中断),此时,驱动程序就要采取某种策略来处理到来的帧或数据。通常驱动程序这时候需要做以下工作:

①通过DMA将包取回来;

②做相应的必要处理,如通知网络设备释放当前帧的缓存,配置寄存器让网络设备等待下一帧到来等;

③通过调用io-net的tx_up_start()函数把包传递给上层模块。

当上层所有的模块都完成对这个包的处理以后,io-net调用我们驱动中的tx_done()函数,它来做最后的处理工作。

tx_up_start()函数是设备驱动中比较关键的函数,下面简要部分一下这个函数的入口参数。

npkt_t*(*tx_up_start)(int registrant_hdl,

nptk_t *npkt,

int off,

int framelen_sub,

uint16_t cell,

uint 16_t endpoint,

uint16_t iface,

void *done_hdl)

其中:int registrant_hdl--本驱动在io-net中的句柄,注册时由io-net生成;

nptk_t *npkt --需要处理的包的指针;

int off--底层协议包头长度,如以太网帧头部长度;

int framelen_sub--尾部填充的长度,对于以太网这个值为零;

uint16_t cell、uint16_t endpoint--endpoint和cell是io-ne

《QNX操作系统及网络设备驱动模块(第2页)》
本文链接地址:http://www.oyaya.net/fanwen/view/167912.html

★温馨提示:你可以返回到 电子通信论文 也可以利用本站页顶的站内搜索功能查找你想要的文章。