找回密码
 注册
关于网站域名变更的通知
查看: 445|回复: 1
打印 上一主题 下一主题

迅为6818开发板-QtE-WiFi_mt6620的移植

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2020-9-29 14:11 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

EDA365欢迎您登录!

您需要 登录 才可以下载或查看,没有帐号?注册

x
本文档介绍 SDIO WIFI 在 6818 开发板,QtE 的移植方法,请注意:移植过程中的部分库和工具,在源码或者镜像中可能已经存在,大家可以使用自己生成的覆盖即可。提供的文件; ^  A* y' R0 A2 T4 T
如下图所示,分别为三个源码压缩包、编译好的库位于 lib 文件夹、wpa_supplicant 工具位于 sbin 文件夹、6620_launcher 和脚本 make_mt6620.sh。
* M8 V! h8 l6 B
7 y8 Z+ b* R" b& ]/ m这里我们所使用的驱动模块对应在 Android 源码中的device/nexell/s5p6818_drone/mt6620_6818/目录下,用户只要在内核将 WiFi 设置为模块方式(M),然后编译 Android 源码之后可以7 O# B" H5 e3 \3 Y0 ^: O+ g/ d
在该目录找到可以使用的驱动模块。同样所需驱动我们在 wpa_driver 文件夹直接提供,以方便使用。
5 P- K$ _0 i8 O% B6 q' N1 6620_launcher2 Q1 X" n, o9 `7 w6 a
6620_launcher 工具是作为后台的一个服务程序运行,该服务会配置串口的工作参数,下载固件补丁到 MT6620 中,它位于开发板的“/usr/bin/”目录下,在系统中内置,用户可以直接覆盖。
2 C8 t) _7 O$ l7 _. `2 g$ G2 移植 wpa_supplicant
; }. y6 h) ^% {0 q0 _% p在进行编译之前要先修改编译器为 4.3.2 版本,如何设置编译器参见手册 7.1 章节“Qt/E4.7.1 编译器的安装”。另外为了避免使用环境变量设置编译器而可能出现的问题,文档中大部分编译是使用编译器的绝对路径,用户也应先找到自己编译器的绝对路径待用。下图是本次编译使用的编译器以及编译器压缩包。
: e! f* A) t: l1 p4 z" [1 R
' R7 p- Y. [7 |' N1 b3 Q由上图可知该编译器的绝对路径为“/usr/local/ARM/4.3.2/bin/ arm-none-linux-gnueabi-gcc”。; `* J9 r0 w: c) ^- h/ s6 u
用户需要将提供的源码压缩包拷贝到 Ubuntu 的工作目录,分别解压 ,如下图所示。4 z% b0 l% V) |4 ]4 B3 J

! Y! n3 ?. @. f# F0 _2.1 移植 OpenSSL9 T2 `2 ?, k# L9 i+ a7 l$ }; h
首先进入目录 openssl-1.1.0g,内容如下图所示。
8 i+ v: ?' [: [$ R
: K8 j5 P$ G, R, H! W执行下面指令,做相应配置。
" q6 p9 C& M( A2 o) M7 d# }* S/ k6 m6 ]./config no-asm shared --prefix=$(pwd)/__install0 p6 U7 Z9 `/ d! q4 u3 ]- R
执行完成后如下图所示。  ^# i% i/ }$ M8 S, H7 j

