1. 程式人生 > >迅為iTOP-6818-開發板 QtE系統下的WiFi_mt6620移植方法筆記

迅為iTOP-6818-開發板 QtE系統下的WiFi_mt6620移植方法筆記

平臺:iTOP-6818開發板


     參考官網提供的移植文件自己移植的WIFI,很有成就感 (^_^), 移植過程中的部分庫和工具,在原始碼或者映象中可能已經存在,可以使用自己生成的覆蓋即可。提供的檔案如下圖所示,分別為三個原始碼壓縮包、編譯好的庫位於 lib 資料夾、wpa_supplicant 工具位
於 sbin 資料夾、6620_launcher和指令碼 make_mt6620.sh。







使用的驅動模組對應在 Android原始碼中的device/nexell/s5p6818_drone/mt6620_6818/
目錄下,使用者只要在核心將 WiFi設定為模組方式(M),然後編譯 Android原始碼之後可以
在該目錄找到可以使用的驅動模組。同樣所需驅動我們在 wpa_driver 資料夾直接提供,以方便使用。

1 6620_launcher
6620_launcher 工具是作為後臺的一個服務程式執行,該服務會配置串列埠的工作引數,下
載韌體補丁到 MT6620 中,它位於開發板的“/usr/bin/”目錄下,在系統中內建,使用者可以直接覆蓋。

2 移植wpa_supplicant
在進行編譯之前要先修改編譯器為 4.3.2 版本,“Qt/E4.7.1 編譯器的安裝”。另外為了避免使用環境變數設定編譯器而可能出現的問題,文
檔中大部分編譯是使用編譯器的絕對路徑,使用者也應先找到自己編譯器的絕對路徑待用。下圖是本次編譯使用的編譯器以及編譯器壓縮包。







由上圖可知該編譯器的絕對路徑為“/usr/local/arm/4.3.2/bin/ arm-none-linux-gnueabi-gcc”。
使用者需要將提供的原始碼壓縮包拷貝到 Ubuntu 的工作目錄,分別解壓 ,如下圖所示。









2.1 移植OpenSSL
首先進入目錄 openssl-1.1.0g,內容如下圖所示。






執行下面指令,做相應配置。
./config no-asm shared --prefix=$(pwd)/__install
執行完成後如下圖所示。





no-asm: 是在交叉編譯過程中不使用匯編程式碼程式碼加速編譯過程,原因是它的彙編程式碼
是不支援 arm 格式。
shared :生成動態連線庫。


--prefix :指定 make install 後生成目錄的路徑,不修改此項則預設為 OPENSSLDIR 目
錄(/usr/local/ssl)。
使用命令“vim Makefile”開啟 Makefile,搜尋 CFLAG,定位到下圖中所示位置。










刪除上圖中紅框中的“-m64”,完成後 CFLAG 應如下圖所示。












執行以下命令,編譯 OpenSSL 庫,注意這裡使用的是交叉編譯器的絕對路徑。
make CROSS_COMPILE=/usr/local/arm/4.3.2/bin/arm-none-linux-gnueabi-編譯完成後如下圖所示。










執行下面命令,將編譯好的庫檔案拷貝到第一步指定的目錄make install如下圖所示在當前目錄下的__install 目錄下生成了標頭檔案和庫檔案:








include 下檔案在編譯程式的時候需要指定該 include 的路徑。而 lib 下在程式執行時會
用到,需要將 lib 下所有檔案包括資料夾拷貝到開發板/lib 資料夾中。


2.2 移植libnl
libnl 是為了方便應用程式使用 netlink 介面而開發的一個庫。這個庫為原始 netlink 訊息
傳遞以及不同的 netlink family 專用介面提供了一個統一的介面。進入目錄“libnl-1.1.4/”,如下圖所示。












執行下面的指令,配置編譯架構。
./configure --prefix=$(pwd)/__install --enable-shared --enable-static
其中--prefix=$(pwd)/__install 指定了編譯出來的庫存放的路徑,一般將其放在當前目錄
下的__install 目錄下,執行結果如下圖所示。












執行下面的命令,編譯庫
make CC=/usr/local/arm/4.3.2/bin/arm-none-linux-gnueabi-gcc
完成後如下圖所示。












使用命令“make install”, 將編譯好的庫檔案拷貝到指定目錄。在當前目錄下的__install
目錄下生成了標頭檔案和庫檔案 ,如下圖所示。














