微波EDA网,见证研发工程师的成长!
首页 > 通信和网络 > 通信网络技术文库 > 在嵌入式Linux实现802.11b无线网关

在嵌入式Linux实现802.11b无线网关

时间:03-02 来源:C114 点击:

,表明初步的Linux嵌入式系统已经构架成功。最后一类就是使无线网关能够正常工作的。无线网关是以运行脚本命令PCMcia将驱动程序中已编译好的目标文件作为模块加载到系统中而启动的,Linux提供了depmod、insmod、rmmod及其他一些命令来保证适当的模块以正确的顺序加载,所以系统中必须保证存在这些命令,同时无线网关启动时还要读取配置文件。这些配置文件通知无线网关的驱动程序相关参数的设置,所以配置文件所在的目录/ect/pcmcia要保留。有了这些以后,无线网关就能正常启动了。

2.3无线网关功能的实现

如图1所示,无线网关需要完成的最重要的功能就是:与无线节点通信、桥接所有的无线节点、实现无线网络和有线网络的跨网段连接。

\

配置Linux的内核模块,用PCMCIACardService的方式驱动PCMCIA,运行"makemodeules"以及"make

modeules_install"来产生和安装核心模组。由于标准发行的"Linux内核源码中,桥接功能和封包过滤功能(NetFiIi-ter)不能一起正常工作,因此为了要在同一台计算机上同时运行桥接功能和IPtables,需要对核心源码进行修补。相关补丁可以从http://bridge.sourceforge.net/上下载。另外,要获取PCMCIA-CS3.2.1和PRISM2HlostAP的驱动程序包,移植PCMCIA-CS和PRISM2HostAP的驱动程序。完成这一步工作需要具有Linux下编译程序源码的简单知识,主要是交叉编译器(GCC)的使用。编译好的模块*.o文件放在/lib/modules/2.4.4/misc:下,然后用depmod-a使此模块成为可加载模块。模块用insmod命令加载,用rmmod命令卸载,并可以用lsmod命令查看所有已加载的模块的状态。最后,桥接有线网卡和无线网卡,需要Linux下硬件(主要是网卡)配置和网络配置的一些基本知识。

模块搭建完毕后进行桥接功能的构建。解开桥接补丁bridge-utils.tar.gz,编译全部通过并且移植成功后,可以用"ifconfig-a"命令查看所有的网络接口:lo--本地loopback设备;ethO--第一个以太网卡;ethl--第二个以太网卡;wlan0--无线网卡。用"ifconfig<设备>0.O.0.O"命令改变除了lo设备以外所有网络接口的工作方式,以迫使系统进入杂乱模式,可以接收所有数据包。然后,执行"brctladdbrbr0"命令来添加一个名字为br0的桥接设备,再用"bretladdif br0 ethO"和"brctl addif br0wlan0"把无线端和有线端的接口绑定。接着,用"ifeonfigbr0 192.168.2.18 up'’使桥接设备生效。

内核配置时选定GeneraIsetup--->[*]Sysctlsupport,这样才会在板子的文件系统中/proc/sys/net/ipv4/出现ip_forward文件,然后在应用程序中提供ena程序(加到etc/init.d/rcS中一句/bin/ena-e),将ip_for-ward文件中默认的0改为1,这样就打通了数据转发的通道。下面就是要加上iptables,以支持NAT(NetWorkAd-dressTranslation)。从网上下载iptables-1.2.5软件,在iptables-1.2.5目录下执行make,编译通过后,将生成的可执行文件iptables加到ramdisk里面,然后烧写到板子上进行配置即可。

iptables对NAT的支持既需要Linux内核的支持,还需要iptables命令的设置:

①内核编译选项。在内核配置选单中的"Networkingoptions--->"选项下,选中"NetWorkpacketfiltering(replacesipchains)"项,并且在下面的"IP:Netfilter Con-figuration--->"选项中选择全部选项。

②iptables命令支持

#!/bin/bash

#打开端口转发

echo1>/proc/sys/net/ipv4/ip_forward加入转发规则:iptables-t nat - A POS-TROUTING - 0 ethl - j MASOUERADE。

至此,构建无线网关的工作全部完成。

3 测试结果

搭建无线网关的测试系统如图2所示。

\

将上位机的网关设置为172.17.248.169,用VB6.0在上位机上开发一个负责监听网络的应用程序;在无线终端一方编写一个客户端程序,负责客户端数据的发送和接收显示,并在无线终端一方添加从网关到上位机的路由。然后,上位机运行ping命令,测试结果如下:

#ping192.168.6.100

PING192.168.6.100(192.168.6.100):56data bytes

64bytesfrom192.168.6.100:icmp_seq=0 ttl=255 time=1.8 ms

64bytesfrom192.168.6.100:icmp_seq=1 ttl=255 time=1.4 ms

64bytesfrom192.168.6.100:icmp_seq=2 ttl=255 time=1.4 ms

64bytesfrom192.168.6.100:icmp_seq=3 ttl=255 time=1.4 ms

---192.168.6.100pingstatistics---4packets transmitted,4 packets received,0% packet loss round-trip min/avg/max=1.4/1.5/1.8 ms上位机与无线终端通信的测试结果如图3所示。

结语

至此,嵌入式Linux系统上802

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top