硬件环境:Samsung s5pv210
软件环境:Linux kernel 2.6.35.7
1、编译生成生成.ko文件
驱动安装包下载地址请点击rtl8723bu wifi驱动
下载完成的驱动包先解压到Windows系统中,然后移动到Ubuntu中,如下图:
编辑Makefile如下:
###################### Platform Related #######################
CONFIG_PLATFORM_I386_PC = n
CONFIG_PLATFORM_ANDROID_X86 = n
CONFIG_PLATFORM_ANDROID_INTEL_X86 = n
CONFIG_PLATFORM_JB_X86 = n
CONFIG_PLATFORM_ARM_S3C2K4 = n
CONFIG_PLATFORM_ARM_PXA2XX = n
CONFIG_PLATFORM_ARM_S3C6K4 = n
#主要增加这一行,加入对s5pv210的支持
CONFIG_PLATFORM_ARM_S5PV210 = y
CONFIG_PLATFORM_MIPS_RMI = n
CONFIG_PLATFORM_RTD2880B = n
CONFIG_PLATFORM_MIPS_AR9132 = n
CONFIG_PLATFORM_RTK_DMP = n
CONFIG_PLATFORM_MIPS_PLM = n
CONFIG_PLATFORM_MSTAR389 = n
CONFIG_PLATFORM_MT53XX = n
CONFIG_PLATFORM_ARM_MX51_241H = n
CONFIG_PLATFORM_FS_MX61 = n
CONFIG_PLATFORM_ACTIONS_ATJ227X = n
CONFIG_PLATFORM_TEGRA3_CARDHU = n
CONFIG_PLATFORM_TEGRA4_DALMORE = n
CONFIG_PLATFORM_ARM_TCC8900 = n
CONFIG_PLATFORM_ARM_TCC8920 = n
CONFIG_PLATFORM_ARM_TCC8920_JB42 = n
CONFIG_PLATFORM_ARM_RK2818 = n
CONFIG_PLATFORM_ARM_RK3066 = n
CONFIG_PLATFORM_ARM_RK3188 = n
CONFIG_PLATFORM_ARM_URBETTER = n
CONFIG_PLATFORM_ARM_TI_PANDA = n
CONFIG_PLATFORM_MIPS_JZ4760 = n
CONFIG_PLATFORM_DMP_PHILIPS = n
CONFIG_PLATFORM_MSTAR_TITANIA12 = n
CONFIG_PLATFORM_MSTAR = n
CONFIG_PLATFORM_SZEBOOK = n
CONFIG_PLATFORM_ARM_SUNxI = n
CONFIG_PLATFORM_ARM_SUN6I = n
CONFIG_PLATFORM_ARM_SUN7I = n
CONFIG_PLATFORM_ARM_SUN8I_W3P1 = n
CONFIG_PLATFORM_ARM_SUN8I_W5P1 = n
CONFIG_PLATFORM_ACTIONS_ATM702X = n
CONFIG_PLATFORM_ACTIONS_ATV5201 = n
CONFIG_PLATFORM_ACTIONS_ATM705X = n
CONFIG_PLATFORM_ARM_RTD299X = n
CONFIG_PLATFORM_ARM_SPREADTRUM_6820 = n
CONFIG_PLATFORM_ARM_SPREADTRUM_8810 = n
CONFIG_PLATFORM_ARM_WMT = n
CONFIG_PLATFORM_TI_DM365 = n
CONFIG_PLATFORM_MOZART = n
CONFIG_PLATFORM_RTK119X = n
CONFIG_PLATFORM_NOVATEK_NT72668 = n
CONFIG_PLATFORM_HISILICON = n
###############################################################
在Makefile中增加这一段代码,主要设置交叉编译工具链和kernel目录树
ifeq ($(CONFIG_PLATFORM_ARM_S5PV210), y)
EXTRA_CFLAGS += -DCONFIG_LITTLE_ENDIAN
ARCH := arm
#交叉编辑工具链一定要选对
CROSS_COMPILE := arm-linux-
#kernel版本
KVER := 2.6.35.7
#源码目录树
KSRC ?= /root/root/kernel/kernel
endif
然后#make clean &&make
..........
CC [M] /root/root/rtl8723bu_wifi/hal/OUTSRC/rtl8723b/HalHWImg8723B_BB.o
CC [M] /root/root/rtl8723bu_wifi/hal/OUTSRC/rtl8723b/HalHWImg8723B_MAC.o
CC [M] /root/root/rtl8723bu_wifi/hal/OUTSRC/rtl8723b/HalHWImg8723B_RF.o
CC [M] /root/root/rtl8723bu_wifi/hal/OUTSRC/rtl8723b/HalHWImg8723B_FW.o
CC [M] /root/root/rtl8723bu_wifi/hal/OUTSRC/rtl8723b/HalHWImg8723B_MP.o
CC [M] /root/root/rtl8723bu_wifi/hal/OUTSRC/rtl8723b/phydm_RegConfig8723B.o
CC [M] /root/root/rtl8723bu_wifi/hal/OUTSRC/rtl8723b/HalPhyRf_8723B.o
CC [M] /root/root/rtl8723bu_wifi/hal/OUTSRC/rtl8723b/phydm_RTL8723B.o
CC [M] /root/root/rtl8723bu_wifi/platform/platform_ops.o
CC [M] /root/root/rtl8723bu_wifi/core/rtw_mp.o
CC [M] /root/root/rtl8723bu_wifi/core/rtw_mp_ioctl.o
CC [M] /root/root/rtl8723bu_wifi/core/rtw_bt_mp.o
LD [M] /root/root/rtl8723bu_wifi/8723bu.o
Building modules, stage 2.
MODPOST 1 modules
CC /root/root/rtl8723bu_wifi/8723bu.mod.o
LD [M] /root/root/rtl8723bu_wifi/8723bu.ko
make[1]: Leaving directory `/root/root/kernel/kernel'
root@ubuntu:~/root/rtl8723bu_wifi#
编译完成后生成8723bu.ko就是我们需要的驱动了
2、制作根文件系统
将我们编译生成的.ko文件放在我们的根文件系统中
动手制作.ext2文件系统,步骤如下:
(1)dd if=/dev/zero of=rootfs.ext2 bs=1024 count=204800
losetup /dev/loop1 rootfs.ext2
mke2fs -m 0 /dev/loop1 204800
mount -t ext2 /dev/loop1 ./ext2_rootfs/
(2)向./ext2_rootfs中复制内容,用cp ../rootfs/* ./ -rf
(3)umount /dev/loop1
losetup -d /dev/loop1
(4)完成后得到的rootfs.ext2就是我们做好的rootfs镜像。拿去烧录即可。
烧录镜像到开发板上启动:
Starting sshd: OK
Starting qttest...
[ 16.193284] EXT2-fs (mmcblk0p4): warning: mounting ext3 filesystem as ext2
[ 16.198675] EXT2-fs (mmcblk0p4): warning: mounting unchecked fs, running e2fsck is recommended
Welcome to Buildroot
x210v3 login: root
Password:
[root@x210v3 ~]#
[root@x210v3 ~]#
[root@x210v3 ~]# cd /
[root@x210v3 /]# cd home/
[root@x210v3 home]# ls
8723bu.ko default/ ftp/ mt7601Usta.ko
[root@x210v3 home]#
3、安装并测试驱动
[root@x210v3 home]# insmod 8723bu.ko
[ 82.343476] RTL871X: module init start
[ 82.345749] RTL871X: rtl8723bu v4.3.16_14189.20150519_BTCOEX20150119-5844
[ 82.352941] RTL871X: build time: Jun 22 2017 21:44:43
[ 82.357681] RTL871X: rtl8723bu BT-Coex version = BTCOEX20150119-5844
[ 82.514318] RTL871X: rtw_ndev_init(wlan0)
[ 82.520354] usbcore: registered new interface driver rtl8723bu
[ 82.524874] RTL871X: module init ret=0
[root@x210v3 home]#
本来打印信息有很多的,我在源码 include/autoconf.h 中屏蔽了#define CONFIG_DEBUG 如果需要打印全信息 在源码中放开这行注释就行了。
开启wlan0网卡:# ifconfig wlan0 up
[root@x210v3 home]# ifconfig wlan0 up
[root@x210v3 home]# ifconfig eth0 down
[root@x210v3 home]# ifconfig
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)
wlan0 Link encap:Ethernet HWaddr 60:42:7F:76:D9:E9
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:50 errors:0 dropped:3 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)
[root@x210v3 home]#
编辑 /etc/wpa_supplicant.conf文件内容如下:
:
ctrl_interface=/var/run/wpa_supplicant
network={
key_mgmt=WPA-PSK
#WiFi名称
ssid="*******"
#WiFi密码
psk="*********"
}
连接网络#wpa_supplicant -B -c /etc/wpa_supplicant.conf -i wlan0
[root@x210v3 home]# wpa_supplicant -B -c /etc/wpa_supplicant.conf -i wlan0
Successfully initialized wpa_supplicant
[ 422.563815] RTL871X: nolinked power save leave
[ 422.573330] RTL871X: set bssid:00:00:00:00:00:00
[ 422.577015] RTL871X: set ssid [gÆisQÿJì)ͺ«òûãF|ÂTøZ.c3ŸÉš ] fw_state=0x00000008
ioctl[SIOCSIWAP]: Operation not permitted
ioctl[SIOCSIWENCODEEXT]: Invalid argument
ioctl[SIOCSIWENCODEEXT]: Invalid argument
[root@x210v3 home]# [ 423.922443] RTL871X: indicate disassoc
[ 423.928499] RTL871X: set ssid [Xiaomi_310] fw_state=0x00000008
[ 423.933107] RTL871X: set bssid:f0:b4:29:d4:d1:78
[ 424.146620] RTL871X: start auth
[ 424.165219] RTL871X: auth success, start assoc
[ 424.189771] RTL871X: assoc success
[ 424.191876] ADDRCONF(NETDEV_CHANGE): wlan0: link becomes ready
[root@x210v3 home]#
编辑/etc/network/interface文件
增加wlan0的描述
# Configure Loopback
auto lo
iface lo inet loopback
auto eth0
iface eth0 inet dhcp
#增加wlan0的配置
auto wlan0
iface wlan0 inet dhcp
查看连接状态:wpa_cli -i wlan0 status
[root@x210v3 home]#
[root@x210v3 home]# wpa_cli -i wlan0 status
bssid=f0:b4:29:d4:d1:78
ssid=Xiaomi_310
id=0
mode=station
pairwise_cipher=CCMP
group_cipher=TKIP
key_mgmt=WPA2-PSK
wpa_state=ASSOCIATED
address=60:42:7f:76:d9:e9
已经连上了
然后分配网关 ip地址等,使用udhcpc自动分配
[root@x210v3 home]# udhcpc -i wlan0
udhcpc (v1.21.0) started
Sending discover...
Sending select for 192.168.31.186...
Lease of 192.168.31.186 obtained, lease time 43200
deleting routers
route: SIOCDELRT: No such process
adding dns 192.168.31.1
使用ifconfig查看是否分配成功
[root@x210v3 home]# ifconfig wlan0
wlan0 Link encap:Ethernet HWaddr 60:42:7F:76:D9:E9
inet addr:192.168.31.186 Bcast:192.168.31.255 Mask:255.255.255.0
inet6 addr: fe80::6242:7fff:fe76:d9e9/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:23 errors:0 dropped:18707 overruns:0 frame:0
TX packets:6 errors:0 dropped:1 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:80615 (78.7 KiB) TX bytes:5652 (5.5 KiB)
[root@x210v3 home]#
如上已经分配成功
至此移植完成,最后检查一下可以ping通百度不
[root@x210v3 home]# ping www.baidu.com
PING www.baidu.com (14.215.177.37): 56 data bytes
64 bytes from 14.215.177.37: seq=0 ttl=54 time=14.371 ms
64 bytes from 14.215.177.37: seq=1 ttl=54 time=9.603 ms
64 bytes from 14.215.177.37: seq=2 ttl=54 time=9.518 ms
64 bytes from 14.215.177.37: seq=3 ttl=54 time=9.451 ms
64 bytes from 14.215.177.37: seq=4 ttl=54 time=10.404 ms
64 bytes from 14.215.177.37: seq=5 ttl=54 time=9.721 ms
64 bytes from 14.215.177.37: seq=6 ttl=54 time=9.927 ms
64 bytes from 14.215.177.37: seq=7 ttl=54 time=9.753 ms
64 bytes from 14.215.177.37: seq=8 ttl=54 time=10.090 ms
64 bytes from 14.215.177.37: seq=9 ttl=54 time=15.682 ms
64 bytes from 14.215.177.37: seq=10 ttl=54 time=9.876 ms
--- www.baidu.com ping statistics ---
11 packets transmitted, 11 packets received, 0% packet loss
round-trip min/avg/max = 9.451/10.763/15.682 ms