1 无线宽带通信简介
自1997年IEEE802工作组制定了802.11无线局域网标准,基于WLAN技术的无线宽带通信得到了迅速发展。在短短的六年发展历程中,WLAN技术不断地发展和成熟,先后推出了802.11b/a/g协议。基于802.11b协议的无线局域网,工作在2.4GHz频段,采用CCK调制技术,最高数据传输速率能够达到11Mbps。基于802.11a协议的无线局域网,工作在5GHz频段,采用OFDM调制技术,使数据的传输速率可高达54Mbps。802.11g协议结合802.11a和802.11b的优点,工作在2.4GHz频段,采用OFDM调制技术,具有与802.11a标准相同的速率。为了解决通信设备在三个不同标准的无线网络间的兼容问题,现已有几家公司提供了IEEE802.11a/b/g的双频多模的解决方案。802.11e和802.11i标准即将出炉。这两个标准将分别解决目前WLAN突出的两个问题:QoS和网络安全。Intel公司将迅驰技术成功地应用到笔记本上,人们可以通过WLAN技术轻松地进行无线宽带上网。然而人们对WLAN技术的应用不仅仅局限于通用的PC机或笔记本的无线联网,嵌入式系统整合WLAN技术实现无线宽带通信成为今后应用的热点。例如由无线数字机顶盒、计算机、无线网关等构成的家庭无线网络,嵌入式手持移动终端和工业控制现场无线设备等。近年来,嵌入式微处理器性能的大力提高,基于嵌入式系统的无线宽带通信模块不仅能实现数据传输,而且还能够满足人们对于多媒体通信的需求。在这里,利用一款基于ARM920T内核的微处理器S3C2410X构建一个嵌入式系统完成无线宽带通信的功能。
2 S3C2410X嵌入式处理器
S3C2410是韩国三星电子公司最近推出的一款基于ARM920T内核的16/32位RISC嵌入式微处理器。该处理器主要面向手持式设备以及高性价比、低功耗的应用。图1为ARM920T的结构框图,图2为S3C2410X在内核外所集成资源的功能框图[1]。
ARM920T核由ARM9TDMI、存储管理单元MMU和高速缓存三部分组成。其中,MMU可以管理虚拟内存,高速缓存由独立的16KB地址和16KB数据高速Cache组成。ARM920T有两个内部协处理器:CP14和CP15。CP14用于调试控制,CP15用于存储系统控制以及测试控制。S3C2410X集成了一个LCD控制器(支持STN和TFT带有触摸屏的液晶显示屏)、SDRAM控制器、3个通道的UART、4个通道的DMA、4个具有PWM功能的计时器和一个内部时钟、8通道的10位ADC。S3C2410还有很多丰富的外部接口,例如触摸屏接口、I2C总线接口、I2S总线接口、两个USB主机接口、一个USB设备接口、两个SPI接口、SD接口和MMC卡接口。在时钟方面S3C2410X也有突出的特点,该芯片集成了一个具有日历功能的RTC和具有PLL(MPLL和UPLL)的芯片时钟发生器。MPLL产生主时钟,能够使处理器工作频率最高达到203MHz。这个工作频率能够使处理器轻松运行WinCE、Linux等操作系统以及进行较为复杂的信息处理。UPLL产生实现主从USB功能的时钟。
S3C2410X将系统的存储空间分成8个bank,每个bank的大小是128M字节,共1G字节。bank0到bank5的开始地址是固定的,用于ROM或SRAM。bank6和bank7用于ROM、SRAM或SDRAM,这两个bank可编程,且大小相同。bank7的开始地址是bank6的结束地址,灵活可变。所有内存块的访问周期都可编程,外部Wait扩展了访问周期。S3C2410X采用nGCS[7:0]8个通用片选线选择8个bank区。
S3C2410X支持NAND闪存Boot Load, NAND闪存具有容量大、比NOR闪存更具竞争力的价格等特点,系统采用NAND闪存与SDRAM组合,可以获得非常高的性价比。S3C2410X具有三种boot方式,由OM[1:0]管脚选择:00时处理器从NAND闪存boot;01时从16位宽的ROM boot;10时从32位宽ROM boot。用户将bootload代码和操作系统镜像放在外部的NAND闪存,采用NAND闪存boot。处理器上电复位时,通过内置的NAND闪存访问控制接口将bootload代码自动加载到内部的4KB SRAM(此时该SRAM定位于起始地址空间0x00000000)并且运行,在boot SRAM运行的bootload程序将操作系统的镜像加载到SDRAM,之后操作系统就能够在SDRAM运行。启动完毕后,4KB boot SRAM就可以用于其他用途。如果从其他方式boot,boot ROM就要被定位于内存的起始地址空间0x00000000,处理器直接在ROM上运行boot程序,此时4KB boot SRAM被定位于内存地址0x40000000处。
S3C2410X对于片内的各个部件采用了独立的电源供给:内核采用1.8V供电;存储单元采用3.3V独立供电,对于一般SDRAM可以采用3.3V,对于移动SDRAM可以采用VDD等于1.8/2.5V,VDDQ等于3.0/3.3V;I/O采用独立3.3V供电[1]。
3 系统硬件平台
利用S3C2410X出色的内核性能和丰富的外部接口构造一个嵌入式系统平台,用于嵌入式无线宽带通信。图3是该系统的硬件框图。
在这个嵌入式硬件平台中,主CPU是SAMSUNG公司的S3C2410X。作为boot的NAND闪存是SAMSUNG公司的SmartMedia卡。根据应用中对于容量的需求可以选用K9S1208VOM,容量为64MB,或者K9D1G08,容量为128MB。
SmartMedia卡为大容量的固态存储提供了相当高的性价比。它按照页进行自动编程,每一页大小为528个字节,编程的典型时间为200μs;擦除则按照块进行,每一块的大小为16K字节,典型的擦除时间为2ms。它在页面中读取单个数据的时间为50ns。SmartMedia卡总共只有22个引脚,8根I/O口线、读写控制线和电源线。I/O口是地址、命令输入和数据输出输入的复用端口。SmartMedia卡还提供了ECC错误纠正码,实现坏区检测以及实时映射,这样它具有高达10万次的编程/擦除周期,数据保存长达10年。S3C2410X专门有NAND闪存的接口,所以在硬件上SmartMedia卡直接与这个接口相连。在这个平台中,SmartMedia卡可以被用作装载操作系统镜像以及大容量的数据存储。
SDRAM被用来运行操作系统以及各类数据的缓存,可采用三星、现代等厂家的产品。这里采用SAMSUNG公司的K4S561632C,它是4M×16bit×4bank的同步DRAM,容量为32MB。用2片K4S561632C,实现位扩展,使数据总线宽度为32bit,总容量为64MB。它的地址空间映射在S3C2410的bank6。
NOR FLASH采用AMD公司的AM29LV800B,容量为1MB。其工作电压可在2.7V到3.6V之间,访问时间为70ns,可以作为boot ROM Flash。与其它的Flash不同的是它具有灵活的页面结构,一个16K字节页,2个8K字节页,一个32K字节页和15个64K字节页。至于它的读写和擦除操作与一般的线性闪存没有区别。在这里AMD闪存主要用于前期的调试和操作系统的下载。
因为S3C2410X本身没有PCMCIA接口,所以为了连接PCMCIA接口的无线网卡,必须采用一个专用的芯片作为转接。在这里,采用Intel公司生产的ISA-TO-PC-Card控制器——PD6710。PD6710能够控制一个PC-Card插槽,兼容PC卡标准、PCMCIA2.1和JEIDA4.1。PD6710采用有效功率和混合电压技术减少系统的功耗,同时该芯片具有软控制挂起模式和硬件超级挂起模式实现低功耗的控制。该芯片采用82365SL兼容的寄存器组,具有5个可编程的存储区和两个可编程的I/O区。PD6710与S3C2410X连接端采用8位或16位的类ISA系统总线(这里采用16位的系统总线),与无线网卡连接端采用8位或16位PC卡总线接口。无线网卡是802.11b标准,这个标准应用最广泛,而且各大公司的产品都提供了现成的驱动程序。随着USB接口的广泛应用,市场上已有USB接口的无线网卡,S3C2410X集成了USB主机接口,可与USB接口的无线网卡直接相连。如果想使用CF卡接口的无线网卡,只需找一个CF-PCMCIA适配器就能完成转接。
在这个平台里,采用CS8900网卡芯片实现与以太网的连接,FPGA采用Xilinx公司的SpartanXL系列产品,根据功能要求可以选用XCS40XL型号,使可用门数目高达40K。利用SpartanXL系列器件里的RAM可以实现高速的FIFO或者利用其灵活的可编程性,可以作为这个平台与外部其他功能模块的通用接口。例如需要进行多媒体数据的处理时,可以外加一个DSP来完成,这样S3C2410X就可以通过FPGA实现高速FIFO与DSP的数据交换。
至于人机接口方面的设计,笔者使用SAMSUNG公司的3.5英寸TFT LCD,并带有触摸屏。输入则采用PDA常用的软键盘。
4 软件平台及系统开发
S3C2410X集成了内存管理单元,因此能够嵌入多种主流操作系统,包括Windows CE、Linux、VxWorks等。在这个系统中,选用Windows CE嵌入式操作系统。对于已经熟悉Windows环境的应用程序开发者来说,Windows CE提供了友好熟悉的开发环境,如Microsoft Win32 API、ActiveX控件、消息队列、COM接口、ATL和MFC,而且有很多Windows成功的程序可以移植到Windows CE中去,大大提高了开发的效率。Windows CE嵌入式操作系统能够给用户提供熟悉和操作方便的GUI。
WinCE开发平台由两部分组成:Platform Builder和软件开发包SDK(Embedded Visual C++和Embedded Visual Basic)。Platform Builder用来定制操作系统,SDK则用来开发应用程序。整个Windows CE系统由三部分组成:应用程序、WinCE各个部件和OEM层。OEM层接口又包括OEM适配层、本地驱动和流接口驱动。定制操作系统的步骤如下:(1)编写板基支持包BSP(包括OEM适配层OAL和硬件驱动);(2)裁减和配置操作系统的各个部件,并修改相应的配置文件;(3)编译Kernal、组件和BSP,生成操作系统镜像文件;(4)将镜像文件下载到目标设备上,进行调试。定制完操作系统后,在Platform Builder里导出SDK,就可以在Embedded Visual C++或Embedded Visual Basic环境下针对平台开发应用程序[2]。
操作系统定制完后,就要将它下载到目标设备上。常用的方法有以下几种:通过JTAG接口下载、EBOOT下载、USB下载、串口下载。后面三种下载方法都要先通过JTAG接口将相应的监控程序下载到Flash中,然后CPU从Flash启动。因为S3C2410X集成了一个从USB接口,因此在没有以太网的情况下,通过USB下载特别方便,而且下载速度远远大于串口下载。在实际的系统开发中,利用JTAG调试器将USB监控程序编程到AMD 闪存,然后让S3C2410X从AMD 闪存boot。主机运行SAMSUNG公司提供的DNW程序,利用串口进行信息交互,通过USB将BootLoader和操作系统镜像下载到SDRAM中,然后通过USB下载一个NAND闪存的写程序到SDRAM并运行,将SDRAM中的BootLoader和操作系统镜像写到SmartMedia卡中。下载完毕后,改变boot方法,让S3C2410X从SmartMedia卡开始boot,操作系统即能在平台中运行起来了。
一旦操作系统装载完后,就可以通过Microsoft ActiveSync安装无线网卡的驱动程序和相应的应用程序了。为了避免掉电后重新安装无线网卡驱动程序,可以将驱动程序直接打包在操作系统中。为了避免每次开机时IP地址的重新设置,利用块设备进行永久注册表存储。在具体实现中,WinCE提供RegCopyFile函数保存注册表信息和RegRestoreFile函数加载注册表信息。如果在一个无线宽带网络中,存在一个DHCP服务器,那么这个嵌入式系统可以通过DHCP动态获得IP地址,解决了在没有人机接口的情况下设置IP地址的问题。因为WinCE集成了TCP/IP协议,所以直接利用操作系统所提供的Socket接口开发各类无线网络应用程序[3]。
5 应用
基于S3C2410X的无线宽带通信模块可被广泛地应用到WLAN网络中的各类移动终端,实现数据和多媒体的传输。图4为该模块在WLAN中应用示意图。AP为无线接入点,MT为基于S3C2410X的现场无线通信移动终端,它们之间通过802.11b协议进行无线通信。DS为分布式系统,AP通过它进行通信。一般AP与有线网络相连,这样MT不仅可以相互通信,而且还能与有线网络实现数据传输。
这个嵌入式模块集成丰富的接口,不仅可以实现有线网络和无线网络的无缝连接,而且如果附加一个CCD摄像头和一个DSP处理模块就可以实现图像的无线监控。目前,该模块已经在现场总线无线通信中得到了应用。