网络设备驱动程序课件.ppt

网络设备驱动程序课件.ppt

ID:57028434

大小:372.00 KB

页数:36页

时间:2020-07-26

网络设备驱动程序课件.ppt_第1页
网络设备驱动程序课件.ppt_第2页
网络设备驱动程序课件.ppt_第3页
网络设备驱动程序课件.ppt_第4页
网络设备驱动程序课件.ppt_第5页
资源描述:

《网络设备驱动程序课件.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、NeusoftInstituteofInformation嵌入式系统工程系--嵌入式Linux驱动设备开发协议栈Linux的优点之一在于它丰富而稳定的网络协议栈。其范围从协议无关层(例如通用socket层接口或设备层)到各种具体的网络协议实现。网络设备驱动概述协议简介对于网络的理论介绍一般都采用OSI(OpenSystemsInterconnection)模型,但是Linux中网络栈的介绍一般分为四层的Internet模型。协议栈层次对比网络接口层网络接口层把数据链路层和物理层合并在了一起,提供访问物理设备的驱动程序,对应的网络协议主要是以太网协议。

2、网际层网络层协议管理离散的计算机间的数据传输,如IP协议为用户和远程计算机提供了信息包的传输方法,确保信息包能正确地到达目的机器。重要的网络层协议包括ARP(地址解析协议)、ICMP(Internet控制消息协议)和IP协议(网际协议)等。传输层传输层的功能包括:格式化信息流、提供可靠传输。传输层包括TCP(TransmissionControlProtocol,传输控制协议)和UDP(UserDatagramProtocol,用户数据报协议),它们是传输层中最主要的协议。应用层应用层位于协议栈的顶端,它的主要任务是服务于应用,如利用FTP(文件传输

3、协议)传输一个文件。常见的应用层协议有:HTTP,FTP,Telnet等。应用层是Linux网络设定很关键的一层,Linux服务器的配置文档主要针对应用层中的协议。Linux网络子系统Linux网络子系统的顶部是系统调用接口层。它为用户空间的应用程序提供了一种访问内核网络子系统的方法。位于其下面的是一个协议无关层,它提供了一种通用方法来使用传输层协议。然后是具体协议的实现,在Linux中包括内嵌的协议TCP、UDP,当然还有IP。然后是设备无关层,它提供了协议与设备驱动通信的通用接口,最下面是设备驱动程序。Linux网络子系统为应用程序提供访问内核网

4、络子系统的方法:Socket系统调用。系统调用接口实现一组通用函数来访问各种不同的协议:通过socket实现。Linux中的socket使用structsock来描述,这个结构包含了特定socket所需要的所有状态信息,还包括socket所使用的特定协议和在socket上可以执行的一些操作。协议无关接口网络协议层用于实现各种具体的网络协议,如:TCP、UDP等。网络协议设备无关接口将协议与各种网络设备驱动连接在一起。这一层提供一组通用函数供底层网络设备驱动程序使用,让它们可以对高层协议栈进行操作。首先,设备驱动程序可能会通过调用register_ne

5、tdevice或unregister_netdevice在内核中进行注册或注销。调用者首先填写net_device结构,然后传递这个结构进行注册。内核调用它的init函数(如果定义了这种函数),然后执行一组健全性检查,并将新设备添加到设备列表中(内核中的活动设备链表)。设备无关接口要从协议层向设备发送数据,需要使用dev_queue_xmit函数,这个函数对数据进行排队,并交由底层设备驱动程序进行最终传输报文的接收通常是使用netif_rx执行的。当底层设备驱动程序接收到一个报文(包含在所分配的sk_buff中)时,就会通过调用netif_rx将数据

6、上传至设备无关层,然后,这个函数通过netif_rx_schedule将sk_buff在上层协议队列中进行排队,供以后进行处理。设备无关接口网络体系结构的最底部是负责管理物理网络设备的设备驱动程序层。驱动程序每个网络接口都由一个net_device结构来描述,该结构可使用如下内核函数动态分配:1、structnet_device*alloc_netdev(intsizeof_priv,constchar*mask,void(*setup)(structnet_device*))sizeof_priv私有数据区大小;mask:设备名;setup初始化函

7、数2、structnet_device*alloc_etherdev(intsizeof_priv)两个函数的关系?Linux网卡设备描述结构net_device的主要成员包括:charname[IFNAMSIZ]设备名,如:eth%dunsignedlongstate设备状态unsignedlongbase_addrI/O基地址unsignedintirq中断号net_deviceint(*init)(structnet_device*dev)初始化函数。该函数在register_netdev时被调用来完成对net_device结构的初始化net_

8、device和字符驱动一样,网络设备也要声明能操作它的函数。有些操作可以保留为NULL,有的可以通过ethe

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

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

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