由于项目工作需要,要在天嵌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
3 编译成功后将根目录下的RT2870STA.dat和./os/linux/目录下的rt30870.sta.ko拷贝进板子中
mkdir –p /etc/Wireless/RT2870STA/ cp RT2870STA.dat / etc/Wireless/RT2870STA/ cp rt3070sta.ko /usr
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#