嵌入式系统是设计已完成简单功能的硬件和软件,并使其密切耦合在一起的计算机系统。目前,嵌入式系统早已不存在于各种数据采集、工业掌控、娱乐、通信等应用领域。在一些应用于场合,必须嵌入式设备具备与其它系统互相交换信息的能力,因此必需为嵌入式系统减少通信功能。通信功能的构建可以使用很多方式,例如以太网,ADSL,GPRS以及其它方式。
在一个嵌入式终端中用于WiFi网卡,构建无线网络通信的功能是一种较新的通信方式。由于在uCOS实时操作系统中还没WiFi的驱动程序,因此下面将讲解WiFi的驱动程序的撰写。 1WiFi讲解 WiFi(WirelessFidelity),又称802.1lb标准,IEEE于1997年6月批准后了该标准。
802.11标准的体系结构构成还包括:无线站点STA(Station),无线接入点AP(AccessPoint),独立国家基本服务组IBSS(IndependentBasicServiceSet),基本服务组BSS(BasicServiceSet),分布式系统DS(DistributionSystem)和拓展服务组ESS(ExtendedServiceSet)。 该标准定义了两种工作模式:adhoc模式和infrastructure模式。adhoc即对点模式,包括两个无线站点(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/IP协议、图形用户界面(GUI)、串口驱动程序、WiFi驱动程序、英文及汉字字库等,因此在外部拓展了一片容量为256K16的静态RAM1S61LV25616及一片容量为1M16的Flash39VF160。为了便利调试程序,用于了LPC2210的串口临床程序的运营结果。 图1嵌入式终端的硬件结构 系统中自由选择了用于Prism2芯片的网卡,型号为COMPAQNC5004,反对IEEE802.11b,最低速率为11Mb/s.网卡的物理驱动模块为PCMCIA,供电电压为3.3V.由于LPC2210没PCMCIA控制器,因此LPC2210与NC5004的PCMCIA模块是通过LPC2210的标准化端口相连的,总线时序通过软件建模来已完成,即PCMCIA模块的驱动程序。
PCMCIA总线有控制线、数据线、地址线、电源线。其中数据线宽度附加为16位或8位,NC5004的数据线宽度是16位的,即D15~D0。地址线宽度为26位,但在WiFi网卡中只须用10位地址线A9~A0。WiFi网卡的PCMCIA的控制线有10根,其中RESET为废黜,该线为低电平时网卡返回初始状态。
CE1,CE2为卡的地址掌控,当CE1,CE2为较低时,分别回应极地址和奇地址的字节有效地。OE,WE分别为Memory空间的读取控制线,IORD,IOWR为I/O空间的读取控制线,皆为低电平有效地。REG用作自由选择地址采访空间,还包括I/O空间和存储器空间。
IREQ提醒处理器处置网卡的内部事件,可以不必。在对网卡展开读写操作时,只有当HWAIT变高回应读书或写出的数据转入存储器,才能展开下一步总线操作者。
2.2软件结构 嵌入式终端的软件系统(如图2右图)还包括实时操作系统、PCMCIA驱动程序、WiFi网卡驱动程序、TCP/IP协议、串口驱动程序、图形界面等。本系统中的实时操作系统vCOSII是一个公开发表源代码、结构小巧、具备可褫夺动态内核的实时操作系统。最多可以反对64个任务,分别对应优先级0~63,其中0为最低优先级。
vCOS必须重制才能用作有所不同的处理器平台,重制必须重写的文件:OS_CPU.H,OS_CPU_A.S,OS_CPU_C.C.对于LPC2210嵌入式处理器,厂家的技术支持一般获取了该型号处理器的这三个重制文件,将这三个文件替换原文件才可用于。 图2嵌入式终端的软件结构 但uCOSII缺乏对外围设备和模块的反对,如没文件系统、网络协议、图形界面。
在厂家获取的研发资料中有其自行研发的TCP/IP协议和串口驱动程序。但该TCP/IP协议是与以太网卡驱动程序模块的,因此在该TCP/IP协议中,必须改动与网卡模块的API函数。其余的PCMCIA驱动程序、WiFi网卡驱动程序必须自己展开撰写。 3驱动程序的撰写 3.1PCMCIA驱动程序 PCMCIA驱动程序还包括五个主要函数,分别是initPCMCIAPorts(),pcmcia_WriteMem(),pcmcia_WriteReg(),pcmcia_ReadMem(),pcmcia_Read_Reg()。
initPCMCIAPorts()函数用作PCMCIA设备的废黜,其起到是通过掌控RESET废黜线为低电平,延后一段时间以后,再行完全恢复为高电平。 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空间的读操作者分别将OE,IORD划为低电平,然后等候HWAIT变成高电平。HWAIT变成高电平后,将数据线上的状态读取。
写出操作者中,首先按照待写出数据设置数据线上的状态,然后Memory空间的写出操作者和I/O空间的写出操作者分别将WE,IOWE设置为低电平。接下来,HWAIT变成高电平后解释数据早已载入。
在读写操作已完成以后,依序将OE或者IORD(读书操作者),WE或者IOWR(写出操作者),CE2,CE1,REG完全恢复为高电平。
本文来源:尊龙凯时公司官网-www.xhjek.com