Linux下网卡驱动程序的开发

上传人:壹****1 文档编号:486348154 上传时间:2023-10-18 格式:DOC 页数:65 大小:2.55MB
返回 下载 相关 举报
Linux下网卡驱动程序的开发_第1页
第1页 / 共65页
Linux下网卡驱动程序的开发_第2页
第2页 / 共65页
Linux下网卡驱动程序的开发_第3页
第3页 / 共65页
Linux下网卡驱动程序的开发_第4页
第4页 / 共65页
Linux下网卡驱动程序的开发_第5页
第5页 / 共65页
点击查看更多>>
资源描述

《Linux下网卡驱动程序的开发》由会员分享,可在线阅读,更多相关《Linux下网卡驱动程序的开发(65页珍藏版)》请在金锄头文库上搜索。

1、 论文题目:Linux下网卡驱动程序的开发专 业: 年 级: 学生学号: 学生姓名: 指导教师: 完成时间: Linux下网卡驱动程序的开发八年经验 专业指导毕业设计 需要全套设计请联系:731767310 摘要 本文首先介绍了linux下设备驱动程序设计的基本知识,其中包括对linux的发展历程、内核、特性的概述,linux设备的分类及编写驱动程序的一些基本概念等;其次对linux环境下网卡驱动程序的设计作了理论上的探讨,重点对编写驱动程所要用到的数据结构和基本方法进行了分析和研究,并对模块的加载和卸载以及驱动程序的调试做了阐述,另外还简要的介绍了有关PCI的一些基础知识;最后结合基于PCI

2、总线的RelTek8139网卡,详细论述了网卡驱动程序开发的基本流程,并对驱动程序的使用和运行效果作了演示,文章末尾针对不足之处提出了改进设想。关键词 linux 设备驱动程序 rtl8139摘要DEVELOPING NETWORK CARD DRIVER UNDER LINUXAbstract This paper firstly introduces some basic knowledge on the design of the device drivers under linux , summarizing the development course ,the kernel and

3、 the idiosyncrasy of linux. Meanwhile the sorting of the linux device and some basic terms on writing driver for it are also covered in this part.The second part of this paper theoretically discusses the topic on how to design the drivers for network card under linux . It emphasizes on the analysis

4、and studies of the data structure and basic method when writing device drivers .what is more ,it expounds the loading and unloading of the module and debugging of the drivers.In addition ,it briefly introduces some basic knowledge of the PCI bus ,too. The Last part of this paper discourses upon the

5、basic flow of developing the driver for network card ,such as RelTek8139 based on the PCI bus. Further more ,it shows how to use the driver and the demo of the running picture .In the end ,it brings forward the amelioration against the insufficiency of the driver.Keywords linux device drivers rtl813

6、9目录目录前言I第一章 Linux下设备驱动程序设计的基本知识11.1 Linux概述11.1.1 Linux 发展的重要里程碑11.1.2 Linux 内核简介11.1.3 Linux 的特性31.2 Linux 设备驱动程序概述31.2.1 Linux设备驱动程序分类41.2.2 编写网络驱动程序的一些基本概念41.3 makefile文件简介5第二章 Linux 网卡驱动程序设计的理论探讨62.1 Linux 下网卡驱动程序设计的数据结构和基本方法62.1.1 网卡驱动程序设计要用到的数据结构72.1.2 网卡驱动程序的基本方法92.2 驱动模块的加载和卸载102.2.1 模块加载102

7、.2.2 模块卸载112.3 驱动程序的调试112.4 PCI简介12第三章 开发环境143.1 硬件143.1.1 普通PC机143.1.2 TP-LINK 10/100M自适应快速以太网卡143.2 软件17第四章 系统分析184.1 需求分析184.2 数据流图184.2.1 顶层图184.2.2 0层图194.2.3 1层图194.3 数据字典20第五章 系统设计215.1 设计原则215.2 系统功能设计21第六章 系统实现226.1 主模块实现226.1.1 rtl8139网卡驱动程序加载主模块流程图226.1.2 rtl8139网卡驱动程序打开主模块流程图246.1.3 rtl8

8、139网卡接口信息模块流程图256.1.4 rtl8139网卡驱动程序关闭主模块流程图256.1.5 rtl8139网卡驱动程序卸载主模块流程图276.2 各子模块实现286.2.1 加载主模块下相关子模块286.2.2 打开模块下相关子模块306.3 驱动程序使用简单说明及运行效果326.3.1 驱动程序的加载326.3.2 激活网卡336.3.3 为接口分配IP地址、子网掩码、广播地址346.3.4 添加路由346.3.5 关闭网卡366.3.6卸载网卡36第七章 难点及对策377.1 makefile文件的编写377.2 中断的独占与共享377.3 rtl8139网卡驱动程序的调试38第

