英创信息技术Linux主板上实现无线AP热点介绍

描述

1、简述

这里先简单介绍下英创公司现有的Linux产品系列,大致分为三个系列的产品:

产品系列 产品型号 CPU 内核版本
  EM9X60   EM9160 / EM9460
  EM9260
  EM9360
  EM9660
  ATMEL AT91SAM9260 (200MHz)   Linux-2.6.30
  EM928x   EM9280
  EM9281
  EM9287
  FreeScale iMX283/iMX287 (454MHz)   Linux-3.9.7
  EM335x   EM335x
  EM3352
  Cortex-A8 AM3354 (1GHz)
  Cortex-A8 AM3352 (600MHz)
  Linux-3.12.10

Wi-Fi无线网络短距离数据传输以其无需布线、数据传输速度快等优势,在工业应用中越来越普及。针对这类的应用我们公司已经在EM9X60、EM928x、EM335X等系列Linux嵌入式板卡板卡上移植了基于rt2870sta、rt3070sta、rt5370sta、rt5572sta的无线网络驱动,并在应用产品的开发中得以应用。

无线网卡rt3070还有一种驱动工作模式为SoftAP,即可以支持无线模块工作在软AP模式下,可以作为一个软接入点。针对这类的应用,我们在公司Linux嵌入式系列板卡上做了相应的移植,实现AP热点功能。

在实际应用中,若设备物理安放位置满足WiFi的信号传输条件,则可利用AP热点功能,方便地实现设备间的数据通讯,代替RS485、CAN等现场总线,大幅度降低系统布线的成本。

本文将介绍 rt3070 SoftAP驱动在EM9281产品上的移植和应用。无线模块选择了目前市面上性价比较高的B-LINK公司的BL-LW05-H模块。

2、rt3070 SoftAP移植

rt3070 SoftAP的移植过程:

1、下载驱动文件:2010_0203_RT3070_SoftAP_v2.4.0.1_DPA.bz2
2、解压后,分别修改MODULE、UTIL、NETIP三个目录下的Makefile 以及os/linux/config.mk文件配置。
LINUX_SRC = /home/hl/em9280/linux-3.9.7
CROSS_COMPILE = arm-none-linux-gnueabi-
3、编译make

编译成功后,将在MODULE、UTIL、NETIP三个目录下分别生成三个可加载模块:rt3070ap.ko、rtutil3070ap.ko、rtnet3070ap.ko,将这三个文件复制到EM9281根文件系统中/lib/modules/3.9.7/下,同时把rt2870ap.dat文件复制到/etc/Wireless/RT2870AP/目录下。

至此rt3070 SoftAP的驱动移植完成。

3、rt3070 AP的应用

Linux嵌入式板卡启动完成后,可通过insmod命令来加载rt3070ap的驱动,这里我们编辑了一个脚本文件来自动加载和配置rt3070 AP的应用,脚本文件ap.sh内容如下:

#!/bin/sh
insmod /lib/modules/3.9.7/rtutil3070ap.ko
insmod /lib/modules/3.9.7/rt3070ap.ko
insmod /lib/modules/3.9.7/rtnet3070ap.ko
ifconfig ra0 up
ifconfig ra0 192.168.1.1
udhcpd /mnt/nandflash/udhcpd.conf

其中的udhcpd.conf用于配置AP接入点可分配的网段ip区域。

[root@EM9280 /]#./mnt/nandflash/ap.sh
[ 24.518019] rtusb init --->
[ 24.527379]
[ 24.527379]
[ 24.527379] === pAd = c8d22000, size = 417992 ===
[ 24.527379]
[ 24.538208] <-- RTMPAllocAdapterBlock, Status=0
[ 24.556368] usbcore: registered new interface driver rt2870
[ 25.105709] <-- RTMPAllocTxRxRingMemory, Status=0
[ 25.114482] -->RTUSBVenderReset
[ 25.117869] <--RTUSBVenderReset
[ 25.688699] Key1Str is Invalid key length(0) or Type(0)
[ 25.694479] Key2Str is Invalid key length(0) or Type(0)
[ 25.700364] Key3Str is Invalid key length(0) or Type(0)
[ 25.706197] Key4Str is Invalid key length(0) or Type(0)
[ 25.721043] 1. Phy Mode = 9
[ 25.723866] 2. Phy Mode = 9
[ 25.726670] NVM is Efuse and its size =2d[2d0-2fc]
[ 25.878998] 3. Phy Mode = 9
[ 25.964389] MCS Set = ff 00 00 00 01
[ 26.022838] SYNC - BBP R4 to 20MHz.l
[ 26.345731] SYNC - BBP R4 to 20MHz.l
[ 26.675462] SYNC - BBP R4 to 20MHz.l
[ 27.005730] SYNC - BBP R4 to 20MHz.l
[ 27.335732] SYNC - BBP R4 to 20MHz.l
[ 27.665994] SYNC - BBP R4 to 20MHz.l
[ 27.995606] SYNC - BBP R4 to 20MHz.l
[ 28.325587] SYNC - BBP R4 to 20MHz.l
[ 29.081255] Main bssid = 48:02:2a:40:2e:c5
[ 29.085390] <==== rt28xx_init, Status=0
[ 29.092623] 0x1300 = 00064320

至此,一个默认网络名为RT2860AP的网络就建立起来了,我们可以通过手机加入此接入点。

Linux

对实际的工控设备来说,只要加入此接入点,就可按照标准的socket方式,与其他设备进行数据通讯了。

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分