基于研华i.mx6平台的无线网络应用开发
作者:彭斯婷 字数:4082 点击:
摘 要:本文主要介绍在以研华Freescale i.mx6处理器为核心的硬件平台和Linux操作系统上,移植EDUP EP-N8508GS无线网卡驱动,并连接上网络,接受其他无线电子设备的访问的开发过程。
关键词: Freescale i.mx6;Linux;EDUP EP-N8508GS;无线网络
Abstract:This article mainly introduces the process of development to transplant EDUP EP-N8508GS driver and build a network for all kinds of electronic equipment to connect, based on the hardware platform with the core freescale i.mx6 processor and Linux operating system.
Key words: Freescale i.mx6;Linux;EDUP EP-N8508GS;Wireless network
1 引言
由于手机、平板和笔记本电脑等便携式设备的应用日渐广泛,用户在专业的工作中,如果可以使用便携式设备查看和分析专业性设备检测数据,生成分析报告,完成工作任务,那样效率会提高不少,并且也减少对昂贵的专业性设备非必要的占用。作为专业性设备的开发人员,在嵌入式设备的开发中,引入无线网络,可以给用户提供一个便捷的访问通道,使产品更加人性化,增加产品的市场竞争力。
本文主要介绍在以研华Freescale i.mx6处理器为核心的硬件平台和Linux操作系统上,移植EDUP EP-N8508GS无线网卡驱动,并连接上网络,接受其他无线电子设备的访问的开发过程。
2 无线网络环境搭建基本思路
要在嵌入式设备上使用无线网络功能,需要以下几步。首先,需要硬件的支持,本项目是以研华Freescale i.mx6为核心的硬件平台,无线网卡采用的是EDUP EP-N8508GS。其次,需要在Linux内核里开启对无线网络的支持。第三,需要加载EDUP EP-N8508GS无线网卡的驱动。第四,启动无线网络,连接路由器。
3 无线网络环境搭建具体实现
3.1 内核开启对无线网络的支持
在硬件已经支持的条件下,要开启对无线网络的支持,首先需要内核的支持。在研华厂家提供的Linux3.0.5内核的默认配置下,还需要额外打开“enable usb wifi”的配置,另外在网络和驱动方面需要配置的内容有:
[*] Networking support --->
[*] Wireless --->
cfg80211 - wireless configuration API
[*] Wireless extensions sysfs files
Generic IEEE 802.11 Networking Stack(mac80211)
Device Drivers --->
[*]Network device support --->
[*] Wireless LAN --->
IEEE 802.11 for Host AP (Prism2/2.5/3 andWEP/TKIP/CCMP)
[*] Support downloading firmware images withHost AP driver
[*] Support for non-volatile firmwaredownload
完成以上配置之后,,重新编译内核后,将新内核烧写进开发板即可。
3.2 移植EDUP EP-N8508GS无线网卡驱动
目前,市场上的无线网卡的厂家一般都会提供驱动的源码。但是由于嵌入式系统的环境、编译器和Linux内核版本等各有不同,作为开发人员,我们还需要将源码编译成能在自己开发的系统上跑的驱动。EDUP EP-N8508GS无线网卡驱动移植大致需要以下几步。[1]
第一,下载realtek_rtl8192_1024驱动源码并解压缩。
第二,修改Makefile文件,使其适用于i.mx6核心板和Linux3.0.5内核。在Makefile文件中需要增加如下内容:
CONFIG_PLATFORM_IMAX6 = y
ifeq ($(CONFIG_PLATFORM_IMAX6), y)
EXTRA_CFLAGS += -DCONFIG_LITTLE_ENDIAN
ARCH := arm
KVER := 3.0.35
KSRC := /home/stndt/Desktop/7420LBV1170/source/linux-3.0.35
CROSS_COMPILE:=/home/stndt/Desktop/7420LBV1170/cross_compiler/fsl-linaro-toolc hain/bin/arm-none-linux-gnueabi-
endif
第三,编译驱动。
第四,将生成的“8192cu.ko”通过网络文件系统拷贝到开发板上/usr目录下,insmod usr/8192cu.ko,然后通过ifconfig -a便可以看到网络设备里增加了wlan0这一项。
3.3 wpa_supplicant工具的移植
直到3.2,无线网络已经启动了。要使其他电子设备能连接到这个无线网络,还需要将它连接到路由器上,这就需要用到wpa_supplicant工具。wpa_supplicant工具的移植步骤主要包括以下几步。
第一,下载wpa_supplicant-0.6.10.tar.gz和openssl-0.9.8e.tar.gz工具包源码并解压缩;
第二,将wpa_supplicant中的补丁拷贝到openssl中,修改MakeFile如下,使其适合i.mx6+Linux3.0.5平台,然后make,make install,此时,ssl库已经安装在虚拟机的/usr/local/ssl目录下了。
CC=/home/stndt/Desktop/7420LBV1170/cross_compiler/fsl-linaro-toolchain/bin/arm-none- linux-gnueabi-gcc
AR=/home/stndt/Desktop/7420LBV1170/cross_compiler/fsl-linaro-toolchain/bin/arm-none- linux-gnueabi-ar $(ARFLAGS) r
RANLIB=/home/stndt/Desktop/7420LBV1170/cross_compiler/fsl-linaro-toolchain/bin/arm-n one-linux-gnueabi-ranlib
INSTALLTOP=/usr/local/ssl
OPENSSLDIR=/usr/local/ssl
第三,编译wpa_supplicant。修改.config文件如下,并编译wpa_supplicant源代码。
CC=/home/stndt/Desktop/7420LBV1170/cross_compiler/fsl-linaro-toolchain/bin/arm-n one- linux-gnueabi-gcc -L/usr/local/ssl/lib/
CFLAGS += -I/usr/local/ssl/include/
LIBS += -L/usr/local/ssl/lib/
第四,通过第三步后即可看到wpa_supplicant和wpa_cli两个可执行工具。其中,wpa_supplicant是核心程序,它和wpa_cli的关系就是服务和客户端的关系:后台运行wpa_supplicant,使用wpa_cli来搜索、设置、和连接网络。将wpa_supplicant和wpa_cli通过网络文件系统拷贝到开发板的/sbin目录下。将wpa_supplicant.conf文件拷贝到/etc,根据需要修改文件,增加已知路由器的参数,然后在开发板上执行如下内容,即可以看到wlan0的IP,此时,开发板已经通过无线网络连接到路由器上了。
#wpa_supplicant -B -iwlan0 -c /etc/wpa_supplicant.conf –Dwext &
#dhclient wlan0
#ifconfig -a
4 应用情景
在实际的应用中,由于专业的仪器身处的环境不同,可能需要连接不同的路由器,而客户不可能像开发人员一样手动去系统里面修改配置文件,因此真正要在实际工作上应用无线网络功能,还需要在设备的应用软件上开发网络设置功能,使用户可以通过人性化的UI来选择要连接的路由器,输入路由器密码,以及在设备软件上开启网络服务,随时接收来自其他电子设备的网络数据需求。这样,一个完整的无线网络服务器才算真正地完成。而作为专业仪器厂家,还需要开发在各类电子设备上的应用软件,如Windows应用软件、基于安卓系统的移动设备上使用的App等作为客户端来访问仪器。
5 结束语
无线网络通信的普及,给各行各业的工作带来了便捷。usb无线网卡在专业性设备上的应用,使专业性仪器可以便捷地连接到网络上,为各职能的客户使用和访问仪器提供便捷,减少客户对专业性仪器在数量上的需求,提高专业设备的复用性,增加产品的竞争力。作为仪器的开发人员,应该多站在客户的角度上思考,把先进的技术,融入到传统的专业性的设备上,开发出更加人性化的产品。
参考文献
[1]韦东山,嵌入式Linux应用开发完全手册 人民邮电出版社,2008,08.