基于ucos的WiFi网卡驱动程序的开发_第1页
基于ucos的WiFi网卡驱动程序的开发_第2页
基于ucos的WiFi网卡驱动程序的开发_第3页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、基于ucos的WiFi网卡驱动程序的开发    嵌入式系统是设计完成复杂功能的硬件和软件,并使其紧密耦合在一起的计算机系统。目前,嵌入式系统已经存在于各种数据采集、工业控制、娱乐、通信等应用领域。在一些应用场合,需要嵌入式设备具有与其它系统交换信息的能力,因此必须为嵌入式系统增加通信功能。通信功能的实现可以采用很多方式,例如以太网,ADSL,GPRS以及其它方式。在一个嵌入式终端中使用WiFi网卡,实现无线网络通信的功能是一种较新的通信方式。由于在uCOS实时操作系统中还没有WiFi的驱动程序,因此下面将介绍WiFi的驱动程序的编写。1 WiFi介绍Wi

2、Fi(Wireless Fidelity),又称802.1lb标准,IEEE于1997年6月批准了该标准。802.11标准的体系结构组成包括:无线站点STA(Station),无线接入点AP(Access Point),独立基本服务组IBSS(Independent Basic Service Set),基本服务组BSS(BasicService Set),分布式系统DS(Distribution System)和扩展服务组ESS(Extended Service Set).该标准定义了两种工作模式:ad hoc模式和infrastructure模式。ad hoc即对点模式,包含两个无线站点(

3、STA,即带无线网卡的设备)。而infrastructure即AP模式,无线站点(STA)通过AP与现有的骨干网相连接,组成一个基本服务组(BSS)。在BSS中,AP不仅提供STA之间通信的桥接功能,还提供STA与有线局域网的连接,可以实现有线Hub几乎所有的功能。2 嵌入式终端系统结构2.1 硬件结构嵌入式终端硬件系统(如图1所示)以Philips公司的LPC2210嵌入式处理器为核心,LPC2210是基于16/32位ARM7TDMI-S,并支持实时仿真和跟踪的CPU。LPC2210的数据和地址总线是开放的,片内有16K字节的RAM。嵌入式终端需要较大存储空间运行实时操作操作系统、TCP/I

4、P协议、图形用户界面(GUI)、串口驱动程序、WiFi驱动程序、英文及汉字字库等,因此在外部扩展了一片容量为256K×16的静态RAM 1S61LV25616及一片容量为1M×16的Flash 39VF160。为了方便调试程序,使用了LPC2210的串口诊断程序的运行结果。 图1 嵌入式终端的硬件结构PCMCIA总线有控制线、数据线、地址线、电源线。其中数据线宽度可选为16位或8位,NC5004的数据线宽度是16位的,即D15D0。地址线宽度为26位,但在WiFi网卡中只须用10位地址线A9A0。WiFi网卡的PCMCIA 的控制线有10根,其中RESET为复位,

5、该线为低电平时网卡回到初始状态。CE1,CE2为卡的地址控制,当CE1,CE2为低时,分别表示偶地址和奇地址的字节有效。OE,WE分别为Memory空间的读写控制线,IORD,IOWR为I/O空间的读写控制线,均为低电平有效。REG用于选择地址访问空间,包括I/O空间和存储器空间。IREQ提示处理器处理网卡的内部事件,可以不用。在对网卡进行读写僮魇保挥械盚WAIT变高表示读或写的数据进入存储器,才能进行下一步总线操作。2.2 软件结构 图2 嵌入式终端的软件结构但uCOS II缺少对外围设备和接口的支持,如没有文件系统、网络协议、图形界面。在厂家提供的开发资料中有其自行开发的TCP/

6、IP协议和串口驱动程序。但该TCP/IP协议是与以太网卡驱动程序接口的,因此在该TCP/IP协议中,需要修改与网卡接口的API函数。其余的PCMCIA驱动程序、WiFi网卡驱动程序需要自己进行编写。3 驱动程序的编写3.1 PCMCIA驱动程序PCMCIA 驱动程序包括五个主要函数,分别是initPCMCIAPorts(),pcmcia_WriteMem(),pcmcia_WriteReg(),pcmcia_ReadMem (),pcmcia_Read_Reg()。initPCMCIAPorts()函数用于PCMCIA设备的复位,其作用是通过控制RESET复位线为低电平,延迟一段时间以后,再恢

7、复为高电平。PCMCIA设备内部空间分为Memory空间和I/O空间,对Memory空间读写分别为pcmcia_ReadMem(),pcmcia_WriteMem(),而I/O空间的读写为pcmcia_ReadReg(),pcmcia_WriteReg().这几个函数区别在于控制线WE,OE,IORD,IOWR的操作不一样。PCMCIA驱动程序函数按照PCMCIA时序设置LPC2210相应的通用端口。PCMCIA总线的工作时序是这样,首先在地址线上设置数据地址,并将CE1,CE2设为低电平,然后REG设为低电平将地址锁存。接下来进行读或写操作,读操作中,Memory空间和I/O空间的读操作分别

8、将OE,IORD设为低电平,然后等待HWAIT变为高电平。HWAIT变为高电平后,将数据线上的状态读入。写操作中,首先按照待写数据设置数据线上的状态,然后Memory空间的写操作和I/O空间的写操作分别将WE,IOWE设置为低电平。接下来,HWAIT变为高电平后说明数据已经写入。在读写操作完成以后,依次将OE或者IORD(读操作),WE或者IOWR(写操作),CE2,CE1,REG恢复为高电平。3.2 网卡驱动程序Prism 2网卡内部操作是封闭的,外部对其操作都是通过存储器操作完成的,Memory空间的存储器有COR(Configuration Option Register)寄存器,I/O空间的存储器有BAP(Baffuer Access Path)寄存器,命令/状态寄存器,FID管理寄存器,事件寄存器,控制寄存器,主机软件寄存器,辅助端口寄存器等,这些寄存器的含义及偏移地址见文献2.LPC2210管理、配置网卡的数据项都是加载一个特定的RID(Resource IDentifiers)到BAP寄存器,读取或者写入一个特定的缓冲区。WiFi网卡驱动程序中的函数功能都是通过访问这些存储器完成的,下面将介绍这些API函数的功能。wlandrv_ProbeDevice()函数用于检测网卡是否存在,函数首

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论