因为项目工作须要,要在天嵌E9平台下实现wifi的点对点,点对多点的传输。
Wifi 模块芯片:雷凌3070芯片
嵌入式平台:E9(ARM)
交叉编译环境:arm-none-linux-gnueabi
1 首先下载了wifi模块的驱动 2011_0719_RT3070_RT3370_RT5370_RT5372_RT2070_Linux_STA_V2.5.0.3_DPO
2 对驱动进行交叉编译
a 打开驱动文件解压后的文件,假设须要WPA等功能,可打开./os/linux/config.mk进行编。假设不须要直接进入b步
b 打开驱动文件根文件夹下的Makefile进行改动。首先CHIPSET 改为3070
然后对交叉编译环境进行配置。默认的PLATFORM = PC。我们对PC那块代码进行修改,修改后例如以下
ifeq ($(PLATFORM),PC) # Linux 2.6 LINUX_SRC = /opt/E9_CD/Linux/linux_E9_3.0.35_for_Linux # Linux 2.4 Change to your local setting #LINUX_SRC = /usr/src/linux-2.4 LINUX_SRC_MODULE = /opt/E9_CD/Linux/linux_E9_3.0.35_for_Linux/drivers/net/wireless/ CROSS_COMPILE = /opt/Embedsky/gcc-4.6.2-glibc-2.13-linaro-multilib-2011.12/tq-linaro-toolchain/bin/arm-none-linux-gnueabi- endif
保存后进行sudo make
当中 linux_E9_3.0.35为linux内核的源代码所在文件夹
3 编译成功后将根文件夹下的RT2870STA.dat和./os/linux/文件夹下的rt30870.sta.ko拷贝进板子中
mkdir –p /etc/Wireless/RT2870STA/ cp RT2870STA.dat / etc/Wireless/RT2870STA/ cp rt3070sta.ko /usr
4 载入驱动
insmod /usr/rt3070sta.ko
5 然后能够通过ifconfig -a 能够看到系统已经正确识别网卡。名称为ra0
6 启动网卡 ifconfig ra0 up 看到有数据输出。成功移植
---------------------------------------------------------------------------------------------------------------------------------------------------
可能遇到的问题:
1 rtmp_chip.c:470:error: implicit declaration of function ‘RT33xx_Init‘
解决:凝视掉chips文件夹下rtmp_chip.c中第470行的RT33xx_Init(pAd)
2 insmod的时候出问题
解决:一般这里的问题都是板子内核版本号与交叉编译时所用的内核版本号不一致导致,能够uname -a查看板子内核版本号,modinfo rt3070sta.ko查看生成的驱动版本号号,看是否一致。我遇到这个问题攻克了一上午。发现版本号号一个armv5一个armv7,最后是先对linux源代码进行了编译(设置交叉编译环境后,执行所带的build.sh),再编译wifi模块解决的。编译内核的时候。注意设置交叉编译环境。
相关博文推荐:
1 http://blog.chinaunix.net/uid-28599023-id-3483821.html
2 http://www.linuxidc.com/Linux/2011-03/33483.htm
3 http://blog.csdn.net/zhuqing_739/article/details/6259686#