您好,  [请登录] [QQ登录]  [支付宝登录[免费注册]

商品分类

分享到: 百度搜藏 搜狐微博 新浪微博 腾讯微博 QQ收藏 人人网 Facebook Twitter

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

发布日期:2011-04-22


  构成有线网络的传输媒介紧张依赖铜缆或光缆;但有线网络在某些场合要受到布线的限定,分外是当要把相隔较远的节点连接起来时,敷设专用通讯线路的布线施工难度大、用度高、耗时长,对正在敏捷扩大的连网需求形成了瓶颈。
  无线局域网的出现降服了上述缺点,因此无线局域网生长比较敏捷。基于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)控制网络中的应用。