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

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

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
本文档介绍 SDIO WIFI 在 6818 开发板,QtE 的移植方法,请注意:移植过程中的部分库和工具,在源码或者镜像中可能已经存在,大家可以使用自己生成的覆盖即可。提供的文件
$ H1 I  B  S4 ^( E7 o如下图所示,分别为三个源码压缩包、编译好的库位于 lib 文件夹、wpa_supplicant 工具位于 sbin 文件夹、6620_launcher 和脚本 make_mt6620.sh。
0 C3 s0 N- R& P3 K  {5 U% F' i9 y
% t+ w; D8 L2 Q( G# S0 D这里我们所使用的驱动模块对应在 Android 源码中的device/nexell/s5p6818_drone/mt6620_6818/目录下,用户只要在内核将 WiFi 设置为模块方式(M),然后编译 Android 源码之后可以5 `  S9 G* m) U9 o4 J! h
在该目录找到可以使用的驱动模块。同样所需驱动我们在 wpa_driver 文件夹直接提供,以方便使用。, z5 `9 s! @' f: Z" S0 p
1 6620_launcher
5 E' `7 L7 s1 R' q- o# |6620_launcher 工具是作为后台的一个服务程序运行,该服务会配置串口的工作参数,下载固件补丁到 MT6620 中,它位于开发板的“/usr/bin/”目录下,在系统中内置,用户可以直接覆盖。
4 K) [# N1 B! R2 移植 wpa_supplicant' b, C* m& k9 t8 r
在进行编译之前要先修改编译器为 4.3.2 版本,如何设置编译器参见手册 7.1 章节“Qt/E4.7.1 编译器的安装”。另外为了避免使用环境变量设置编译器而可能出现的问题,文档中大部分编译是使用编译器的绝对路径,用户也应先找到自己编译器的绝对路径待用。下图是本次编译使用的编译器以及编译器压缩包。# V1 p/ N! `4 r7 ?" t7 K. O

5 i+ e9 h& H3 y5 X% ^" m' f0 G3 g由上图可知该编译器的绝对路径为“/usr/local/ARM/4.3.2/bin/ arm-none-linux-gnueabi-gcc”。+ m  g8 d! [5 W9 C  z. {  @
用户需要将提供的源码压缩包拷贝到 Ubuntu 的工作目录,分别解压 ,如下图所示。
( Y% q7 u9 @5 U# n; [6 C$ L8 B; m( L# z/ g
2.1 移植 OpenSSL5 j' y$ w9 p2 @# q" @% L5 v- g* a/ N5 m
首先进入目录 openssl-1.1.0g,内容如下图所示。
7 o$ m7 c' e$ \" k$ j# [! |1 Z( D: J8 ]# g+ U9 O
执行下面指令,做相应配置。% H, O1 {& H$ @/ K
./config no-asm shared --prefix=$(pwd)/__install
* s( h! Y) H+ d* h* O2 ~; s执行完成后如下图所示。, a( g5 n# H& F& m
0 B8 C7 j. b3 d% W# V7 N. \
no-asm: 是在交叉编译过程中不使用汇编代码代码加速编译过程,原因是它的汇编代码是不支持 arm 格式。
% x" V5 I) w$ U& }5 q9 P! Oshared :生成动态连接库。--prefix :指定 make install 后生成目录的路径,不修改此项则默认为 OPENSSLDIR 目录(/usr/local/ssl)。# x3 Y" q! N' r
使用命令“vim Makefile”打开 Makefile,搜索 CFLAG,定位到下图中所示位置。
6 M8 O) Q* d+ t: d! T3 i# }4 u/ J0 y; b6 H( e
删除上图中红框中的“-m64”,完成后 CFLAG 应如下图所示。  H% }; s+ v4 n: t

4 p$ H2 H6 }2 ^7 A9 p执行以下命令,编译 OpenSSL 库,注意这里使用的是交叉编译器的绝对路径。) Z1 ?" l) d( K, A
make CROSS_COMPILE=/usr/local/arm/4.3.2/bin/arm-none-linux-gnueabi-" u5 n; B1 f$ Q8 K; X% ]3 U
编译完成后如下图所示。/ Q1 B: g$ w8 v1 k( j" w3 u
. v0 _+ z5 P% ]- R& _
执行下面命令,将编译好的库文件拷贝到第一步指定的目录
  \% {( f/ r: C5 z# ymake install$ M8 A+ d  `/ e5 r9 P6 ?; C
如下图所示在当前目录下的__install 目录下生成了头文件和库文件:, U. C( U+ F# T5 |- B9 N; a

5 _1 z: L  p5 Kinclude 下文件在编译程序的时候需要指定该 include 的路径。而 lib 下在程序运行时会用到,需要将 lib 下所有文件包括文件夹拷贝到开发板/lib 文件夹中。
. U" j6 h! }7 b% H& {1 h, n/ b' S6 }2.2 移植 libnl
: r" l# J* W6 ~: O) Z% klibnl 是为了方便应用程序使用 netlink 接口而开发的一个库。这个库为原始 netlink 消息传递以及不同的 netlink family 专用接口提供了一个统一的接口。进入目录“libnl-1.1.4/”,如下图所示。: D! {0 s5 T5 M: G% b8 n' k$ x

) c3 v7 P; C+ w4 e  U8 R执行下面的指令,配置编译架构。% f  Q0 O' s! C
./configure --prefix=$(pwd)/__install --enable-shared --enable-static
% p! r! G) @3 p0 f0 Q& k9 o: e其中--prefix=$(pwd)/__install 指定了编译出来的库存放的路径,一般将其放在当前目录下的__install 目录下,执行结果如下图所示。7 M4 y6 O! i& b. o
; j1 ?& Y* w& ]4 G
执行下面的命令,编译库
9 P1 G$ u2 C; A4 Z/ Q" `( Wmake CC=/usr/local/arm/4.3.2/bin/arm-none-linux-gnueabi-gcc
% {8 r& y- f  @7 W完成后如下图所示。
% K  H6 [* M' u6 w$ ]3 n2 ]* o  Q1 `
使用命令“make install”, 将编译好的库文件拷贝到指定目录。在当前目录下的__install目录下生成了头文件和库文件 ,如下图所示。) I- ~& s- `0 _1 Q

$ p9 w4 g5 H- |- y8 a$ n! Vinclude 目录下文件在编译程序的时候会用到,而 lib 下在程序运行时会用到。故在移植hostapd 的时候需要指定 include 的路径,需要将 lib 目录下所有文件包括文件夹拷贝到开发板中的/lib 文件夹中。5 P3 l* k7 j% F$ X
2.3 移植 wpa_supplicant
& e1 v! v" P# J  y/ q. jwpa_supplicant 是作为 hostap 的一部分,它位于 hostap 目录中。使用命令“cdhostap/wpa_supplicant/”进入 wpa_supplicant 目录,如下图所示。
0 _$ h' @8 K) j5 l' x' f, W) }" o
" q/ V5 ]1 W- v- P3 A' O8 `. k$ v使用命令“cp defconfig .config”复制一份默认的配置文件。然后使用命令“vimMakefile”修改 Makefile,如下图所示。0 G5 ?* ?8 B3 ^) ]2 |
1 B9 f: N. X+ ^2 h2 z, v8 b* {2 a! R

  T5 e* b8 K; v$ bifndef CC/ J1 \8 ^: e" b* M4 o0 x7 _
CC=gcc0 r5 D- l+ T0 ~
endif
0 K* t8 G# n/ d4 S修改为
8 f% k' }8 Z+ Z5 RCFLAGS += -I../../libnl-1.1.4/__install/include/. L5 `+ x1 Y0 C0 b/ j; S
CFLAGS += -I../../openssl-1.1.0g/__install/include/
5 L# D5 E- n6 C# I' f4 n- ~' YLIBS += -L../../libnl-1.1.4/__install/lib/. \7 ~% ?0 z2 G8 Q! D; p
LIBS += -L../../openssl-1.1.0g/__install/lib/
) D/ W2 M3 c8 J, A/ ]6 h/ c- @#ifndef CC8 G+ ?; ?5 U8 j5 w$ M
CC=/usr/local/arm/4.3.2/bin/arm-none-linux-gnueabi-gcc
, q9 z( u8 }5 ?: p#endif
4 z- Q: e. }" o) J( M: f; W注意,CC 路径为自己环境中的交叉工具链路径。0 x5 _2 m! K+ e4 u! m7 D
修改完成后 Makefile 如下图所示。% U. `2 b, c, ~4 ]
. k" k- Q6 [! K
接下来使用命令“make”编译,结果如下图所示。
4 h3 P- ]5 n; l( v
* E4 M. ?6 E0 q( V此时在当前目录下出现了“wpa_supplicant”工具,如下图所示。
( k) _3 o0 P& `+ z- C7 w1 u( K; \: |, e; f( b4 Q
将编译好的 wpa_supplicant 工具拷贝到开发板上的“/usr/sbin”目录即可。- B( r4 K3 a; C5 v3 f! I* d9 x
3 直接拷贝9 B+ b! n- o% p9 Q- e" j
跳过编译步骤,可以直接拷贝压缩包中 lib 文件夹中的库文件到开发板的/lib 目录,以及复制 sbin 文件夹中的文件到开发板的/usr/sbin 目录,复制 6620_launcher 到开发板的/usr/bin 目录下,复制 wpa_driver 中的所有文件到/lib/modules/mt6620/目录,以及复制脚本 make_mt6620.sh 到开发板的任意目录,然后进行下一章节的操作。
/ Y7 Q. r: y8 O' e$ Q- V4 开发板连接 WiFi; U* j/ W0 w$ V* @
在开发板执行下面的指令,更新 WiFi 开机启动脚本。
1 |5 S1 P% A) q) W& J) _3 R: _; _) Ncat << EOF > /etc/init.d/mt6620
  R" {2 V/ r" k9 f' H#!/bin/sh6 y0 \2 E( |2 Z2 g5 D' f/ ~
