新闻中心

EEPW首页 > 手机与无线通信 > 设计应用 > 基于ARM的Ad Hoc网络平台的实现

基于ARM的Ad Hoc网络平台的实现

作者: 时间:2011-08-29 来源:网络 收藏
无线网卡驱动的移植

本文引用地址:https://www.eepw.com.cn/article/155828.htm

  本文使用华硕USB无线网卡WL-167g,其网卡驱动是rt73。

  移植步骤如下:

  a、下载RT73_Linux_STA_Drv1.0.4.0.tar.gz,解压后生成Module和WPA_Supplicant两个目录,将目录Module中的所有文件都拷贝到内核源码包drivers/usb/net/rt73下,修改Makefile如下编译选项:

  KDIR := path/linux-2.6.18

  path为内核源码包所在路径。

  b、由于要在内核源码包里进行交叉编译,所以修改linux-2.6.18 /drivers/usb/net/Kconfig,加入以下内容:

  config RT73

  tristate“support for rt73 wireless usb device”

  depends on USB NET USB_USBNET

  c、修改drivers/usb/net/Makefile,加入rt73的编译项:

  obj-$(CONFIG_RT73)+= rt73

  d、对内核重新进行配置,

  将配置界面中新增的“support for rt73 wireless usb device”选为模块。

  e、make modules

  在drivers/usb/net/rt73目录下生成rt73.ko驱动文件,将rt73.ko放到根文件系统中,再烧写到板上无线网卡即可正常工作。

  f、无线网卡的配置

  无线网卡有managed、-hoc两种模式。managed模式称为基础设施模式,又称接入点模式;-hoc模式称为点对点模式或无中心模式,用来在无线网卡之间进行一跳通信。 网络就是在Ad-hoc模式基础上通过网络协议使得该网络支持多跳通信,因此该模式的使用和性能对Ad 网络的影响至关重要,以下是Ad-hoc模式配置方法,rausb0表示无线网卡:

  1)、ifconfig rausb0 10.0.1.1 up

  设置节点IP为10.0.1.1。

  2)、iwpriv rausb0 set AdhocOfdm=2

  设置rausb0为11g only模式,即54M速率模式,这是802.11g所能支持的最高速率。

  3)、iwconfig rausb0 channel 3

  设置信道为3。

  4)、iwconfig rausb0 mode ad-hoc essid bcnl

  设置网卡模式为ad-hoc,essid为“bcnl”。

  上述配置过程中使用的“iw”开头的命令都是无线工具集中的命令,其源码包是wireless_tools.29.tar.gz,经过交叉编译后即可使用。

  AODV路由协议的移植

  本文使用的代码是aodv-uu-0.9.5.tar.gz。AODV分为两个部分,一个是内核态模块kaodv.ko,一个是用户态模块aodvd。AODV主要部分工作在用户态,用于维护内核路由表。

  AODV需要内核支持,在内核配置时要选上netfilter选项。先编译内核态模块kaodv.ko,步骤如下:

  a、将aodv-uu-0.9.5/lnx目录的内容拷到内核源码包linux-2.6.18/net/ipv4/kaodv目录下,修改linux-2.6.18/net/ipv4/Kconfig,添加如下内容:

  config KAODV_UU

  tristate support for aodv-uu adhoc routing protocol

  b、在linux-2.6.18/net/ipv4/Makefile末尾添加如下的编译选项:

  obj-$(CONFIG_KAODV_UU) += kaodv/

  c、make menuconfig,找到如下的目录项:

  Networking --->

  [*] Networking support Networking options --->

  support for aodv-uu adhoc routing protocol选为模块编译。

  d、make modules将生成kaodv.ko。以下介绍用户态aodvd编译:

  将aodv-uu-0.9.5/Makefile做适当修改,使其在交叉编译的环境下只编译用户态部分。

  将得到的kaodv.ko和aodvd拷贝到根文件系统中,再烧写到板上。

  insmod kaodv.ko

  ./ aodvd

  这样aodv协议就运行起来了。在协议移植中有两点需要注意:一是Makefile中_CCFLAGS=-mbig-endian应该注释掉,否则运行时会产生大小端混乱的问题;二是将kaodv.ko和aodvd分开编译,因为同时编译时总是提示编译器缺少文件,甚至用其他交叉编译器依然不能解决问题,而这些错误大多是编译内核模块产生的。



评论


相关推荐

技术专区

关闭