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

2007-03-09 19:03:27来源: 互联网
构成有线网络的传输媒介主要依赖铜缆或光缆;但有线网络在某些场合要受到布线的限制,特别是当要把相隔较远的节点连接起来时,敷设专用通信线路的布线施工难度大、费用高、耗时长,对正在迅速扩大的连网需求形成了瓶颈。无线局域网的出现克服了上述缺点,因此无线局域网发展比较迅速。基于802.11b的产品已成为应用主流。这些产品使用的是2.4 GHz频段,能够在短距离内实现11 Mb/s的接入速率,每个接入点可以同时支持多个用户的接入。而无线网关作为连接无线终端与有线网络之间的桥梁,是构成无限局域网的重要组成部分。作者重点要探讨的就是如何在嵌入式Linux系统上实现无线网关的功能。 1 嵌入式Linux的基本原理 嵌入式系统是以应用为中心,以计算机技术为基础,软件硬件可裁减,适于应用系统对功能、可靠性、成本、体积、功耗严格要求的专用计算机系统。嵌入式系统由于硬件的先天限制,只具有极稀少的硬件资源,通常不具有磁盘而用小容量的Disk on Chip或Disk on Module等来代替。 Linux作为嵌入式操作系统是完全可行的。它能处理嵌入式任务和用户界面;将Linux看作是连续的统一体,从一个具有内存管理、任务切换和时间服务及其他的分拆的微内核到完整的服务器,支持所有的文件系统和网络服务。Linux作为嵌入式系统,对许多CPU和硬件平台具有易移植、稳定、功能强大、易开发的优点。Linux作为一种可裁减的软件操作系统,是发展未来嵌入式设备的绝佳资源。因为Linux的源代码公开,易于定制,提供完成嵌入式功能的基本内核和所需要的用户界面。 一个小型的嵌入式Linux系统需要三个基本要素:引导工具、Linux微内核(内存管理、进程管理和事务处理)和初始化进程。如果要它成为完整的操作系统且继续保持小型化,还得加上硬件驱动程序、文件系统以及提供所需功能的一个或多个应用程序。 2 802.11b无线网关在嵌入式Linux上的实现 由于Linux开始是为台式机开发的,加上嵌入式系统硬件资源固有的一些限制,因此,要实现无线网关在嵌入式Linux系统上的应用,就需要对Linux系统进行特别定制,删除无线网关不需要的部分,真正做到精简系统,减少成本的目的。 2.1 精简内核 Linux内核是可以根据特定的要求进行定制的,我们使用的是2.4.4的内核。在/usr/src/Linux目录下,使用make menuconfig,去掉内核对floppy、cdrom的支持选项;Second extended fs(ext2)是实际上的Linux文件系统的标准,所以除了此项,把对其他所有filesystem的支持去掉;去掉内核对sound的支持;去掉所有的字符设备(char-acter device)等。 在去除的同时,要根据AP应用软件及一些特定功能的要求,在内核中留下对需要的驱动的支持,具体的有:①无线网关连接无线网络与有线网络,因此要保留对网络的支持(network support),保留对TCP/IP stack的支持,保留对以太网卡如嵌入式最常用的R18139驱动的支持,并且要在内核中设置模块项;②嵌入式系统如果使用的是Disk On Chip,则内核中还要选中对它的支持:M-sys-tems drivers;③在内核中保留对特定功能的支持,如要使用PPP(点对点协议),则编译的内核必须包含对PPP的支持。 配置完成后,重新编译内核,然后修改Linux系统引导器lilo的配置文件并最后以新编译的核作为启动内核。重启计算机,若运行一切正常,则精简内核的工作就完成了。 2.2 缩小Linux文件系统 嵌入式Linux本身是一种操作系统。它的主要任务是管理计算机上的系统资源,为用户提供使用计算机及其外部设备的接口。它存在的目的是为了管理所有的硬件资源,并且提供给应用软件一个合适的操作环境,因此在对嵌入式Linux系统进行大幅度删除、缩小的同时也要保留一些基本的命令和目录。 这些保留的命令和目录大体可以分为三类。一类是Linux系统启动所需要的。这类重要的文件有init、getty等,重要的目录与文件有/etc/rc.d、/etc/inittab等;在启动时还会调用目录/bin及/sbin下的一些命令,若已删除,可以根据启动时的出错信息进行添加。第二类是用于完成一些系统基本功能的保留命令和目录,最简单的如拷贝命令cp,进入和跳出目录的命令cd,列举目录下内容的命令ls等,这些命令完成操作系统最基本的功能。另一些命令需要与特定的配置文件或是存放配置文件的目录相对应,完成相对特殊的功能。当然,具体要实现什么功能要根据实际来定,并尽可能保留必要的命令与相应的目录或是配置文件,达到在完成功能的情况下尽可能少地占用存储空间。完成上面的裁减工作后,重启。若Linux能够正常启动、运行,表明初步的Linux嵌入式系统已经构架成功。最后一类就是使无线网关能够正常工作的。无线网关是以运行脚本命令pcmcia将驱动程序中已编译好的目标文件作为模块加载到系统中而启动的,Linux提供了depmod、insmod、rmmod及其他一些命令来保证适当的模块以正确的顺序加载,所以系统中必须保证存在这些命令,同时无线网关启动时还要读取配置文件。这些配置文件通知无线网关的驱动程序相关参数的设置,所以配置文件所在的目录/ect/pcmcia要保留。有了这些以后,无线网关就能正常启动了。 2.3 无线网关功能的实现 如图1所示,无线网关需要完成的最重要的功能就是:与无线节点通信、桥接所有的无线节点、实现无线网络和有线网络的跨网段连接。 配置Linux的内核模块,用PCMCIA CardService的方式驱动PCMCIA,运行“make modeules”以及“make modeules_install"来产生和安装核心模组。由于标准发行的“Linux内核源码中,桥接功能和封包过滤功能(NetFiIi—ter)不能一起正常工作,因此为了要在同一台计算机上同时运行桥接功能和IPtables,需要对核心源码进行修补。相关补丁可以从http://bridge.sourceforge.net/上下载。另外,要获取PCMCIA-CS 3.2.1和PRISM2 HlostAP的驱动程序包,移植PCMCIA-CS和PRISM2 HostAP的驱动程序。完成这一步工作需要具有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设备以外所有网络接口的工作方式,以迫使系统进入杂乱模式,可以接收所有数据包。然后,执行“brctl addbr br0”命令来添加一个名字为br0的桥接设备,再用“bretl addif br0 ethO”和“brctl addif br0wlan0"把无线端和有线端的接口绑定。接着,用“ifeonfigbr0 192.168.2.18 up"’使桥接设备生效。 内核配置时选定GeneraI setup--->[*]Sysctlsupport,这样才会在板子的文件系统中/proc/sys/net/ipv4/出现ip_forward文件,然后在应用程序中提供ena程序(加到etc/init.d/rcS中一句/bin/ena-e),将ip_for-ward文件中默认的0改为1,这样就打通了数据转发的通道。下面就是要加上iptables,以支持NAT(NetWork Ad—dress Translation)。从网上下载iptables-1.2.5软件,在iptables-1.2.5目录下执行make,编译通过后,将生成的可执行文件iptables加到ramdisk里面,然后烧写到板子上进行配置即可。 iptables对NAT的支持既需要Linux内核的支持,还需要iptables命令的设置: ①内核编译选项。在内核配置选单中的“Networkingoptions--->"选项下,选中“NetWork packet filtering(replaces ipchains)”项,并且在下面的“IP:Netfilter Con—figuration--->”选项中选择全部选项。 ②iptables命令支持 #!/bin/bash # 打开端口转发 echo 1>/proc/sys/net/ipv4/ip_forward加入转发规则:iptables - t nat - A POS—TROUTING - 0 ethl - j MASOUERADE。 至此,构建无线网关的工作全部完成。 3 测试结果 搭建无线网关的测试系统如图2所示。 将上位机的网关设置为172.17.248.169,用VB 6.0在上位机上开发一个负责监听网络的应用程序;在无线终端一方编写一个客户端程序,负责客户端数据的发送和接收显示,并在无线终端一方添加从网关到上位机的路由。然后,上位机运行ping命令,测试结果如下: # ping 192.168.6.100 PING 192.168.6.100 (192.168.6.100):56 data bytes 64 bytes from 192.168.6.100:icmp_seq=0 ttl=255 time=1.8 ms 64 bytes from 192.168.6.100:icmp_seq=1 ttl=255 time=1.4 ms 64 bytes from 192.168.6.100:icmp_seq=2 ttl=255 time=1.4 ms 64 bytes from 192.168.6.100:icmp_seq=3 ttl=255 time=1.4 ms ---192.168.6.100 ping statistics---4 packets transmitted,4 packets received,0% packet loss round—trip min/avg/max=1.4/1.5/1.8 ms上位机与无线终端通信的测试结果如图3所示。 结 语 至此,嵌入式Linux系统上802.11b无线网关的软件实现工作基本结束。测试结果表明,无线网关的基本功能,即与无线终端通信、桥接无线终端、实现无线网络和有线网络的跨网段连接已经实现。下面将对该无线网关做完善,以便进一步实现该无线网关在EPA(Ethernet for Plant Au-tomation)控制网络中的应用。

