标等)、块设备(如硬盘、光驱、软驱等)和网络设备(也称为网络接口,netw ork interface),如以太网卡,无线网卡。为了屏蔽网络环境中物理网络设备的多样性,Linux对所有的物理设备进行抽象并定义了一个统一的概念,称之为接口(Interface)。所有对网络硬件的访问都是通过接口进行的,接口提供了一个对所有类型的硬件一致化的操作集合来处理基本数据的发送和接收。一个网络接口被看作是一个发送和接收数据包(packets)的实体。对于每个网络接口,都用一个device的数据结构表示,有关该数据结构的具体内容,请参照include/linux/ netdevice.h。通常网络设备是一个物理设备,本文主要针对无线网卡。在内核启动时,通过网络设备驱动程序,将登记存在的网络设备。所有被发送和接收的包都用数据结构sk buff表示。这是一个具有很好的灵活性的数据结构,可以很容易增加或删除网络协议数据包的首部,它的具体内容请参照include/linux/skbuff.h。

Linux网络驱动程序的体系结构可以分为4层,从上到下分别为协议接口层、网络设备接口层、提供实际功能的设备驱动功能层,以及网络设备和网络媒介层。在设计网卡驱动程序时,最主要的工作就是完成设备驱动功能层,使其满足自己所需的功能。

3 无线网卡驱动程序

无线网卡类型众多,不同的网卡都有不同的硬件支持(像Cisco,C om paq,N okia使用Prism芯片组,而Lucent Orinoco卡和Apple Airport使用Hermes芯片组,除此之外,US B设备的无线网卡则采用Atmel 芯片组,像D-Link,T enda等),所以,它们在驱动程序的编写上也会有所不同。简单地说,CF、PC MCI A 接口的网卡驱动需要有Card Service(CS)模块的支持,Orinoco的网卡还需要有Hermes模块的帮助,而US B接口的网卡则不需要这些。

以下用cisco350系列pcmcia无线网卡驱动作为主要参考程序,此程序已在笔记本电脑上安装成功,并用airopeek测试过其收发包的数据格式,准确无误。辅助参考的程序有orinoco.c,m pi350.c以及T enda7722u US B设备驱动程序。在文章中,主要介绍了无线网卡驱动编写的共同方法和步骤(不考虑与硬件相关的代码),为以后分析其它类型的网卡或者编写驱动方面提供了参考。

由于无线网卡与传统的以太网卡在驱动程序设计上有些模块是相同的,比如网卡的打开和关闭,模块的加载和卸载,所以本文只分析了驱动中具有无线特色的部分:初始化函数,数据的发送和接收,同时它们也是驱动程序的核心内容。

3.1 网卡的初始化

所有网卡设备初始化工作主要是检测网卡的存在,初始化网卡的device结构及在系统中登记该设备。当系统登记一个网卡设备时,核心一般会请求该设备的驱动程序初始化自己。通过分析,初始化函数的功能主要有:

(1)检测设备,在初始化程序里根据硬件的特征检查硬件是否存在,然后决定是否启动这个驱动程序。

(2)检测该设备的I/O地址和中断号,调用re2 quest irq和request region向系统登记I/O基地址和设备中断号。

(3)填充硬件帧头,这是驱动程序的主要工作之一。硬件一般都会在上层数据发送之前加上自己的硬件帧头,比如以太网就有14字节的帧头。这个帧头是加在上层ip、ipx等数据包前面的。驱动程序提供一个hard header方法,协议层(ip、ipx、arp等)在发送数据之前会调用这段程序。硬件帧头长度必须填在dev->hard header len,协议层会在数据之前保留好硬件帧头的空间,这样hard header 程序只要调用skb push然后正确填入硬件帧头就可以了。对于无线网接口,802.11帧头的组建由MAC协议处理芯片完成,所以在驱动中只完成hard header函数的说明工作,不做具体的编写。

(4)填写传入该设备device结构的大部分域段,对于以太网接口,device结构中许多有关网络接口的信息都是通过ether setup()函数统一设置的,此函数已作为Linux内核的内部函数,不需要在驱动中再次指明。对于无线网接口,在程序中可采用wifi setup()函数进行设置,其中填写了一些无线局域网的通用配置:

static v oid wifi setup(struct net device3dev,struct net device3 ethdev)

