目录
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编译即可
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源码获取
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
1.源码获取 http://www.infradead.org/~tgr/libnl/
2.解压
- tar -xvf libnl-3.2.25.tar.gz
- cd libnl-3.2.25/
-
3.创建_install文件夹并安装依赖工具
-
- mkdir _install
- sudo apt-get install bison
- sudo apt-get install flex
4.生成Makefile
./configure CC=arm-linux-gcc --prefix=$(pwd)/_install --host=arm-linux
5.make && make install
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.修改源码src/crypto/random.c文件中的 /dev/random修改为/dev/urandom
7.编译
make CC=arm-linux-gcc
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密码
直接用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查看连接的设备
