您的位置:首页 > 运维架构 > Linux

在海思3511上面实现wifi模块变成ap站点功能+wifi rt3070驱动的移植

2014-07-13 20:37 330 查看
参照了网上的无数博客,结合自己的开发板,终于在海思3511开发板上面实现wifi模块变ap站的功能。首先开发板里面没有支持ap功能的驱动,这个就需要手工移植。整体的步骤都大同小异,主要是平台的差异,导致移植时候出现的微小差异。

下载源码:2010_0203_RT3070_SoftAP_v2.4.0.1_DPA.bz2

放到虚拟机里面,解压缩之后进入目录:发现有三个文件夹 MOUDLE 
NETIFUTIL这三个文件夹里面都有makefile文件,在三个文件的对应的os/linux目录下有config.mk文件,驱动移植做主要的工作是修改这6个文件

下面是Makefile的修改的地方  +代表增添行 #代表删除行
#PLATFORM = PC(注释掉)

PLATFORM =IXP(平台选择,网上说
可以随便选,关键是和改动对应源码和交叉编译器相一致,我选的是IXP

找到

ifeq($(PLATFORM),IXP)   

LINUX_SRC =/home/cys/haisi_soft/Hi3511_VSSDK_V1.1.2.3/pub/kbuild-FULL_REL

CROSS_COMPILE =/opt/hisi-linux/x86-arm/gcc-3.4.3-uClibc-0.9.28/usr/bin/arm-hismall-linux-

endif
这里的linux_src与自己的开发板源码对应 一致

          cross_compile即为对应的交叉编译器
修改config.mk配置文件-这个修改步骤很简单,但是要很小心,这里体现出平台的差异

改动1.

ifeq ($(PLATFORM),IXP)

#WFLAGS += -DRT_BIG_ENDIAN

endif

我做的改动是注释掉WFLAGS  arm不支持大端模式

改动2.

原来的样子

ifeq ($(PLATFORM),IXP)

   CFLAGS := -v -D__KERNEL__ -DMODULE-I$(LINUX_SRC)/include -I$(RT28xx_DIR)/include
-mbig-endian -Wall -Wstrict-prototypes-Wno-trigraphs -O2 -fno-strict-aliasing -fno-common -Uarm-fno-common -pipe -mapcs-32 -D__LINUX_ARM_ARCH__=5 -mcpu=xscale-mtune=xscale
-malignment-traps-msoft-float $(WFLAGS)

       EXTRA_CFLAGS := -v $(WFLAGS) -I$(RT28xx_DIR)/include
-mbig-endian

    exportCFLAGS       

endif

改为:

ifeq ($(PLATFORM),IXP)

   EXTRA_CFLAGS := -v -D__KERNEL__ -DMODULE-I$(LINUX_SRC)/include -I$(RT28xx_DIR)/include -Wall-Wstrict-prototypes -Wno-trigraphs -O2 -fno-strict-aliasing-fno-common -Uarm -fno-common -pipe -mapcs-32-D__LINUX_ARM_ARCH__=5
-mcpu=xscale -mtune=xscale -msoft-float $(WFLAGS)

       EXTRA_CFLAGS := -v $(WFLAGS) -I$(RT28xx_DIR)/include

    exportCFLAGS       

endif

蓝色标记的地方为修改的,CFLAGS 部分的修改据说是makefile版本的不兼容,在有点平台上不要修改,这个在海思平台需要改,修改成EXTRA_CFLAGS。
-mbig-endian这边的修改还是大小端的问题
-malignment-traps这个比较特殊一点,网上有多种修改方法,会去掉不同的选项,但是到底兼容哪些不兼容哪些,依据平台,我个人的经验是在编译的时候会出错,根据错误可以判断出应该把哪个选项去掉,我这个平台是去掉这一项。

其他文件夹里面的两个文件的修改方法一样。最后运行make,也可以到三个目录里面单独make
,当然make往往都会有错,依据错误修改就会解决。
最后编译出来在三个文件夹的os/linux目录下生成对应的.ko文件--rt3070ap.ko,rtutil3070ap.ko,rtnet3070ap.ko 在MOUDLE文件夹下还会有RT2870AP.dat文件
把三个驱动拷贝到开发板某个目录,把.dat文件拷贝到/etc/Wireless/RT2870AP文件夹下面,如果没有就新建一个。
驱动加载的顺序按照:rtutil3070ap.ko rt3070ap.ko rtnet3070ap.ko

加载成功之后,
然后可以通过ifconfig-a查看是否含有ra0网卡,如果有,代表已经加载成功了

可以给开发板赋ip地址

#ifconfig ra0 192.168.1.1 up

执行iwconfig 查看网络   (如果没有可以经过源码包编译移植)

这个默认的名为:RT2860AP的网络就建立起来了。名字等许多参数都是可以修改。

最后结束后 卸载模块先关闭ra0 网卡。

上面已经把默认网关设置为192.168.1.1所以当电脑设备连接这个ap点的时候,要先把wifi的默认网关修改为这个网关才能连接上。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  wifi 源码 linux 移植