#support MT6620 WIFI Module. D9 m( y" Q, P  y5 B9 L
mknod /dev/stpwmt c 190 0
. h- g* `- i& @2 }mknod /dev/stpgps c 191 0" n0 q: ?+ w  ~2 c% g
mknod /dev/fm c 193 0* f0 E# R6 F* |: p
mknod /dev/wmtWifi c 194 0
0 W7 C2 f1 v5 g$ ]; ainsmod /lib/modules/mt6620/mtk_hif_sdio.ko% m( l+ H. W9 C) w- A+ R6 q3 h& ~
insmod /lib/modules/mt6620/mtk_stp_wmt.ko+ B7 p8 ^% R3 S% k3 T8 C6 u
insmod /lib/modules/mt6620/mtk_stp_uart.ko
6 P7 J; ^. S0 ?7 [+ kinsmod /lib/modules/mt6620/mtk_stp_gps.ko
5 O; {: r4 m3 n. J# z#insmod /lib/modules/mt6620/hci_stp.ko! o, T  F, R; C' C5 }2 p
#insmod /lib/modules/mt6620/mt6620_fm_drv.ko
/ R/ Z8 E& L0 ^#insmod /lib/modules/mt6620/mtk_fm_priv.ko/ Z( f$ i- z& u! P' V$ u
insmod /lib/modules/mt6620/mtk_wmt_wifi.ko WIFI_major=1940 M2 B7 R0 q  m- a
insmod /lib/modules/mt6620/wlan_mt6620.ko
: x  N: K) F$ |5 z6 lchmod 0666 /dev/stpwmt1 L9 ]! l1 n" R; e7 I0 R2 D. A
chmod 0666 /dev/stpgps7 v( Q& ^! `0 P- N( Q" M
chmod 0666 /dev/fm, ~! n" L# X  j
chmod 0666 /dev/wmtWifi: H7 K0 ^* i( k
chmod 0666 /dev/gps  `; O  V  m0 B( F
chmod 0660 /dev/ttySAC2( Y3 Y( \$ @# x! ]% J8 d
/usr/bin/6620_launcher -m 1 -b 921600 -n /etc/firmware/mt6620_patch_hdr.bin -d /dev/ttySAC2 &
6 Q' t: s# u7 d7 B, H0 a  n0 w7 Esleep 4; L" U6 ^% Q* X  l( M
echo 1 > /dev/wmtWifi) u  |# e2 T0 @+ N3 J( T
wpa_supplicant -iwlan0 -Dnl80211 -c/etc/wpa_supplicant.conf &' o& B- R6 V/ c' U8 |
sleep 3- I+ v0 E1 y: N. y0 ~
udhcpc -i wlan0 >/var/udhcpc_log &0 W& J, p; o: |3 D* b" g0 }. @7 ^
EOF7 _" J2 h: s5 n1 v
粘贴到开发板然后按回车,如下图所示 。
/ h: d1 \. {: ]( y0 J" k! p- S- B' G. F4 d) M
或者在开发板上执行我们提供的“make_mt6620.sh”,起到同样效果。3 [  Q, o4 e% y, s
然后执行以下指令! R- x& B4 R0 {
wpa_passphrase XXX "YYY" > /etc/wpa_supplicant.conf, t/ G0 h$ B. T1 y! `6 ]( B
其中 XXX 代表 WiF 网络名称, YYY 代表 WPA-PSK 或者 WPA2-PSK 加密的密码。然后执行命令“ ./etc/init.d/mt6620 ”即可连接到 WiFi 网络,配置时间大约 30 秒左右。
: }" a& N2 S- Q, @. @7 K
: N2 {% P" y: ~可以看到 wlan0 成功分配到 IP 地址,关闭了 eth0,执行命令“ping www.baidu.com -c 4”,可以看到可以通过 WiFi 连通互联网,如下图所示。3 f- c4 u& z/ j- G% a

- O% ^3 a2 H( r; f8 C0 [( Z
% S4 s/ R4 C& {' b) t
  L. v" \4 l; O) K1 Q" V
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

EDA365公众号

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

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

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

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

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