作者:吴永康,张东,杨承照
目前,嵌入式技术已广泛应用于工业控制、消费类电子产品、通信系统等各类市场产品。并且随着互联网的日益发达,具有无线接入功能的嵌入式系统更加具有发展前景。本文将介绍支持IEEE 802.11g协议的54M USB无线网卡在嵌入式系统上的应用,嵌入式系统使用了ARM9系列的S3C2410处理器。
1 系统硬件体系结构
1.1 系统结构
系统总体结构如图1所示。
系统核心芯片采用三星公司的S3C2410处理器,该处理器是三星公司的一款基于 ARM920T内核的16/32位RISC嵌入式微处理器,主要面向手持设备以及高性价比,低功耗的应用,运行的频率可以达到203MHz。该处理器集成了很多重要的功能模块,并且支持多种总线。处理器集成了USB HOST控制器,并支持两个USB HOST通讯端口。
系统使用64M NAND FLASH作为仔储器,存储了系统软件部分必需的BOOTLOADER、LINUXKERNEL、FILESYSTEM。系统中的串口、 USBDEVICE接口、JTAG接口主要在开发调试时使用。系统通过TOUCH&LCD进行人机信息交换,满足广大消费类电子产品的需求。
无线网卡是这个移动终端的关键设备,鉴于市面上大部分的llM无线网卡已经停产或者即将停产,以及社会对具有更高网络接入性能的嵌入式设备的需求,我们选择芯片组型号为rt2573的54M无线网卡。由于S3C2410处理器已经集成了USB HOST控制器,所以不需要附加额外的芯片,网卡可以直接通过USBHOST PORT接入,非常方便。
1.2 USB主机接口的硬件实现
在USB系统中,各种USB设备要与主机相连,就必须通过一个共同的接口接入丰机。这个接口就是USB丰机控制器(USB Host Controller)。USB总线协议定义了四条信号线,其中两条信号线负责供电,而另外两条信号线负责数据的传输。USB通信模型是一种Host- Slave(主机——外设)主从式结构,因此经由USB总线进行通信的双方必有一方在通信控制中担当主机(HOST)的角色。
USB接口可从主机上获得500mA的电流,并且支持热插拔,真正做到即插即用。一个USB接口可同时支持高速和低速USB外设的访问,有一条4芯电缆连接,其中2条是正负电源,传送的是5V的电源,2条是数据传输线,数据线是单工的,在整个的一个系统中的数据速率是一定的,或者是高速,或者是低速。
S3C2410处理器内部集成了USB HOST控制器,可以直接从CPU引线出来,而不需要添加额外的控制芯片,图2为系统的USB HOST接口扩展。S3C2410处理器可以支持两个USB HOST通信端口。
2 USB网卡无线网络功能的实现
2.1 无线网卡的软件管理层实现
嵌入式系统硬件部分建立好后,需要建立软件系统。本系统中采用了vivi做为BOOTLOADER(引导启动程序),嵌入式Linux作为操作系统,以Cramfs作为主文件系统,为支持可读写功能还添加了Jffs2文件系统。 接着,需要软件上实现无线网卡的功能。
无线网卡的软件包括无线网卡固件(Firmware)、无线网卡驱动程序(Driver)和无线网卡配置管理程序三部分。
无线网卡的软件实现结构图如图3所示。固件是无线网卡上最基本的控制系统,主要基于MAC芯片来实现对整个网卡的控制和管理,并向下提供与物理层的接口,向上提供一个程序开发接口,为程序开发附加的移动主机应用程序提供支持。在嵌入式系统中,IEEE802.11提供的服务,包括认证、解除认证、登录、重登录等均由固件完成。
无线网卡的驱动程序使用固件提供的软件编程接口,对无线网卡进行控制,配合固件完成数据的收发以及对信息帧的处理。无线网卡驱动程序主要是针对相应的无线网卡芯片进行设计的,不同的芯片,它们的固件和寄存器相关设置存在很大的差异。除了要完成对下层的控制外,无线网卡驱动还要向上层应用程序和管理程序提供操作和配置无线网卡的应用程序编程接口,以实现其网络传输功能。
所有的Linux网络驱动程序遵循通用的接口。设计时采用的是面向对象的方法。一个设备就是一个对象(device结构),它内部有自己的数据和方法。每一个设备的方法被调用时的第一个参数都是这个设备对象本身,这样这个方法就可以存取自身的数据(类似面向对象程序设计时的this引用)。一个网络设备最基本的方法有初始化、发送和接收。如图4所示。
初始化程序完成硬件的初始化,device中变量的初始化和系统资源的申请,发送程序是在驱动程序的上层协议层有数据要发送时自动调用的。一般驱动程序中不对发送数据进行缓存,直接使用硬件的发送功能把数据发送出去。接收数据一般是通过硬件中断来通知的。在中断处理程序里,把硬件帧信息填入一个 skbuff结构中,然后调用 netif_rx()传递给上层处理。
本系统的无线网卡驱动接口主要实现了以下接口函数:
无线网卡配置管理程序利用驱动程序提供的信息查询和设置接口,向用户实时提供无线网卡的状态,同时利用该管理软什可以实现对IP、 SSID等无线刚卡参数进行必要的配置。常见的无线网卡配置管理程序有iwconfig、iwlistt、iwspy、iwpriv等。这里介绍几个主要的无线网卡配置管理程序:
·Iwconfig:主要的无线管理工具,用来查看设备配置以及大部分的无线刚络参数。
·Iwlish:用来查看大部分iwconfig工具不能显示的参数,如:比特率,频率等。
·Impriv:操作无线网卡驱动程序提供的特有的管理控制功能。
·Iwgetid:输出指定设备的ESSID或NWID。
2.2 无线网卡的配置和激活使用
要完成无线网卡的配置和激活使用,首先,应设置配置文件和编译驱动程序,生成无线网卡的固件和驱动程序模块。把固件和配置文什放到文件系统的/etc/Wireless/RT73STA/文件夹上。
Rt73sta.dat的主要配置如下:
·NetworkType=Infra/*由于选择AP接入模式,网络类型选择Infra*/
·SSID=TPLINK/* SSID/ESSID(Service SetIdentifier)是“服务区标识符匹配”、“业务组标识符”的简称,最多可以有32个字符。它就好比有线局域网中的“工作组”标识一样或好比是无线客户端与无线路由器之间的一道口令一样,只有在完仝相同的前提下才能让无线网卡访问无线路由器,这也是保证无线网络安全的重要措施之一。这里设置为你的AP 上的SSID就可以。*/
·WirelessMode=0/*数字0表示选择同时支持11b/g协议。*/
·TxRate=12/*数字12表示选择54M的传输速度。*/
除通过修改配置文件外,大部分的参数可以通过iwconfig工具直接设定。至此,可以通过ifconfig来启动无线网卡了。Ifconfig usb0 192.168.100.99 up。启动后可以通过ping命令查看网络连接状态。
详细介绍了实现基于S3C2410处理器的嵌入式Linux系统无线接入网络功能的扩展方法,对硬件和软件的实现进行了详细的描述。无线接入功能的实现使得嵌入式系统在网络应用高速发展的电子消费世界有着广阔的发展空间和应用前景。系统采用54MBPS无线网卡,大大增强了嵌入式系统网络接入能力,使其更具有竞争力。