|
|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
1.在迅为i.MX6ULL开发板上使用的是 usb 接口的 RTL8723 wifi 模块,原理图如下所示:
, ^2 ?$ E! B! g8 r8 f# Q6 Z( I
w" A2 D8 f( i: L
可以看到 RTL8723 模块的接口非常简单,只有 DP1 和 DM1 连接到 usb HUB 芯片上,就可以完成通信电路。5 N- w$ v; G& z( C% J- c+ o
RTL8723 是 realtek 公司的 wifi 芯片,已经提供了 wifi 驱动源码,就不需要我们自己去编写了,只需要将提
u- x }$ d. {供的 wifi 驱动源码添加到 Linux 内核中进行编译就可以了。
c: C) t3 W8 n
8 y( j1 C$ i6 j: i' }1.1在Linux内核中添加wifi驱动
5 v7 R0 V1 w5 Z首先获取 wifi 驱动源码,放到 Linux 内核 drivers/net/wireless 目录下,如下所示:% M) [6 \4 S$ j+ Q6 p- o
u0 W7 ^6 Z0 x( s( ]3 ^: F2 s+ Ortl8723BU 目录下内容如下所示: Y- ?/ R, w- e0 x6 Q. ^
3 j0 `! p& h$ ?5 V) k7 D7 @. s0 ]
其中 Kconfig 文件是 rtl8723 驱动的配置文件,这样可以通过 Linux 内核图形化配置界面来选择是否编译; T7 x! t0 q0 T2 f8 O
WIFI 驱动,Kconfig 文件内容如下所示:& z4 s/ c1 R$ H3 F. V. C& n
config RTL8723BU
* i6 `. o. p$ m5 f. l& m: Rtristate "Realtek 8723B USB WiFi"- x4 m/ m# p; F: F3 ^2 \: y6 d% v
depends on USB
/ x9 e( |5 D, J1 v5 o# ~---help---$ w" Z$ P) s" P7 @2 U1 D' |
Help message of RTL8723BU
, b$ K% b$ B, H$ w& \当添加完 rtl8723 wifi 驱动时,需要修改上一级的 Kconfig 和 Makefile。) N3 y* b+ l5 M% g* L' t9 ]
修改 drivers/net/wireless/Kconfig,添加如下内容:( K _! Y& C4 {, m
source "drivers/net/wireless/rtl8723BU/Kconfig"
( R$ a& L+ u' r) c& k; B' I; `添加完成后如下所示:
" l8 C- d: f+ e; W2 o2 p' H ?
g$ t9 J; F9 u添加完成后,在 Linux 内核的驱动配置界面上才会出现 rtl8723 的配置选项。
, T$ K; X* B# [8 B" q8 R修改 drivers/net/wireless/Makefile 文件,添加如下内容:1 |% B5 m; D" q* I# u1 H7 v
obj-$(CONFIG_RTL8723BU) += rtl8723BU/
2 r2 i4 {+ I# c# X4 m; j修改后如下所示:
6 u. P. D1 V+ S1 ]7 w; z
0 {, T2 |( j5 R7 s0 @: C8 c' @0 v" N( A" Q, ^$ Y9 H9 e& Z
1.2 配置 Linux 内核1 F) ?3 y# o0 x
添加好 rtl8723 wifi 驱动并修改完配置文件后,需要在 Linux 内核中在进行配置。1 I ~5 f4 ^5 i) x' s7 S/ b, c X$ g
1、配置支持 USB 设备" P D9 e5 d, t6 H
Linux 内核配置路径如下:1 z; f' w; w6 j# F9 b; o
Device Drivers --->USB support --->9 v6 E+ Q) B! n. s7 m
<*> EHCI HCD (USB 2.0) support
2 P- D6 Y* P9 d( l% N<*> ChipIdea Highspeed Dual Role ControllerChipIdea device controllerChipIdea host controller$ Z p6 ~- r8 C# _! ?5 I9 t
配置完成如下图所示:
/ T8 s9 @4 ^0 z2 j% s5 o; ]
, U5 E" ^& {2 g" ~ r. ?8 m
; U2 i) {, {5 b0 ]& C; ~9 M2、配置支持 wifi 设备
* `9 o! D: W2 @8 d4 HLinux 内核配置路径如下:) E# _+ o- Y4 @4 ?4 e% }
Device Drivers --->Network device support --->Wireless LAN --->
# U0 s# X6 S9 g5 P& `! |<*> IEEE 802.11 for Host AP (Prism2/2.5/3 and WEP/TKIP/CCMP)Support downloading firmware images with Host AP driverSupport for non-volatile firmware download$ J7 [) U$ r) \* l
配置完成如下图所示:6 v, r7 ]$ q3 s& I) z: s
) }0 R* W4 H5 g. P8 \
" R4 w4 j5 n* I( y+ E. n2 ?" c% `3、配置支持 IEEE 802.11( n4 A; {# J9 U0 q
Linux 内核配置路径如下:
7 c( ~; G7 P6 sNetworking support --->: V/ n s* I. R( }, r" r
-*- Wireless --->cfg80211 wireless extensions compatibility
% D* H2 z3 P y% u<*> Generic IEEE 802.11 Networking Stack (mac80211)
. v7 m2 H+ v9 R1 ^4 z) \; ]7 L配置完成如下图所示:7 {! m: U* t9 q
+ d6 {0 S- P# b& m! ^+ Q5 t. ?( t/ u5 q# V8 z6 m
4、配置 rtl8723 wifi 驱动
: g. n* V0 S# W" v" zLinux 内核配置路径如下:3 f6 ^( s! v; F: J) i0 A7 I& d
Device Drivers --->Network device support --->Wireless LAN --->6 t: D! ~4 |9 @# l* s% S# O
<*> Realtek 8723B USB WiFi, ~1 Z/ F/ J9 N: L) j
配置结果如图所示:" I# j V2 \8 b
8 ~, r# x4 ^: I直接将 rtl8723 wifi 模块的驱动编译到内核中去。( a f9 i& A) W1 M' W" z
以上 Linux 内核配置完成后,重新编译内核生成 zImage,使用新的 zImage 启动开发板。. A. W* w- f. c, [2 c& k6 s2 H
+ h$ J& L. I! x( j" k- n% c
1.3 rtl8723 wifi 模块驱动测试 b5 g' a# B% `8 A6 A2 V B
使用新的 zImage 镜像启动开发板,系统启动过程中会有如下信息打印:
9 E% E0 h& |. `& B% K& V( x% q+ k
9 ~/ U4 y c: y2 B i2 Y
上图说明在 Linux 系统启动过程中使用了 rtl8723 wifi 模块的驱动程序。当启动完成驱动后使用“ifconfig -a”
$ v% Z/ b7 N* j# Z+ Z命令查看 wlan 网卡是否存在,结果如下图所示:. }9 d, o4 j4 w% t# H. C ]
3 B! k+ w3 J% l7 S( _
: i& z+ K& T! m
可以看到存在一个 wlan0 设备,这个就是 rtl8723 wifi 模块对应的网卡设备。说明驱动程序测试正常,但是% _+ g' }5 X0 v( \
如果要联网的话,还需要第三方组件才可以。下面就来看一下如何使用第三方组件进行联网测试。1 D' Y9 d9 J% J
- G0 v2 a* \' `6 D; W3 n
|
|