EDA365电子论坛网

标题: IMX6ULL开发板Linux_WIFI驱动实验 [打印本页]

作者: 孤久厌闹    时间: 2020-9-11 10:53
标题: IMX6ULL开发板Linux_WIFI驱动实验
1.在迅为i.MX6ULL开发板上使用的是 usb 接口的 RTL8723 wifi 模块,原理图如下所示:
! V" x7 m1 t9 @+ M* m2 K/ C : X$ P9 M$ x" `4 s( x+ `
可以看到 RTL8723 模块的接口非常简单,只有 DP1 和 DM1 连接到 usb HUB 芯片上,就可以完成通信电路
/ g* ?+ c& _% w/ C6 sRTL8723 是 realtek 公司的 wifi 芯片,已经提供了 wifi 驱动源码,就不需要我们自己去编写了,只需要将提  o  D& A  I0 P9 ]; p
供的 wifi 驱动源码添加到 Linux 内核中进行编译就可以了。1 G2 C& U+ F0 u/ W/ J. o& ]
0 v1 ]  u7 l* l5 G5 `/ }
1.1在Linux内核中添加wifi驱动
1 k# Y* l# ^8 P1 [首先获取 wifi 驱动源码,放到 Linux 内核 drivers/net/wireless 目录下,如下所示:" o% v& G; E% c- |, a" V& P
: O- u/ l1 ?# k4 K1 @! v
rtl8723BU 目录下内容如下所示:' m: _3 d$ c1 Z+ ?: Q) Z' W

4 Y7 n2 L; y- s% r9 W其中 Kconfig 文件是 rtl8723 驱动的配置文件,这样可以通过 Linux 内核图形化配置界面来选择是否编译
' q& E; D3 Q1 k1 N) l! v( W0 l/ XWIFI 驱动,Kconfig 文件内容如下所示:( F1 M9 I9 F% q/ w/ b) l
config RTL8723BU
$ |2 `- K# y2 F5 X4 K3 wtristate "Realtek 8723B USB WiFi"+ j6 X3 }$ ]6 }6 V; R% j
depends on USB
9 g* b& u# d& d. ^! f---help---( D5 q4 T0 u/ C; V. f- `8 G, I
Help message of RTL8723BU4 }0 a7 S2 l- x* |$ A
当添加完 rtl8723 wifi 驱动时,需要修改上一级的 Kconfig 和 Makefile。6 b* j4 `9 T. _4 b, x/ f6 t
修改 drivers/net/wireless/Kconfig,添加如下内容:  r. D4 i7 ]0 D$ F
source "drivers/net/wireless/rtl8723BU/Kconfig"  Q+ w- s1 x4 p% i! I( W
添加完成后如下所示:, R- L5 Z! o8 ^9 N" o; w# W, `
0 V4 ~- d8 M, |8 h: i: i; i& g) q
添加完成后,在 Linux 内核的驱动配置界面上才会出现 rtl8723 的配置选项。
& Y9 `& M1 K7 d8 X' @% q修改 drivers/net/wireless/Makefile 文件,添加如下内容:
7 `8 ?+ H5 i" F* T4 Vobj-$(CONFIG_RTL8723BU) += rtl8723BU/
: ^3 r" w+ D! B0 f# d9 M, d2 M修改后如下所示:& u/ U( R1 t$ D- |  c" J

