海思3518E開發——移植wifi模組到開發板(聯發科7601)
前邊已經實現村裡通了4g網,可是▄█▀█●流量太貴,看片傷不起,那必須上wifi呀!
一、資料獲取
二、修改MAKEFILE
在211行的位置,修改LINUX_SRC為核心目錄原始碼的位置,
修改LINUX_COMPILE為交叉編譯器的位置。如下圖所示。
修改完成後執行make編譯。
想改載入的無線網絡卡名字可以在include/rtmp_def.h裡修改,修改如下所示。
不想修改的話預設編譯出來網絡卡名字為ra0.
編譯完成,因為我們沒有修改makefile設定為arm系列,所以編譯出來在os/linux 目錄下。
如圖所示,我們編譯出來的驅動為mt7601Usta.ko。拷貝到開發板上。我這裡放到了/mylib目錄下,其他目錄也可以。
載入驅動,使用 ismod mt7601Usta.ko 既可以載入驅動,載入完成,執行ifconfig -a 可以看到ra0。說明無線網絡卡驅動已經載入成功。
和4g模組驅動同樣的,驅動載入成功還沒有連線wifi。這裡就要請出 wpa_supplicant了
wpa_supplicant是wifi客戶端(client)加密認證工具,wpa_supplicant支援wep、wpa、wpa2等完整的加密認證
繼續移植,交叉編譯
官網獲取原始碼
我這裡使用的是wpa_supplicant-2.7.tar.gz
1、解壓原始碼包tar xvzf wpa_supplicant-2.7.tar.gz
2、cd wpa_supplicant-2.7/wpa_supplicant
3、拷貝預設配置cp defconfig .config
4、開啟.config 需要修改的配置如下
CONFIG_DRIVER_WEXT=y //使用WEXT通過ioctl和驅動通訊,典型工具ifconfig等 CONFIG_DRIVER_NL80211=y //使用NL80211通過一個特殊的socket和驅動打通訊,典型工具包括 iwconfig等,使能該選項時應指定libnl庫,移植libnl請參考libnl3.2 移植。 CFLAGS += -I../../libnl-3.2.25/install/include/ // CONFIG_DRIVER_NL80211=y時。需指定libnl標頭檔案 LIBS += -L../../libnl-3.2.25/install/include/ // CONFIG_DRIVER_NL80211=y時,需指定libnl庫 CONFIG_LIBNL32=y // CONFIG_DRIVER_NL80211=y時,需指定libnl庫版本 CC = arm-hisiv300-linux-gcc // 配置編譯器 CONFIG_TLS = internal // 配置TLS實現,可選有openssl、internal,選擇penssl時需指定openssl庫,移植步驟請參考Openssl 移植,由於開發板flash空間較小,出於節省空間的考慮,選擇 internal CONFIG_INTERNAL_LIBTOMMATH = y //CONFIG_TLS = internal時,需使能 CFLAGS += -I../../openssl-1.1.1/install/include/ // CONFIG_TLS = openssl時。需指定openssl標頭檔案 LIBS += -L../../lopenssl-1.1.1/install/include/ // CONFIG_TLS = openssl時,需指定openssl庫
5、執行make編譯
6、將可執行程式wpa_supplicant、wpa_cli拷貝到開發板檔案系統/usr/bin/目錄下,使用chmod命令修改可執行許可權
7、在開發板/etc 目錄下建立開發板的配置檔案。
內容如下,填寫對應的wifi名字和密碼。
ctrl_interface=/var/run/wpa_supplicant
network={
proto=WPA
key_mgmt=WPA-PSK
ssid="wifi名"
psk="wifi密碼"
}
8、執行wpa_supplicant -i ra0 -B -c /etc/wpa_supplicant.conf。既可以連線wifi。
9、實現開機自動載入驅動,並啟動wifi連線。修改/etc/init.d 下的配置
如圖所示。最後一個udhcpc為dhcp,自動獲取ip。需要在busybox配置dhcp功能。