為ELF 2開發(fā)板適配AX200NGW Wi-Fi 6模塊,是開發(fā)者在嵌入式設(shè)備中實(shí)現(xiàn)高速無線聯(lián)網(wǎng)的實(shí)際需求,更是解鎖其全場景無線通信能力的關(guān)鍵升級。針對ARM架構(gòu)需要手動適配的特性,本文將提供清晰的步驟,指導(dǎo)屏幕前的小伙伴完成這一適配過程。
?
方法一:重新制作鏡像文件
該方法是在SDK源碼中,將內(nèi)核編譯生成的模塊文件部署到文件系統(tǒng)中,打包生成新的系統(tǒng)鏡像update.img,重新燒寫系統(tǒng)鏡像后WiFi模塊驅(qū)動自動加載。
?
1. 準(zhǔn)備工作
方法一的所有操作均在開發(fā)環(huán)境的SDK中進(jìn)行,實(shí)施前需要將SDK完整拷貝至開發(fā)環(huán)境并解壓。具體操作步驟可參考《ELF 2開發(fā)板編譯手冊》第四章的詳細(xì)說明。

?
2. 創(chuàng)建掛載目錄
在源碼根目錄下創(chuàng)建用于掛載文件系統(tǒng)的文件夾 mnt_dir。
elf@ubuntu:~/work/ELF2-linux-source$?mkdir mnt_dir?
?
3. 掛載文件系統(tǒng)
將ubuntu目錄下的jammy-rootfs.img文件拷貝到源碼根目錄下。
elf@ubuntu:~/work/ELF2-linux-source$?cp ubuntu/jammy-rootfs.img ./?
?
執(zhí)行如下命令將jammy-rootfs.img文件系統(tǒng)掛載到mnt_dir/目錄下。
elf@ubuntu:~/work/ELF2-linux-source$?sudo mount jammy-rootfs.img mnt_dir/
?
4. 編譯和安裝內(nèi)核模塊
選擇平臺和文件系統(tǒng)類型,輸入1選擇elf2平臺,再輸入1選擇desktop文件系統(tǒng)。
elf@ubuntu:~/work/ELF2-linux-source$?./build.sh chip
?
編譯內(nèi)核。
elf@ubuntu:~/work/ELF2-linux-source$?./build.sh kernel?
?
安裝模塊到掛載的文件系統(tǒng)。
elf@ubuntu:~/work/ELF2-linux-source$?sudo make -C /home/elf/work/ELF2-linux-source/kernel/?CROSS_COMPILE=prebuilts/gcc/linux-x86/aarch64/gcc-arm-10.3-2021.07-x86_64-aarch64-none-linux-gnu/bin/aarch64-none-linux-gnu-?ARCH=arm64 modules_install?INSTALL_MOD_PATH=$(pwd)/mnt_dir?
?
5. 部署必要文件
將WiFi連接腳本cmddemo_wifi.sh以及熱點(diǎn)創(chuàng)建腳本cmddemo_hostap.sh拷貝到文件系統(tǒng)中。
elf@ubuntu:~/work/ELF2-linux-source$?sudo cp cmddemo_wifi.sh ./mnt_dir/usr/bin/?elf@ubuntu:~/work/ELF2-linux-source$?sudo cp cmddemo_hostap.sh ./mnt_dir/usr/bin/?
?
給予文件可執(zhí)行權(quán)限。
elf@ubuntu:~/work/ELF2-linux-source$?sudo chroot ./mnt_dir /bin/bash -c?"chmod +x?/usr/bin/cmddemo_wifi.sh"?elf@ubuntu:~/work/ELF2-linux-source$?sudo chroot ./mnt_dir /bin/bash -c?"chmod +x?/usr/bin/cmddemo_hostap.sh"
?
6. 卸載和燒錄
修改完成后,取消掛載文件系統(tǒng)。
elf@ubuntu:~/work/ELF2-linux-source$?sudo umount ./mnt_dir?
?
參考《ELF 2開發(fā)板編譯手冊》“5.3 單獨(dú)更新內(nèi)核”章節(jié),將修改后的jammy-rootfs.img燒錄到開發(fā)板。
(注意: jammy-rootfs.img鏡像文件的燒錄起始地址應(yīng)設(shè)置為0x00078000。)

7. lsmod查看是否有模塊加載
開發(fā)板斷電,將AX200NGW 模塊安裝到 M.2 接口,連接天線開發(fā)板上電。使用lsmod查看是否有模塊加載,有模塊加載說明上述操作沒有問題。
root@elf2-desktop:/usr/lib/modules# syncroot@elf2-desktop:/usr/lib/modules# reboot//重啟之后使用lsmod查看root@elf2-desktop:~# lsmodModule ? ? ? ? ? ? ? ? ?Size ?Used byiwlmvm ? ? ? ? ? ? ? ?331776??0iwlwifi ? ? ? ? ? ? ??286720??1?iwlmvmbtusb ? ? ? ? ? ? ? ? ?57344??0btrtl ? ? ? ? ? ? ? ? ?24576??1?btusbbtbcm ? ? ? ? ? ? ? ? ?24576??1?btusbbtintel ? ? ? ? ? ? ? ?28672??1?btusb