关键字:嵌入式linux  实现  无线  无线网关

编辑: 引用地址:http://www.eeworld.com.cn/wltx/RFID/200703/2037.html
本网站转载的所有的文章、图片、音频视频文件等资料的版权归版权所有人所有,本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如果本网所选内容的文章作者及编辑认为其作品不宜公开自由传播,或不应无偿使用,请及时通过电子邮件或电话通知我们,以迅速采取适当措施,避免给双方造成不必要的经济损失。
论坛活动 E手掌握
微信扫一扫加关注
论坛活动 E手掌握
芯片资讯 锐利解读
微信扫一扫加关注
芯片资讯 锐利解读
推荐阅读
全部
嵌入式linux
实现
无线
无线网关

小广播

独家专题更多

富士通铁电随机存储器FRAM主题展馆
富士通铁电随机存储器FRAM主题展馆
馆内包含了 纵览FRAM、独立FRAM存储器专区、FRAM内置LSI专区三大部分内容。 
走,跟Molex一起去看《中国电子消费品趋势》!
走,跟Molex一起去看《中国电子消费品趋势》!
 
带你走进LED王国——Microchip LED应用专题
带你走进LED王国——Microchip LED应用专题
 
电子工程世界版权所有 京ICP证060456号 京ICP备10001474号 电信业务审批[2006]字第258号函 京公海网安备110108001534 Copyright © 2005-2016 EEWORLD.com.cn, Inc. All rights reserved