9、八章 总结及展望408.1 不足之处408.2 改进设想40致谢语41参考文献42附录43前言前言Linux 目前是计算机技术的一大热点,最近几年在我国得到迅猛发展,被广泛应用在嵌入式系统、服务器和桌面应用等领域。Linux操作系统是UNIX操作系统的一种克隆版本,诞生于1991年的10月5日(这是第一次正式向外公布的的间),以后借助于互联网,在全世界各地计算机爱好者的共同努力下,发展成为目前世界上用户最多的一种类UNIX操作系统。作为一个开放源代码的操作系统,它为人们深入了解操作系统的工作原理提供了极好的机会。Linux系统的设备分为字符设备(char device),块设备(block d

10、evice)和网络设备(network device)三种。Linux设备驱动程序在Linux的内核源代码中占有很大的比例,源代码长度的日益增加,主要是驱动程序的增加。Linux 网络设备驱动程序是Linux 操作系统内核的一个重要组成部分,对Linux网络设备驱动程序的原理与设计技术的掌握,有助于理解网络链路层的工作原理,它对我们从事基于Linux平台的网络产品开发具有一定的意义。检索发现国内外很多文献都对Linux下网络设备驱动程序的开发作了大量理论上的探讨,但是真正结合实例研究这方面内容的却寥寥无几,而这正是本文的特色。本文在分析了Linux 网络设备驱动程序的结构组成和工作原理之后,重

11、点探讨了Linux环境下网卡驱动程序的开发技术,并以RelTek8139芯片为例,详细讨论了实用的网卡驱动的开发流程及具体实现细节。I2005届计算机科学与技术专业毕业设计(论文)第一章 Linux下设备驱动程序设计的基本知识1.1 Linux概述Linux是一套免费和自由传播的类UNIX操作系统,最早是由芬兰大学生Linus Torvalds于1991年开发的,借鉴了Unix系统当时近30%的技术积累,并且综合了主Unix派生系统的优点。 1.1.1 Linux 发展的重要里程碑Linux正在走进越来越多人的视线,也已经让无数的人为之深深吸引,除了众多的软件开发商外,也包括许多软、硬件厂商,

12、以及分布在不同国家、不同行业的企业及个人用户。下面我们简要回顾一下Linux的发展历程:1990年,Linus Torvalds 首次接触 MINIX1991年,Linus Torvalds 开始在 MINIX 上编写各种驱动程序等操作系统内核组件1991年,Linus Torvalds 公开了 Linux 内核1993年,Linux 1.0 版发行,Linux 转向GPL版权协议1994年,Linux 的第一个商业发行版 Slackware 问世1996年,美国国家标准技术局的计算机系统实验室确认 Linux 版本 1.2.13(由 Open Linux 公司打包)符合 POSIX 标准19

13、99年,Linux 的简体中文发行版相继问世2001年,Linux2.4版内核发布2003年,Linux2.6版内核发布1.1.2 Linux 内核简介内核,是一个操作系统的核心。它负责管理系统的进程、内存、设备驱动程序、文件和网络系统,决定着系统的性能和稳定性。linux的一个重要的特点就是其源代码的公开性,所有的内核源程序都可以在 /usr/src/linux下找到,大部分应用软件也都是遵循GPL而设计的,你都可以获取相应的源程序代码。全世界任何一个软件工程师都可以将自己认为优秀的代码加入到其中,由此引发的一个明显的好处就是Linux修补漏洞的快速以及对最新软件技术的利用。而Linux的内

14、核则是这些特点的最直接的代表。编写驱动程序,实际上也就是编写Linux内核的一部分,所以对Linux内核有一个较深入的了解是很有必要的。下面首先介绍一下Linux内核的基本编排(以2.4.20-8内核为例),在源代码树/usr/src/linux下有以下的目录:.arch 该目录包含所有的体系结构特殊的内核代码。它有许多更深的子目录,每一个子目录包含一种支持的体系,例如i386和alpha。.include目录包含建立内核代码需要的大多数的include文件。它下面也有很多的子目录,每个包含一种支持的体系,一般网卡驱动程序只需要用到里面的asm和linux子目录里面的头文件。.init 该目录

15、包含内核的初始代码。.mm 该目录包含所有的内存公共代码。.drivers 所有的系统设备驱动程序在这个目录里。.ipc 该目录包含了内核的进程间的通信代码。.module 该目录用来保存建立的模块。.fs 该目录包含了所有的文件系统的代码,有许多的子目录,每一个支持一个文件系统。.kernel 该目录包含了主内核代码。.net 该目录包含了内核的网络代码。.lib 该目录包含了内核的库代码。.scripts 该目录包含了内核在配置时使用的脚本。按照功能的不同,内核又可分为以下几个部分:(1) 进程管理内核负责创建和终止进程,并处理它们和外部的输入输出,对整个系统功能来讲,不同进程间的通信(通过信号、管道、进程间通信原语)是基本的,都是由内核来处理。此外,调度器,整个操作系统最关键的一个例程,也是进程管理的一部分。(2) 内存管理内存

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 商业/管理/HR > 营销创新

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号