|
|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
1.在迅为i.MX6ULL开发板上使用的是 usb 接口的 RTL8723 wifi 模块,原理图如下所示:" |; Y, B( B C1 x1 ]6 q
! Z' _7 D- p! C) K+ \% t可以看到 RTL8723 模块的接口非常简单,只有 DP1 和 DM1 连接到 usb HUB 芯片上,就可以完成通信电路。
# R: _4 v7 K( e) S# B" _RTL8723 是 realtek 公司的 wifi 芯片,已经提供了 wifi 驱动源码,就不需要我们自己去编写了,只需要将提9 u. S$ A: i" c& i/ Y3 f6 r5 z
供的 wifi 驱动源码添加到 Linux 内核中进行编译就可以了。
g' H7 z: l" d! P8 E
" i; W S+ ^" ?9 x& g1.1在Linux内核中添加wifi驱动
1 H: U& Q3 e) N% I7 b首先获取 wifi 驱动源码,放到 Linux 内核 drivers/net/wireless 目录下,如下所示:
9 N/ T! y: H" G
& W* p" e+ `- Q: s8 z' e3 N0 Trtl8723BU 目录下内容如下所示:
6 B' ~; ]5 \6 f" c" d
& j3 B0 q$ u- ]1 s% L1 w$ e其中 Kconfig 文件是 rtl8723 驱动的配置文件,这样可以通过 Linux 内核图形化配置界面来选择是否编译
* W) P8 w# `; J, w) i9 P3 IWIFI 驱动,Kconfig 文件内容如下所示:+ |2 U% J) r8 b6 y) ]. ?
config RTL8723BU/ n$ M6 i0 j, s+ k; k% H
tristate "Realtek 8723B USB WiFi"
8 Y4 k: T$ H5 m) \5 F; Z. Mdepends on USB
0 g# H; j1 w1 n, p# X3 ?" N---help---
2 ?# w6 k. v( o2 v0 T+ Y: xHelp message of RTL8723BU/ u/ Z. L& U% E; D1 V( X
当添加完 rtl8723 wifi 驱动时,需要修改上一级的 Kconfig 和 Makefile。
' H; U6 T3 w' |% p修改 drivers/net/wireless/Kconfig,添加如下内容:
) R4 P! f H4 h* Q+ osource "drivers/net/wireless/rtl8723BU/Kconfig"
. H7 F" K# V. G H+ M& A1 r' Y7 n添加完成后如下所示:$ S. A% f' g& x, U9 {' e1 h& p' y
+ T3 i" P0 E( }# A' h! A6 k7 h5 H
添加完成后,在 Linux 内核的驱动配置界面上才会出现 rtl8723 的配置选项。
3 p7 `+ Z3 v( h) U/ T# H: s3 \修改 drivers/net/wireless/Makefile 文件,添加如下内容:
7 G. ?7 M, [* R! {* cobj-$(CONFIG_RTL8723BU) += rtl8723BU/. g* v6 z1 l; d8 N
修改后如下所示:% T& u; m) M% |: C6 X
7 a, L) x: y6 R, y( d* h& a/ [" l( S# C2 t+ i4 s# Z. y- i! m
1.2 配置 Linux 内核* x% O) H4 |9 ^* t; W- L
添加好 rtl8723 wifi 驱动并修改完配置文件后,需要在 Linux 内核中在进行配置。
+ z& R, y5 e* f# L: e$ E1、配置支持 USB 设备& F6 n6 y. z1 p# u$ y
Linux 内核配置路径如下:8 c7 f0 d2 |7 h: ~1 f
Device Drivers --->USB support --->* Q! \5 T* [9 W9 l& W1 H4 J* J
<*> EHCI HCD (USB 2.0) support
' j3 m8 C! Q* U1 q+ n6 S5 H1 I<*> ChipIdea Highspeed Dual Role ControllerChipIdea device controllerChipIdea host controller5 B3 F+ U2 y3 A) Z3 P
配置完成如下图所示:
4 O, z: l! [9 T" t5 u
4 V- J b0 s- V0 V& ]# j. w
6 O9 p% L B( X$ m$ m5 `2、配置支持 wifi 设备
" C& N6 f: U% c* x, YLinux 内核配置路径如下:
4 `$ X, {; r' W- oDevice Drivers --->Network device support --->Wireless LAN --->1 z' B, z/ X& U6 `0 W
<*> 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
8 \0 Q) g* h9 R$ E6 R/ @ E4 h配置完成如下图所示:
$ v/ N, P. |7 [- p* f
" {5 m: f1 a+ M/ N! z* R# I! ~) _: h% S% [+ r, ^* H
3、配置支持 IEEE 802.11
- @& o& w4 A( r5 C/ ]7 WLinux 内核配置路径如下:! v' j+ a7 N: w @0 X& J
Networking support --->
4 [3 b" T/ W! a$ k-*- Wireless --->cfg80211 wireless extensions compatibility4 n/ S0 `: l6 Y& O. A
<*> Generic IEEE 802.11 Networking Stack (mac80211)
( z1 c/ v9 G) A配置完成如下图所示:; `' U, x. i; j
# p3 }" i$ X- d4 D
" o2 a# o/ y" e: t- }6 Y. g
4、配置 rtl8723 wifi 驱动
& X4 C! V0 P: O9 ?Linux 内核配置路径如下:% \9 }( \ M$ A1 U j
Device Drivers --->Network device support --->Wireless LAN --->- Y( {" z; h% m) y3 O
<*> Realtek 8723B USB WiFi
, U+ U9 x0 t) F$ ^; V! @& z配置结果如图所示:
: H9 ?3 E) J0 W7 o8 U
* ~/ |7 g- z$ n w: Y8 U直接将 rtl8723 wifi 模块的驱动编译到内核中去。
8 \% m# ?8 T4 _ t* t以上 Linux 内核配置完成后,重新编译内核生成 zImage,使用新的 zImage 启动开发板。$ V5 t) I/ e0 d _
D( z8 p+ k- k" L5 G4 J
1.3 rtl8723 wifi 模块驱动测试2 I% R; a0 C: G' v$ r1 h- C
使用新的 zImage 镜像启动开发板,系统启动过程中会有如下信息打印:
$ m6 o" M6 O6 m; v5 a6 |6 I
8 a, _, @2 o5 H1 l8 w, ~% S
上图说明在 Linux 系统启动过程中使用了 rtl8723 wifi 模块的驱动程序。当启动完成驱动后使用“ifconfig -a”
) s2 Y4 u6 k( y+ k- Z9 G命令查看 wlan 网卡是否存在,结果如下图所示:6 L/ u) [1 c: h
3 w! J* V. M& G* z! K% L" K
& r7 p' ?) P- P$ p Y, _9 d: p
可以看到存在一个 wlan0 设备,这个就是 rtl8723 wifi 模块对应的网卡设备。说明驱动程序测试正常,但是
7 I* B' v2 D% F, A如果要联网的话,还需要第三方组件才可以。下面就来看一下如何使用第三方组件进行联网测试。
2 p, ] A: ~6 f( A0 }
9 ?( i' j" p; x3 x1 T |
|