无线网卡的软件实现结构图如图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无线网卡,大大增强了嵌入式系统网络接入能力,使其更具有竞争力。