{

/3硬件帧头的填充函数3/

dev->hard header=0;

dev->rebuild header=0;

dev->hard header cache=0;

dev->header cache update=0;

/3一些处理函数的初始化3/

97

第2期 王玉东等:基于Linux的无线网卡驱动程序

linux无线网卡ucod文件,基于Linux的无线网卡驱动程序相关推荐

  1. linux 嵌入式 快照_基于Linux的嵌入式启动优化的研究

    基于Linux的嵌入式启动优化的研究 论文 开题分析 周报 启动 基于Linux嵌入式系统启动加速的研究 一. 所选课题的目的和意义 随着科学技术的蓬勃发展,计算机被更多的人使用,并与人类对额生活结合 ...

  2. linux dhcp 论文,毕业论文—基于linux的dhcp服务器配置.doc

    毕业论文-基于linux的dhcp服务器配置 基于Linux的DHCP服务器配置 摘 要 随着互联网的普及,人们的工作.学习和生活与网络联系越来越紧密,搭建了许多不同的网络,如企业网.校园网和城区网等 ...

  3. linux的八进制文件模式,linux od-输出文件的八进制、十六进制等格式编码的字节...

    博主推荐:获取更多 linux文件内容查看命令 收藏:linux命令大全 od命令用于输出文件的八进制.十六进制或其它格式编码的字节,通常用于显示或查看文件中不能直接显示在终端的字符. 常见的文件为文 ...

  4. linux无线网卡驱动分析,基于Linux的无线网卡驱动程序

    基于Linux的无线网卡驱动程序 文章分析了Linux下无线网卡驱动程序结构及设计方法,着重 (本文共4页) 阅读全文>> 无线局域网是当前较为常见的一种无线接入技术,具有运行速度高一级灵 ...

  5. linux文件系统的设计,基于Linux的文件系统设计.doc

    PAGE PAGE 33 无敌 操作系统课程设计 说 明 书 ? 学 院.系: 软件学院 专 业: 软件工程 学 生 姓 名: 学 号: 设 计 题 目: 基于Linux的模拟文件系统的设计与实现 起 ...

  6. linux透明加密系统,基于Linux的透明加密系统的设计与实现

    摘要: 随着互联网时代的到来,人们用于接触事物的方式不仅仅局限于简单的通讯工具了,如:口语交流,书信传递等等,现在已经越来越多地通过手机,电脑,平板等电子设备进行信息的交流和信息的存储.但是在我们享受 ...

  7. linux命令看文件内容,Linux文件内容查看相关命令

    1.more命令 在Linux中,more命令是一个基于vi编辑器的文本过滤器,它能以全屏的方式按页显示文本文件的内容,more里面内置了一些快捷键. (1)命令语法 more(选项)(参数) (2) ...

  8. linux看门狗设备,基于Linux构建无人值守系统(看门狗)

    基于Linux构建无人值守系统(看门狗) 在各种嵌入式设备soc中基本都提供了看门狗,在很长一段时间里我对看门狗的理解就是"关掉它,不然它会找麻烦".但是当某种需求存在的时候,它又 ...

  9. linux的驱动开发——基于linux的单片机开发简介

    1.基于linux的单片机开发和裸机开发的区别 \qquad单片机的裸机开发和基于linux的单片机开发,是有这本质的不同. \qquad单片机的裸机开发更加底层,它是直接对寄存器进行操作,进而实现单 ...

  10. linux 嵌入式串口通信,基于linux的嵌入式串口通信综述.doc

    PAGE 天津电子信息职业技术学院 <嵌入式软件编程>课程报告 课程名称:基于linux的嵌入式串口通信课程代码: 115229 姓 名: 甘琦 学 号: 48 专 业: 物联网应用技术 ...

最新文章

  1. skype linux 安装,如何在Ubuntu 18.04上安装Skype
  2. Python配置OpenCV时报错:ImportError DLL load failed: %1 不是有效的 Win32 应用程序
  3. hdu 4193(单调队列)
  4. 51nod 1562 玻璃切割 (STL map+一点点的思考)
  5. nginx系列之二:配置文件解读
  6. php限制下载文件格式,php下载文件 强制任意文件格式下载
  7. OpenCV3学习(11.6) ORB特征检测器及BRIEF描述符
  8. ipconfig和ping 命令的各种参数
  9. 立项、合同、项目章程、可行性分析、建设方案、项目范围、关系等比较重要的部分
  10. java金额小数位,java 数字转大写金额,小数部分太简单略
  11. ubuntu java 7_在Ubuntu上安装Java 7
  12. bin文件读写 - C/C++
  13. 2018-01-20 HDU 4609 FFT 快速傅里叶变换
  14. 解读小红书2022年母婴行业报告:心智种草的流量密码
  15. 传奇怎么设置不显示服务器,如何将传奇服务器未知神殿地图修改为不限制进出...
  16. vue打印插件,使用教程
  17. JAVA TOOL-【1】配置
  18. 零售门店促销创新的八个思路
  19. PyQt5 5.10.1 + SIP 4.19.8 + Eric6
  20. webrtc 快速搭建 视频通话 视频会议 (亲测半个小时搭建成功)

热门文章

  1. 纽约:高速Wi-Fi将进入大街小巷 时时刻刻可无线上网
  2. 2021-2027全球与中国功能性涂层复合材料市场现状及未来发展趋势
  3. 网线水晶头 RJ45 接法
  4. 微信爱帮公交查询之公交线路查询
  5. 读【选修计算机专业的伤与痛】
  6. 数学速算法_计算总是出算?小学数学常用的25种快速口算窍门,学好算数必备...
  7. 赢富、超赢TopView SuperView TotalView 数据网站
  8. selected和checked区别
  9. 如何使用Apple Watch启动和跟踪锻炼
  10. Chair:支付宝前端团队推出的Node.js Web框架