?
8. 測試
查看有模塊加載后,執(zhí)行如下命令測試 WiFi 連接。
//root@elf2-desktop:~# cmddemo_wifi.sh -s SSID -p password?//SSID:熱點(diǎn)名稱; password:熱點(diǎn)密碼。root@elf2-desktop:~# cmddemo_wifi.sh -s forlinx -p 03123102650Device?'wlan0'?successfully activated?with?'81a9889a-44e1-4c47-9b49-c90850ca96ff'.//撥號成功之后ping下elfboard官網(wǎng),能ping通說明WiFi可以正常使用root@elf2-desktop:~# ping www.51meinv.cn -c 5PING www.51meinv.cn (211.149.236.219)?56(84)?bytes?of data.64?bytes?from?211.149.236.219?(211.149.236.219): icmp_seq=1?ttl=53?time=32.2?ms64?bytes?from?211.149.236.219?(211.149.236.219): icmp_seq=2?ttl=53?time=32.0?ms64?bytes?from?211.149.236.219?(211.149.236.219): icmp_seq=3?ttl=53?time=32.0?ms64?bytes?from?211.149.236.219?(211.149.236.219): icmp_seq=4?ttl=53?time=31.9?ms64?bytes?from?211.149.236.219?(211.149.236.219): icmp_seq=5?ttl=53?time=32.3?ms--- www.51meinv.cn ping statistics ---5?packets transmitted,?5?received,?0% packet loss, time 4005msrtt?min/avg/max/mdev =?31.948/32.074/32.266/0.140?ms

?
方法二:拷貝模塊到文件系統(tǒng)
1. 在文件系統(tǒng)解壓
將內(nèi)核模塊歸檔文件5.10.209.tar通過u盤拷貝到Ubuntu系統(tǒng)的/usr/lib/modules/路徑下,然后提取歸檔內(nèi)容:
root-desktop:~# cp?/run/media/sda1/5.10.209.tar?/usr/lib/modulesroot-desktop:~# cd?/usr/lib/modulesroot-desktop:/usr/lib/modules# tar xvf?5.10.209.tar ?
?
2. 完成之后保存重啟
root@elf2-desktop:/usr/lib/modules# syncroot@elf2-desktop:/usr/lib/modules# reboot
?
3. lsmod查看是否有模塊加載
開發(fā)板斷電,將AX200NGW模塊安裝到M.2接口,連接天線開發(fā)板上電。 使用lsmod查看是否有模塊加載,有模塊加載說明上述操作沒有問題。
//重啟之后使用lsmod查看root@elf2-desktop:~Module ? ? ? ? ? ? ? ? ?Size ?Used?byiwlmvm ? ? ? ? ? ? ? ?331776??0iwlwifi ? ? ? ? ? ? ??286720??1?iwlmvmbtusb ? ? ? ? ? ? ? ? ?57344??0btrtl ? ? ? ? ? ? ? ? ?24576??1?btusbbtbcm ? ? ? ? ? ? ? ? ?24576??1?btusbbtintel ? ? ? ? ? ? ? ?28672??1?btusb

?
4. 測試
拷貝撥號腳本cmddemo_wifi.sh到/usr/bin下面,執(zhí)行撥號腳本。
root@elf2-desktop:~# cp /run/media/sda1/cmddemo_wifi.sh /usr/bin///root@elf2-desktop:~# cmddemo_wifi.sh -s SSID -p password?//SSID:熱點(diǎn)名稱; password:熱點(diǎn)密碼。root@elf2-desktop:~# cmddemo_wifi.sh -s forlinx -p 03123102650Device?'wlan0'?successfully activated?with?'81a9889a-44e1-4c47-9b49-c90850ca96ff'.//撥號成功之后ping下elfboard官網(wǎng),能ping通說明WiFi可以正常使用root@elf2-desktop:~# ping www.51meinv.cn -c 5PING www.51meinv.cn (211.149.236.219)?56(84)?bytes?of data.64?bytes?from?211.149.236.219?(211.149.236.219): icmp_seq=1?ttl=53?time=32.2?ms64?bytes?from?211.149.236.219?(211.149.236.219): icmp_seq=2?ttl=53?time=32.0?ms64?bytes?from?211.149.236.219?(211.149.236.219): icmp_seq=3?ttl=53?time=32.0?ms64?bytes?from?211.149.236.219?(211.149.236.219): icmp_seq=4?ttl=53?time=31.9?ms64?bytes?from?211.149.236.219?(211.149.236.219): icmp_seq=5?ttl=53?time=32.3?ms--- www.51meinv.cn ping statistics ---5?packets transmitted,?5?received,?0% packet loss, time 4005msrtt?min/avg/max/mdev =?31.948/32.074/32.266/0.140?ms

通過上述標(biāo)準(zhǔn)化流程,即可在ELF 2開發(fā)板上實(shí)現(xiàn)適配AX200NGW Wi-Fi 6模塊。期待本文所分享的技術(shù)實(shí)踐,能為從事嵌入式開發(fā)的工程師與高校師生提供有價值的參考,如果在實(shí)踐中遇到問題,歡迎隨時交流探討!
