参照了网上的无数博客,结合自己的开发板,终于在海思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版本的不兼容,在有点平台上不要修改,这个在海思平台需要改,修改成
下载源码:2010_0203_RT3070_SoftAP_v2.4.0.1_DPA.bz2
放到虚拟机里面,解压缩之后进入目录:发现有三个文件夹 MOUDLE
下面是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
改动1.
ifeq ($(PLATFORM),IXP)
#WFLAGS += -DRT_BIG_ENDIAN
endif
我做的改动是注释掉WFLAGS
改动2.
原来的样子
ifeq ($(PLATFORM),IXP)
endif
改为:
ifeq ($(PLATFORM),IXP)
endif
蓝色标记的地方为修改的,