include 目錄下檔案在編譯程式的時候會用到,而 lib 下在程式執行時會用到。故在移植
hostapd 的時候需要指定 include 的路徑,需要將 lib 目錄下所有檔案包括資料夾拷貝到開發
板中的/lib 資料夾中。




2.3 移植wpa_supplicant
wpa_supplicant 是作為 hostap 的一部分,它位於 hostap 目錄中。使用命令“cd
hostap/wpa_supplicant/”進入 wpa_supplicant 目錄,如下圖所示。












使用命令“cp defconfig .config”複製一份預設的配置檔案。然後使用命令“vim
Makefile”修改 Makefile,如下圖所示。










將ifndef CC CC=gcc  endif  修改為
CFLAGS += -I../../libnl-1.1.4/__install/include/
CFLAGS += -I../../openssl-1.1.0g/__install/include/
LIBS += -L../../libnl-1.1.4/__install/lib/
LIBS += -L../../openssl-1.1.0g/__install/lib/
#ifndef CC
CC=/usr/local/arm/4.3.2/bin/arm-none-linux-gnueabi-gcc
#endif
注意,CC 路徑為自己環境中的交叉工具鏈路徑。
修改完成後 Makefile如下圖所示。










接下來使用命令“make”編譯,結果如下圖所示。










此時在當前目錄下出現了“wpa_supplicant”工具,如下圖所示。








將編譯好的 wpa_supplicant 工具拷貝到開發板上的“/usr/sbin”目錄即可。


3 直接拷貝
跳過編譯步驟,可以直接拷貝壓縮包中 lib 資料夾中的庫檔案到開發板的/lib 目錄,以及
複製 sbin 資料夾中的檔案到開發板的/usr/sbin 目錄,複製 6620_launcher到開發板的
/usr/bin 目錄下,複製 wpa_driver 中的所有檔案到/lib/modules/mt6620/目錄,以及複製
指令碼 make_mt6620.sh 到開發板的任意目錄,然後進行下一章節的操作。


4 開發板連線WiFi
在開發板執行下面的指令,更新 WiFi開機啟動指令碼。


cat << EOF > /etc/init.d/mt6620
#!/bin/sh
#support MT6620 WIFI Module
mknod /dev/stpwmt c 190 0
mknod /dev/stpgps c 191 0
mknod /dev/fm c 193 0
mknod /dev/wmtWifi c 194 0
insmod /lib/modules/mt6620/mtk_hif_sdio.ko
insmod /lib/modules/mt6620/mtk_stp_wmt.ko
insmod /lib/modules/mt6620/mtk_stp_uart.ko
insmod /lib/modules/mt6620/mtk_stp_gps.ko
#insmod /lib/modules/mt6620/hci_stp.ko
#insmod /lib/modules/mt6620/mt6620_fm_drv.ko
#insmod /lib/modules/mt6620/mtk_fm_priv.ko
insmod /lib/modules/mt6620/mtk_wmt_wifi.ko WIFI_major=194
insmod /lib/modules/mt6620/wlan_mt6620.ko


chmod 0666 /dev/stpwmt
chmod 0666 /dev/stpgps
chmod 0666 /dev/fm
chmod 0666 /dev/wmtWifi
chmod 0666 /dev/gps
chmod 0660 /dev/ttySAC2
/usr/bin/6620_launcher -m 1 -b 921600 -n /etc/firmware/mt6620_patch_hdr.bin -d /dev/ttySAC2 &
sleep 4
echo 1 > /dev/wmtWifi
wpa_supplicant -iwlan0 -Dnl80211 -c/etc/wpa_supplicant.conf &
sleep 3
udhcpc -i wlan0 >/var/udhcpc_log &
EOF
貼上到開發板然後按回車,如下圖所示 。













或者在開發板上執行我們提供的“make_mt6620.sh”,起到同樣效果。
然後執行以下指令
wpa_passphrase XXX "YYY" > /etc/wpa_supplicant.conf
其中 XXX 代表 WiF網路名稱, YYY 代表 WPA-PSK 或者 WPA2-PSK加密的密碼。然後
執行命令“ ./etc/init.d/mt6620 ”即可連線到 WiFi 網路,配置時間大約 30 秒左右。












可以看到 wlan0 成功分配到 IP 地址,關閉了 eth0,執行命令“ping www.baidu.com -c 4”,可以看到可以通過 WiFi 連通網際網路,如下圖所示。












本文轉自迅為論壇:http://www.topeetboard.com