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

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

ID:22310932

大小:51.00 KB

页数:6页

时间:2018-10-28

qnx操作系统及网络设备驱动模块_第1页
qnx操作系统及网络设备驱动模块_第2页
qnx操作系统及网络设备驱动模块_第3页
qnx操作系统及网络设备驱动模块_第4页
qnx操作系统及网络设备驱动模块_第5页
资源描述:

《qnx操作系统及网络设备驱动模块》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库

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

2、第1应用程序无法直接访问保护空间,系统稳定性大大提高。缺点是,由于内核模块(例如网络驱动)处于保护空间,因此调试困难,任何驱动程序的修改都要重新编译内核,无法做到驱动的动态加载和卸载。QNX的微内核结构,如图3所示,内核独立自处于一个被保护的地址空间驱动程序、网络协议和应用程序处地程序空间中。微内核结构的优点:①驱动程序、网络协议、文件系统等操作系统模块和内核相互独立,任何模块的故障都不会导致内核的崩溃②驱动程序、网络协议、文件系统和应用程序都处于程序空间,都调用相同的内

3、核API,开发与调试和应用程序没有区别③操作系统功能模块可以根据需要动态地加载或卸载,不需要编译内核。在高可靠性要求的情况下,可以编写监视模块,对可靠性要求高的模块进行监视,必要的时候重新启动或重新加载而无须重启系统。高可靠性的内核结构使QNX具备了高可靠性嵌入式操作系统的本质特征。在具有高可靠性内核的基础上,QNX的创新设计使它同样具有很高的效率。QNX最为引人注目的地方是,它是UNIX的同胞异构体,保持了和UNIX的高度相似性,绝大多数UNIX或LINUX应用程序可以在QNX下直接编译生成。这意味着为

4、数众多的稳定成熟的UNIX、LINUX应用可以直接移植到QNX这个更加稳定高效的实时嵌入式平台上来。2QNX网络结构QNZ网络子系统由三个部分组成:网络管理模块(io-)、网络协议模块(npm-q.so、npm-tcpip.so)、网络设备驱动模块(devn-ne2000.so)。模块之间的层次关系如图4所示。图4中的每个模块各自具有不同的功能,但是它们具有一些相同的属性。如:网络设备驱动、TCP/IP协议栈分别对上层io-模块和应用程序产生数据,两者都可以被看作数据源同时它们也接受上层发来的数据,又可以

5、同时被看作数据的消费者。过滤模块对向上的数据进行筛选,分协议进行处理对向下的数据则进行相应的转换,如进行网络地址转换NAT。转换模块负责不同协议帧结构的转换,在以太网的工作环境下,它就负责对IP数据报进行以太网帧的封装和解包。和QNX其它服务进程一样,QNX的网络子系统也在内核外部空间运行。应用程序面对的是一个统一的网络接口,硬件相关的内容被完全包装在网络子系统内。QNX网络子系统的三个子模块按层次分开,io-模块处于中心,是QNX网络的核心和重点,其它模块都挂接在它上面。数据和信息的流动都必须经由io-

6、调度与转发,所有其它模块所面对的就是一个单一主体。这样的中心交换结构,屏蔽了各个模块间相互协调的复杂细节,在很大程序上方便了模块的编写工作同时,io-还是QNX的网络管理中心。任何网络协议和网络设备驱动程序都必须向io-注册,由它来加载,并接受io-的配置和管理,用户对网络状态的查询和管理也是通过io-来实现的。3QNX网络设备驱动QNX网络设备驱动模块处于网络硬件和io-模块之间。驱动模块负责配置硬件使其正常工作,向io-报告数据收发情况,接收和传递数据,接受io-的调度和管理。QNX网络设备驱动程序依

7、照以上功能,分为初始化、接收发送数据、网络设备信息统计几个功能块。要使网络设备工作正常,驱动程序就要对它进行一定的寄存器配置,同时,还要向QNX网络子系统注册自己,表明网络设备的存在和网络通信能力,才能为系统和应用程序所用。在初始化工作完成以后,网络设备就进入了工作状态,收发数据。设备信息的统计也是由设备驱动程序来完成的。(1)初始化初始化包括两个方面,一方面是初始化网络设备,使其正常工作另一个方面,是向io-正确注册驱动模块,表明自己的属性,方便上层正确操作。500)this.style.ouseg(t

8、his)">网络设备的初始化工作和硬件紧密相关,这里就不一一描述。驱动模块向io-加载自己的时候,系统遵循如下工作流程:①io-搜索全局的符合io__dll_entry。它定义了驱动的初始化函数,io-会直接调用这个函数。②初始化函数向io-注册驱动和相应的函数。③初始化函数告诉io-和它的模块自己的通信能力。经过以上流程以后,io-中就建立起有关此驱动程序的数据和函数调用列表。驱动程序必须正确编写初始化函数,并将该函数正确链接至io__dll_entry。(2)从网络设备接收数据当有包到达网络设备的时候

9、,网络设备就会用某种方式通知驱动程序(例如中断),此时,驱动程序就要采取某种策略来处理到来的帧或数据。通常驱动程序这时候需要做以下工作:①通过DMA将包取回来②做相应的必要处理,如通知网络设备释放当前帧的缓存,配置寄存器让网络设备等待下一帧到来等③通过调用io-的tx_up_start()函数把包传递给上层模块。当上层所有的模块都完成对这个包的处理以后,io-调用我们驱动中的tx_done()函数,它来做最后的处理工作。tx_

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。