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

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

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
本文档介绍 SDIO WIFI 在 6818 开发板,QtE 的移植方法,请注意:移植过程中的部分库和工具,在源码或者镜像中可能已经存在,大家可以使用自己生成的覆盖即可。提供的文件
6 n, N' m0 q1 |如下图所示,分别为三个源码压缩包、编译好的库位于 lib 文件夹、wpa_supplicant 工具位于 sbin 文件夹、6620_launcher 和脚本 make_mt6620.sh。# d' X, w/ o) q$ i: u* E! l- ]
& r7 J/ {$ \7 u$ y7 d
这里我们所使用的驱动模块对应在 Android 源码中的device/nexell/s5p6818_drone/mt6620_6818/目录下,用户只要在内核将 WiFi 设置为模块方式(M),然后编译 Android 源码之后可以
8 C* f8 B1 `# B, Q在该目录找到可以使用的驱动模块。同样所需驱动我们在 wpa_driver 文件夹直接提供,以方便使用。
' m9 D- X% K  |9 N, }1 E' {1 6620_launcher
0 h( p4 d6 E3 m. A" R6620_launcher 工具是作为后台的一个服务程序运行,该服务会配置串口的工作参数,下载固件补丁到 MT6620 中,它位于开发板的“/usr/bin/”目录下,在系统中内置,用户可以直接覆盖。  i- C3 w- y8 i# E- T
2 移植 wpa_supplicant( V5 Q' y2 ~6 L. v+ ^+ Y3 x' W" j
在进行编译之前要先修改编译器为 4.3.2 版本,如何设置编译器参见手册 7.1 章节“Qt/E4.7.1 编译器的安装”。另外为了避免使用环境变量设置编译器而可能出现的问题,文档中大部分编译是使用编译器的绝对路径,用户也应先找到自己编译器的绝对路径待用。下图是本次编译使用的编译器以及编译器压缩包。- X2 `9 n" p' N5 z

/ g" x0 t% L' U6 P由上图可知该编译器的绝对路径为“/usr/local/ARM/4.3.2/bin/ arm-none-linux-gnueabi-gcc”。
& q: ]- \% ^# F# F% L1 m用户需要将提供的源码压缩包拷贝到 Ubuntu 的工作目录,分别解压 ,如下图所示。
, w& I% c0 G. B$ ^" L
4 I" [$ w' B: I2 G' P2.1 移植 OpenSSL
" a2 e' p( [7 v  `首先进入目录 openssl-1.1.0g,内容如下图所示。8 I3 B, ^, p* ?/ u. q- u- X! _

  z/ r( I$ Y8 p5 G执行下面指令,做相应配置。7 t6 M6 ^9 T+ g/ W& a+ U* D& \' j
./config no-asm shared --prefix=$(pwd)/__install
: P' j; o1 U& b% M. J; {* Q3 s执行完成后如下图所示。
- [  G: f3 q% K. K& S3 o7 G: B9 y! q+ C9 x! g
no-asm: 是在交叉编译过程中不使用汇编代码代码加速编译过程,原因是它的汇编代码是不支持 arm 格式。  b) N9 F/ g% O2 k$ P
shared :生成动态连接库。--prefix :指定 make install 后生成目录的路径,不修改此项则默认为 OPENSSLDIR 目录(/usr/local/ssl)。, ?. T- v" E: }' H3 n; `
使用命令“vim Makefile”打开 Makefile,搜索 CFLAG,定位到下图中所示位置。
6 L# H5 i8 [% [) a" }0 C: A  y$ z+ s* t1 h
删除上图中红框中的“-m64”,完成后 CFLAG 应如下图所示。8 d! I" H7 O. z0 ~0 p0 `' S& J

! I9 Q. K0 E) Z! \" A+ @7 m执行以下命令,编译 OpenSSL 库,注意这里使用的是交叉编译器的绝对路径。
) d9 o5 C  n, _: J. _make CROSS_COMPILE=/usr/local/arm/4.3.2/bin/arm-none-linux-gnueabi-
% S) D$ v8 J! h4 c4 m9 C编译完成后如下图所示。
- H( n# p$ F7 m; v; L) }4 c' f) m/ a$ i' C3 r- H
执行下面命令,将编译好的库文件拷贝到第一步指定的目录
5 }6 d: ?' X4 ?9 ~make install
. C, J1 v1 L2 {1 D! k如下图所示在当前目录下的__install 目录下生成了头文件和库文件:
% s! C5 `* [8 c3 q" e8 d8 S& W3 A% Q8 H& d- b. n
include 下文件在编译程序的时候需要指定该 include 的路径。而 lib 下在程序运行时会用到,需要将 lib 下所有文件包括文件夹拷贝到开发板/lib 文件夹中。
! |1 m) O) h% v2.2 移植 libnl
: d! ?% d, {4 _) j* {5 g  qlibnl 是为了方便应用程序使用 netlink 接口而开发的一个库。这个库为原始 netlink 消息传递以及不同的 netlink family 专用接口提供了一个统一的接口。进入目录“libnl-1.1.4/”,如下图所示。" ^+ s, l9 H; C0 |( J6 Y+ P# f6 k

3 t- D2 j( l6 ?+ b# K! B执行下面的指令,配置编译架构。4 R& x2 l' s0 v1 u
./configure --prefix=$(pwd)/__install --enable-shared --enable-static
; O& V" ~% e2 t6 X3 w5 o其中--prefix=$(pwd)/__install 指定了编译出来的库存放的路径,一般将其放在当前目录下的__install 目录下,执行结果如下图所示。4 d4 V* z% O9 Q( P, Z# G

- q% b; ^  l& F* X3 A6 x$ x执行下面的命令,编译库4 N" a) {& b* R( P0 v6 @
make CC=/usr/local/arm/4.3.2/bin/arm-none-linux-gnueabi-gcc+ c( \% Q# e3 ]2 I% s7 n
完成后如下图所示。0 x+ L0 d# q6 p# Z
" y6 T/ l$ j1 N* U8 J" t
使用命令“make install”, 将编译好的库文件拷贝到指定目录。在当前目录下的__install目录下生成了头文件和库文件 ,如下图所示。5 _( Q1 h6 Q, X5 L9 e# M( w
& o9 ~9 r8 K; i
include 目录下文件在编译程序的时候会用到,而 lib 下在程序运行时会用到。故在移植hostapd 的时候需要指定 include 的路径,需要将 lib 目录下所有文件包括文件夹拷贝到开发板中的/lib 文件夹中。3 u4 l; ~- Q  B9 `. y
2.3 移植 wpa_supplicant  T. l  [. x$ b
wpa_supplicant 是作为 hostap 的一部分,它位于 hostap 目录中。使用命令“cdhostap/wpa_supplicant/”进入 wpa_supplicant 目录,如下图所示。
) s2 B) K# I# F' h1 B; d$ {
7 W1 U2 @5 D9 ~/ G使用命令“cp defconfig .config”复制一份默认的配置文件。然后使用命令“vimMakefile”修改 Makefile,如下图所示。4 o& k) C9 }2 v/ P
! c; K- ^! M" U
* {, A3 _+ ^4 }7 A
ifndef CC: Q+ _! f3 |/ P8 ~
CC=gcc
- \* U4 W0 q  l9 T; v1 v$ nendif
: G+ w+ U" e3 q3 ^修改为
8 h/ [: \9 r/ i! v4 U- g7 oCFLAGS += -I../../libnl-1.1.4/__install/include/
$ J4 n3 `/ F" x: E9 H  D7 DCFLAGS += -I../../openssl-1.1.0g/__install/include/5 o$ e4 \7 H1 _( {/ O; r. Q0 H
LIBS += -L../../libnl-1.1.4/__install/lib/, E- E2 _0 H- Y: V0 X
LIBS += -L../../openssl-1.1.0g/__install/lib/0 Q+ S" s9 V- S* k$ ~9 i
#ifndef CC
8 _( }  R8 J% n* x, m$ i' I% cCC=/usr/local/arm/4.3.2/bin/arm-none-linux-gnueabi-gcc: Y- k7 D7 X5 D, o" w9 `/ L
#endif! v7 j, K4 I; R& y& y
注意,CC 路径为自己环境中的交叉工具链路径。
3 c' N' N4 |% s9 L' x2 E- [修改完成后 Makefile 如下图所示。
/ [1 C3 I! n7 ~5 {8 a: \/ C$ t! i' O9 W1 `0 b# z  n; E
接下来使用命令“make”编译,结果如下图所示。
6 {$ U) k5 A0 i$ |
. M) R/ N- K) d' g9 V" s" G此时在当前目录下出现了“wpa_supplicant”工具,如下图所示。
$ s! E. `1 k& D5 o( Z7 W8 i/ s7 a4 S+ v9 u
将编译好的 wpa_supplicant 工具拷贝到开发板上的“/usr/sbin”目录即可。, `4 s2 m& Y! W6 o1 q
3 直接拷贝* b1 X1 D4 u; I- `% x  p
跳过编译步骤,可以直接拷贝压缩包中 lib 文件夹中的库文件到开发板的/lib 目录,以及复制 sbin 文件夹中的文件到开发板的/usr/sbin 目录,复制 6620_launcher 到开发板的/usr/bin 目录下,复制 wpa_driver 中的所有文件到/lib/modules/mt6620/目录,以及复制脚本 make_mt6620.sh 到开发板的任意目录,然后进行下一章节的操作。
9 D- f" I4 R4 x( s4 开发板连接 WiFi6 f; B  f* [8 ~+ N' q& T& Y7 J
在开发板执行下面的指令,更新 WiFi 开机启动脚本。
. H' A" I8 a( g; O# E) ^cat << EOF > /etc/init.d/mt66203 z1 O1 h) W5 _/ Z4 G
#!/bin/sh6 P/ r. e1 O! g& t
#support MT6620 WIFI Module
5 m9 d6 M: s2 l6 h/ Emknod /dev/stpwmt c 190 0
6 H  ~+ F( I6 I: w0 E# d- hmknod /dev/stpgps c 191 0
7 |; h. J+ L/ Z0 j1 u. i, y" Lmknod /dev/fm c 193 0& K2 d7 ~3 f% E+ u
mknod /dev/wmtWifi c 194 08 z) z# ^6 h& m: u3 [! B1 c
insmod /lib/modules/mt6620/mtk_hif_sdio.ko8 {% a) y" _; e  M5 I
insmod /lib/modules/mt6620/mtk_stp_wmt.ko' W- C  h* Y) ~. v% B0 _
insmod /lib/modules/mt6620/mtk_stp_uart.ko
$ v* ^& o: i. I7 h2 c4 V- winsmod /lib/modules/mt6620/mtk_stp_gps.ko
% s$ t8 Z5 o) v#insmod /lib/modules/mt6620/hci_stp.ko
$ {( Z& a' j. s#insmod /lib/modules/mt6620/mt6620_fm_drv.ko6 @5 I# Y7 h. g  o9 M- {
#insmod /lib/modules/mt6620/mtk_fm_priv.ko
6 V3 C7 F  V+ F) tinsmod /lib/modules/mt6620/mtk_wmt_wifi.ko WIFI_major=194
1 Q. X$ {* O9 t: p0 Z5 S  e  cinsmod /lib/modules/mt6620/wlan_mt6620.ko0 E7 Z2 D8 C6 k: _8 u1 e
chmod 0666 /dev/stpwmt
% L( {- _9 P2 i1 u7 R3 k" Kchmod 0666 /dev/stpgps
. c& B3 t/ a1 j& l2 }chmod 0666 /dev/fm/ r7 v  x4 ~( q$ {
chmod 0666 /dev/wmtWifi
% V( n, `* H8 }% C# H' `6 ~chmod 0666 /dev/gps8 E! N* N7 T7 L4 @2 K9 e; b
chmod 0660 /dev/ttySAC2
" _9 \+ @2 _' F7 J- q( Y/usr/bin/6620_launcher -m 1 -b 921600 -n /etc/firmware/mt6620_patch_hdr.bin -d /dev/ttySAC2 &
7 P# @# |2 [, W' T/ o! T  i8 N+ Ysleep 46 y2 T$ b7 [# M$ U# O. D, G
echo 1 > /dev/wmtWifi9 S; h* Y9 [9 K$ O9 X, ]
wpa_supplicant -iwlan0 -Dnl80211 -c/etc/wpa_supplicant.conf &
2 `8 ?: x7 s2 e; c: ^# Psleep 3
6 u- f4 ~' y( X  s4 Tudhcpc -i wlan0 >/var/udhcpc_log &
& A. q5 M2 C& ?1 y6 V9 sEOF
) I6 A9 `# G! i7 q粘贴到开发板然后按回车,如下图所示 。
6 W: D3 m+ `0 y) u/ ~' |2 U$ T: V) z+ ^! j. G
或者在开发板上执行我们提供的“make_mt6620.sh”,起到同样效果。% F2 l3 y2 D" p  F9 b( C! Z. L) ?
然后执行以下指令, @9 Q9 P8 ?) l
wpa_passphrase XXX "YYY" > /etc/wpa_supplicant.conf7 B7 h. }0 v- Y. a5 @: B) N4 O0 a
其中 XXX 代表 WiF 网络名称, YYY 代表 WPA-PSK 或者 WPA2-PSK 加密的密码。然后执行命令“ ./etc/init.d/mt6620 ”即可连接到 WiFi 网络,配置时间大约 30 秒左右。3 e7 S) Y- _: v
- r0 y' p/ b: S( ?, y
可以看到 wlan0 成功分配到 IP 地址,关闭了 eth0,执行命令“ping www.baidu.com -c 4”,可以看到可以通过 WiFi 连通互联网,如下图所示。
( _% q! Y& Y$ i6 V2 T& I: G/ d( k" b% K) ]% `7 d* z; G2 M

; M7 a! S9 a$ n9 ^5 J
. ~( G# ?0 J  i) v* x$ Q* I$ Q
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

EDA365公众号

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

GMT+8, 2025-6-27 05:39 , Processed in 0.093750 second(s), 23 queries , Gzip On.

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

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

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