0 E6 l  c, t$ Y3 ]  {
* \4 X( f+ F. k1.2  配置 Linux 内核) Y5 k7 `; {% M# m6 N# w
添加好 rtl8723 wifi 驱动并修改完配置文件后,需要在 Linux 内核中在进行配置。
1 ~: u+ l- @) s& I+ I1、配置支持 USB 设备+ H5 m3 e/ B  e7 Y* t4 |. d
Linux 内核配置路径如下:6 ^7 f: E# F- a! W0 W
Device Drivers --->USB support --->, |: v$ E" W- w5 T
<*> EHCI HCD (USB 2.0) support
% J: H. g! B; d* o, W<*> ChipIdea Highspeed Dual Role ControllerChipIdea device controllerChipIdea host controller
- {/ @! g4 R1 U3 p* R配置完成如下图所示:3 u0 C$ }0 x  j. s8 t0 B

4 G/ g: X5 P% V$ @5 A9 U
9 D7 H0 o6 ]5 X7 f7 ^5 r/ b2、配置支持 wifi 设备1 @2 R/ o  H5 b4 J0 {- R. c
Linux 内核配置路径如下:0 R, g4 E- u) b: y* P: u- G
Device Drivers --->Network device support --->Wireless LAN --->
2 E* d$ U8 r# ]. L9 z/ J<*> 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
' A2 f: b+ m8 T" D( H& J配置完成如下图所示:
' U- l+ x1 P- j6 e0 d : I+ z; g/ t0 B7 R# M2 U. M! Z& r7 z1 A

" G$ _8 X+ U( z* b% _: t- e' n3、配置支持 IEEE 802.117 u! U" `6 _$ B
Linux 内核配置路径如下:, n! Q4 d5 J9 E/ F
Networking support --->- G# Y% U' e! ^2 l
-*- Wireless --->cfg80211 wireless extensions compatibility
: k. z! I7 L8 @4 _( m<*> Generic IEEE 802.11 Networking Stack (mac80211)* j, u" N& @3 E; [' R
配置完成如下图所示:# C! q2 I2 m( x* w& V: V
* E% U/ ~7 q  n- Q; K3 q

; ^0 G, }. Z# \3 l! H5 t4、配置 rtl8723 wifi 驱动+ s& r2 g' C9 ~
Linux 内核配置路径如下:
6 {6 D" l( n, X2 I& Z  j+ _Device Drivers --->Network device support --->Wireless LAN --->0 F7 P4 |6 s6 c  t: V2 K2 _; [, Y
<*> Realtek 8723B USB WiFi1 a; U( s6 R/ u; n
配置结果如图所示:. Z* y  d2 }, L- M4 J( ]
2 l, v3 D) ^( {2 M! J( M; m
直接将 rtl8723 wifi 模块的驱动编译到内核中去。
: ~  Y: |* K+ o: z- l# ^  H; D以上 Linux 内核配置完成后,重新编译内核生成 zImage,使用新的 zImage 启动开发板。
% E; N9 I/ j, a- {( d2 N3 k- n7 i/ Y4 Z' s
1.3 rtl8723 wifi  模块驱动测试
0 I/ _+ {; U7 Y+ ?# D6 s; n使用新的 zImage 镜像启动开发板,系统启动过程中会有如下信息打印:
/ p% p0 a. p8 I: J$ T4 m6 c6 }2 ?
% r* q- K/ x. J1 F上图说明在 Linux 系统启动过程中使用了 rtl8723 wifi 模块的驱动程序。当启动完成驱动后使用“ifconfig -a”, t+ q4 L5 C2 i* T0 [
命令查看 wlan 网卡是否存在,结果如下图所示:5 e/ O3 j  C0 f+ v
& I9 ?4 k$ ?0 r4 ^0 M' M

, j) x  g3 r8 c3 ~/ R可以看到存在一个 wlan0 设备,这个就是 rtl8723 wifi 模块对应的网卡设备。说明驱动程序测试正常,但是1 J! c+ i, M" r. a6 J& d
如果要联网的话,还需要第三方组件才可以。下面就来看一下如何使用第三方组件进行联网测试。
: A0 ^; F+ A  ?" w; [# C0 J2 K# ], C- u% C* Z# A7 d+ q! G

作者: tutututut    时间: 2020-9-14 09:34
步骤很详细,谢谢分享




欢迎光临 EDA365电子论坛网 (https://bbs.eda365.com/) Powered by Discuz! X3.2