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的网络就建立起来了,我们可以通过手机加入此接入点。
对实际的工控设备来说,只要加入此接入点,就可按照标准的socket方式,与其他设备进行数据通讯了。
全部0条评论
快来发表一下你的评论吧 !