0 x0 C  K: G& ]0 H$ ~3 k, y1 Gno-asm: 是在交叉编译过程中不使用汇编代码代码加速编译过程,原因是它的汇编代码是不支持 arm 格式。( W3 {( `0 v% V$ m9 o: E. d" Y& [
shared :生成动态连接库。--prefix :指定 make install 后生成目录的路径,不修改此项则默认为 OPENSSLDIR 目录(/usr/local/ssl)。6 H$ D4 q2 q) M+ A. ^* A
使用命令“vim Makefile”打开 Makefile,搜索 CFLAG,定位到下图中所示位置。% f! H* p+ O3 [/ R2 Y

) i! }6 T; U, {1 h; C6 x# x删除上图中红框中的“-m64”,完成后 CFLAG 应如下图所示。0 n' B+ D2 s6 ~- |' @
. v" u6 e5 j% c
执行以下命令,编译 OpenSSL 库,注意这里使用的是交叉编译器的绝对路径。* ^. \1 v2 q, e' ?) j. ?& c
make CROSS_COMPILE=/usr/local/arm/4.3.2/bin/arm-none-linux-gnueabi-4 G* |3 ~; K" b- I( w8 @
编译完成后如下图所示。8 o9 D. y! M" U
2 X1 o8 Y/ p9 Q0 _" t. F5 L4 g
执行下面命令,将编译好的库文件拷贝到第一步指定的目录; c& S3 k4 F5 M; M; w8 t
make install
/ L# t3 g2 b. h3 C: O! ]如下图所示在当前目录下的__install 目录下生成了头文件和库文件:% L3 i' D5 w( }7 U4 f, h
7 j2 j1 u4 c" K' x
include 下文件在编译程序的时候需要指定该 include 的路径。而 lib 下在程序运行时会用到,需要将 lib 下所有文件包括文件夹拷贝到开发板/lib 文件夹中。; O( U3 Q+ t* K( e
2.2 移植 libnl3 S3 x+ N- ?3 ^( n# }
libnl 是为了方便应用程序使用 netlink 接口而开发的一个库。这个库为原始 netlink 消息传递以及不同的 netlink family 专用接口提供了一个统一的接口。进入目录“libnl-1.1.4/”,如下图所示。
% Q/ K8 I# l! V7 Y; d6 y9 c" l' X1 Z6 R9 z+ f: _
执行下面的指令,配置编译架构。' l' y, W0 b! ^8 K. Z
./configure --prefix=$(pwd)/__install --enable-shared --enable-static% i* S2 D7 ~) _, p
其中--prefix=$(pwd)/__install 指定了编译出来的库存放的路径,一般将其放在当前目录下的__install 目录下,执行结果如下图所示。
$ J1 x5 P. P! `6 y% q5 ]0 j" H# B3 M" C) V1 ~4 I
执行下面的命令,编译库+ p0 A! I$ p' a
make CC=/usr/local/arm/4.3.2/bin/arm-none-linux-gnueabi-gcc6 \, O: |1 Q- \: K* I
完成后如下图所示。, l- b% g( C" P; ~& ^6 s+ Q! A
/ v8 ^3 q$ ~" S& v% I2 {9 t! h
使用命令“make install”, 将编译好的库文件拷贝到指定目录。在当前目录下的__install目录下生成了头文件和库文件 ,如下图所示。0 Q3 j: K1 C. p" ^3 w5 p& X
/ e  P- O$ }+ C  A! I6 V$ ~
include 目录下文件在编译程序的时候会用到,而 lib 下在程序运行时会用到。故在移植hostapd 的时候需要指定 include 的路径,需要将 lib 目录下所有文件包括文件夹拷贝到开发板中的/lib 文件夹中。* W5 C; |/ A( T" `
2.3 移植 wpa_supplicant& v3 r0 z4 O. {4 s- N
wpa_supplicant 是作为 hostap 的一部分,它位于 hostap 目录中。使用命令“cdhostap/wpa_supplicant/”进入 wpa_supplicant 目录,如下图所示。
$ o: n( a7 E' l4 R- T: ~
5 Q& b" m* C' ?3 i/ {) o使用命令“cp defconfig .config”复制一份默认的配置文件。然后使用命令“vimMakefile”修改 Makefile,如下图所示。
+ R0 r0 l4 i: }$ ?; I; T  w: f0 o  {7 J  U  }$ ]. C

! d+ I$ y  U* D6 vifndef CC
- }7 L* x4 f, Q6 i1 `CC=gcc
5 k0 N5 z+ h! }; W+ \0 O% c+ Cendif
0 `* W! g5 m9 G5 s& [' ~# y/ o修改为3 v5 p$ \3 E* m, [% `
CFLAGS += -I../../libnl-1.1.4/__install/include/, L) z% X  d' X- W+ {
CFLAGS += -I../../openssl-1.1.0g/__install/include/
% q% D" D7 S8 Y# ^LIBS += -L../../libnl-1.1.4/__install/lib/
2 E9 k! I) M2 u$ FLIBS += -L../../openssl-1.1.0g/__install/lib/+ N, A  |% [& o1 `! \
#ifndef CC$ e7 r$ N" V; i# K0 _
CC=/usr/local/arm/4.3.2/bin/arm-none-linux-gnueabi-gcc8 m# F$ e2 c) p9 h7 J5 ^
#endif0 E! A/ k) Z) Q& o7 A+ N
注意,CC 路径为自己环境中的交叉工具链路径。  |" X( k" g+ U1 s
修改完成后 Makefile 如下图所示。
5 w6 T1 Y7 [5 U5 |2 a* v: y' q5 T) _6 z6 J8 z9 R7 p3 a
接下来使用命令“make”编译,结果如下图所示。
0 P% t( L" Q4 m& x3 e) O) t0 n& Y7 R, P  ~9 z
此时在当前目录下出现了“wpa_supplicant”工具,如下图所示。4 R2 L' s+ C. G( q- l9 d

1 y3 F- i1 `' s) }5 ]+ C将编译好的 wpa_supplicant 工具拷贝到开发板上的“/usr/sbin”目录即可。5 L. Q, K! T- g, n2 z
3 直接拷贝/ B) U7 l. C; D# l. x. G. _" @
跳过编译步骤,可以直接拷贝压缩包中 lib 文件夹中的库文件到开发板的/lib 目录,以及复制 sbin 文件夹中的文件到开发板的/usr/sbin 目录,复制 6620_launcher 到开发板的/usr/bin 目录下,复制 wpa_driver 中的所有文件到/lib/modules/mt6620/目录,以及复制脚本 make_mt6620.sh 到开发板的任意目录,然后进行下一章节的操作。
) y8 v' }3 X3 T. o: R! N' V( D4 开发板连接 WiFi
% W+ l$ f/ Z) ]  H6 n5 G2 `/ n在开发板执行下面的指令,更新 WiFi 开机启动脚本。' C" h0 u( j# V+ N$ F0 R. _$ a
cat << EOF > /etc/init.d/mt6620+ w) l+ {* l# G) [
#!/bin/sh
5 K) E4 b; T) N0 R' ^#support MT6620 WIFI Module: r+ Q, n2 K5 l9 [' R7 N
mknod /dev/stpwmt c 190 0
( t: j. P( w! S' ?' ?mknod /dev/stpgps c 191 0' ?7 b/ X3 v$ E& Z! W: Q
mknod /dev/fm c 193 0
% b, S! d3 h9 @, ^; Nmknod /dev/wmtWifi c 194 0
& i2 C. a7 n; ^  _; Q) ]insmod /lib/modules/mt6620/mtk_hif_sdio.ko
" q: ~8 S/ v3 u, e0 a# j3 Pinsmod /lib/modules/mt6620/mtk_stp_wmt.ko8 I! J, H) K5 q  l
insmod /lib/modules/mt6620/mtk_stp_uart.ko
, _6 [1 ], M( ~insmod /lib/modules/mt6620/mtk_stp_gps.ko; t: T4 n! V) s
#insmod /lib/modules/mt6620/hci_stp.ko
" U2 E8 m' y! ^: G! W7 ~; P3 G5 H4 [# J#insmod /lib/modules/mt6620/mt6620_fm_drv.ko
; u/ n' H8 P( R, U) W# R% a#insmod /lib/modules/mt6620/mtk_fm_priv.ko
+ m; k, u1 @0 H9 `. Cinsmod /lib/modules/mt6620/mtk_wmt_wifi.ko WIFI_major=1943 p" x  J4 [& G$ X3 Q" V! M6 O
insmod /lib/modules/mt6620/wlan_mt6620.ko' R2 ^; _) R9 o! n4 |! X
chmod 0666 /dev/stpwmt
5 Q" H2 E1 d8 achmod 0666 /dev/stpgps2 C  V, g6 u  G' y7 D5 v  c7 N
chmod 0666 /dev/fm
: S5 M% O" d6 `2 ~8 Ychmod 0666 /dev/wmtWifi
' |% z" r6 d+ z# ochmod 0666 /dev/gps
: n/ O6 |. c" ?) o8 t, Wchmod 0660 /dev/ttySAC2
( ~4 s3 G: v& ?% f8 k$ X  b/usr/bin/6620_launcher -m 1 -b 921600 -n /etc/firmware/mt6620_patch_hdr.bin -d /dev/ttySAC2 &
# H0 h& r7 i  y, j, m0 `- ?% ~sleep 43 R6 K! ~6 Q$ J7 Z: h! ^
echo 1 > /dev/wmtWifi. G0 |3 D1 n* ^
wpa_supplicant -iwlan0 -Dnl80211 -c/etc/wpa_supplicant.conf &1 F7 A8 @; f' V) p
sleep 3
; y& Z  I1 ~( |& ]3 tudhcpc -i wlan0 >/var/udhcpc_log &( Q% r6 J% @  J3 W% V
EOF
  k- F- U! o7 U9 ?" ?( s' a: I粘贴到开发板然后按回车,如下图所示 。- r2 k/ x! g% w, N# O

# e2 P1 K. [% x+ ~  M或者在开发板上执行我们提供的“make_mt6620.sh”,起到同样效果。" T6 K+ S- F" w
然后执行以下指令3 N/ E; l9 O2 N1 H/ v" C' Q
wpa_passphrase XXX "YYY" > /etc/wpa_supplicant.conf& E  B# j3 i; z9 p6 I7 r6 S
其中 XXX 代表 WiF 网络名称, YYY 代表 WPA-PSK 或者 WPA2-PSK 加密的密码。然后执行命令“ ./etc/init.d/mt6620 ”即可连接到 WiFi 网络,配置时间大约 30 秒左右。
1 \# ?+ X" T  ^; J  Y' `- p- F( k: H+ p+ k. y
可以看到 wlan0 成功分配到 IP 地址,关闭了 eth0,执行命令“ping www.baidu.com -c 4”,可以看到可以通过 WiFi 连通互联网,如下图所示。
8 U& C) Q. J  S$ H# Z
* H6 U% A) @  U5 X1 M
) J6 m* g+ _5 u- e* B
: W( f' T. S3 ^& k( I) ^
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

推荐内容上一条 /1 下一条

EDA365公众号

关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

GMT+8, 2025-11-24 21:47 , Processed in 0.187500 second(s), 23 queries , Gzip On.

深圳市墨知创新科技有限公司

地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

快速回复 返回顶部 返回列表