目录
1.RTL8189FTV驱动移植
2.wifi配置工具hostapd移植
1.openssl-1.0.2r交叉编译
2.libnl-3.2.25.tar.gz交叉编译
3.hostapd-2.9.tar.gz交叉编译
4.移植相关工具到开发板
1.RTL8189FTV驱动移植
1. 把驱动文件源码放在linux源码的drivers/net/wireless/realtek/rtlwifi/目录下,并且驱动文件源码目录更名为rtl8189
2.进入drivers/net/wireless/realtek/rtlwifi/rtl8189目录
打开Makefile进行修改,加入下面的话
CONFIG_PLATFORM_NEW = y
ifeq ($(CONFIG_PLATFORM_NEW), y)
EXTRA_CFLAGS += -DCONFIG_LITTLE_ENDIAN
ARCH := arm
CROSS_COMPILE := /usr/local/arm_linux_4.8/bin/arm-linux-
KSRC := /NUC980-linux-4.4.y
MODULE_NAME := wlan
endif
3.进入上级目录drivers/net/wireless/realtek/rtlwifi并打开Makefile
加入
obj-$(CONFIG_RTL8189) += rtl8189/
4.进入drivers/net/wireless/,打开Kconfig
在最下面加入
source "drivers/net/wireless/realtek/rtlwifi/rtl8189/Kconfig"
5.返回linux源码的顶层目录
make menuconfig进行配置
配置80211 ,mmc 以及rtl8189
然后make编译即可
2.wifi配置工具hostapd移植
hostapd是Linux系统上的一个带加密功能的无线接入点(access point : AP)程序。hostapd能够使得无线网卡切换为master模式,模拟AP(路由器)功能,作为AP的认证服务器,负责控制管理stations的接入和认证。hostapd 是用于接入点和身份验证服务器的用户空间守护进程。它实现了IEEE 802.11接入点管理,当前版本支持Linux(Host AP、madwifi、mac80211-based驱动)和FreeBSD(net80211)。
注意:在移植hostapd时必须获取libnl源码和openssl的源码
相关源码获取
hostapd-2.9.tar.gz, wpa_supplicant-2.9.tar.gz http://w1.fi/releases/
libnl-3.2.25.tar.gz http://www.infradead.org/~tgr/libnl/
openssl-1.0.2r https://ftp.openssl.org/source/old/1.0.2/openssl-1.0.2r.tar.gz
1.openssl-1.0.2r交叉编译
1.openssl源码获取
https://ftp.openssl.org/source/old/1.0.2/openssl-1.0.2r.tar.gz
2. 解压openssl,进入openssl目录,并创建_install目录用于获取编译后的库文件和相关头文件
3. 生成Makefile
./config no-asm shared --prefix=$(pwd)/_install
4.修改Makefile
CROSS_COMPILE= arm-linux-
CC= $(CROSS_COMPILE)gcc
CFLAG= -fPIC -DOPENSSL_PIC -DOPENSSL_THREADS -D_REENTRANT -DDSO_DLFCN -DHAVE_DLFCN_H -DL_ENDIAN -O3 -Wall
DEPFLAG= -DOPENSSL_NO_EC_NISTP_64_GCC_128 -DOPENSSL_NO_GMP -DOPENSSL_NO_JPAKE -DOPENSSL_NO_LIBUNBOUND -DOPENSSL_NO_MD2 -DOPENSSL_NO_RC5 -DOPENSSL_NO_RFC3779 -DOPENSSL_NO_SCTP -DOPENSSL_NO_SSL_TRACE -DOPENSSL_NO_SSL2 -DOPENSSL_NO_STORE -DOPENSSL_NO_UNIT_TEST -DOPENSSL_NO_WEAK_SSL_CIPHERS
PEX_LIBS=
EX_LIBS= -ldl
EXE_EXT=
ARFLAGS=
AR= $(CROSS_COMPILE)ar $(ARFLAGS) r
RANLIB= $(CROSS_COMPILE)ranlib
RC= $(CROSS_COMPILE)windres
NM= $(CROSS_COMPILE)nm
PERL= /usr/bin/perl
TAR= tar
TARFLAGS= --no-recursion
MAKEDEPPROG= makedepend
LIBDIR=lib
去掉CFLAG参数中的 -m64 ,SHARED_LDFLAGS参数中的 -m64
5.编译安装
make && make install
2.libnl-3.2.25.tar.gz交叉编译
1.源码获取 http://www.infradead.org/~tgr/libnl/
2.解压
tar -xvf libnl-3.2.25.tar.gz
cd libnl-3.2.25/
mkdir _install
./configure CC=arm-linux-gnueabihf-gcc --prefix=$(pwd)/_install --host=arm-linux-gnueabihf
make
make install
3.创建_install文件夹
mkdir _install
4.生成Makefile
./configure CC=arm-linux-gcc --prefix=$(pwd)/_install --host=arm-linux
5.make && make install
3.hostapd-2.9.tar.gz交叉编译
1.解压文件
tar -xvf hostapd-2.9.tar.gz
2.生成.config文件
cd hostapd-2.9/hostapd
cp defconfig .config
3.修改.config文件
加入以下语句
CFLAGS += -I/home/wpa_tools/libnl-3.2.25/_install/include/libnl3
LIBS += -L/home/wpa_tools/libnl-3.2.25/_install/lib
CFLAGS += -I/home/wpa_tools/openssl-1.0.2r/_install/include/openssl
LIBS += -L/home/wpa_tools/openssl-1.0.2r/_install/lib
4. 修改Makefile
修改此处
5.输出环境变量
export PKG_CONFIG_PATH=/home/wpa_tools/libnl-3.2.25/_install/lib/pkgconfig/
6.编译
make CC=arm-linux-gcc
4.移植相关工具到开发板
1.拷贝libnl相关库到开发板/lib目录下
2.拷贝openssl相关库到/lib目录下
3.移植hostapd相关工具到/sbin目录下 ,移植配置文件到/etc目录下
4.修改配置文件hostap.conf
interface=wlan0
ssid=123456789 //此处为wifi名称
channel=1 //信道
wpa=2 //加密等级
wpa_passphrase=123456789 //wifi密码
3.开启wifi
直接用hostapd工具虽然可打开热点,但是设备无法连接,因为没有为连接热点的设备配置ip,要想自动配置IP就要用到udhcpd工具
使用udhcpd之前必须在/etc下创建udhcpd.conf文件
以下是可直接用的udhcpd.conf文件
start 192.168.175.2
end 192.168.175.254
interface wlan0
max_leases 234
opt router 192.168.175.1
1.加载wifi驱动
insmod wlan0.ko
2.检查wlan0是否存在
ifconfig -a
3.开启 wlan0
ifconfig wlan0 up
4.给wlan0 配置ip地址
ifconfig wlan0 192.168.175.1
5.开启hostapd工具
hostapd /etc/hostapd.conf
6.开启udchpcd为设备分配IP
udhcpd /etc/udhcpd.conf &
7.可以用 cat /proc/net/arp查看连接的设备