木马派RV1106G3开发板驱动AIC8800DC USB WiFi模块
板子连线
串口接GND、RX2和TX2。
USB Type-C接口用来供电。
板子背面有一颗10脚芯片,嘉立创因为缺库存,没有给我贴,所以只能飞线,把RV1106G3芯片上的USB DP和DM与AIC8800DC WiFi模块的USB DP和DM相连,也就是3脚连9脚,4脚连8脚。
飞线后,板上的USB Type-C接口只能供电,没有USB功能。RV1106G3芯片的USB处于主机模式。
下载和编译幸狐官方系统镜像
虚拟机环境:Fedora 41 64位 (Fedora-Workstation-Live-x86_64-41-1.4.iso)
(为什么不用Ubuntu?因为我不喜欢Ubuntu修改后的unity风格的GNOME桌面环境,喜欢Fedora里面原生的GNOME环境)
下载代码:
cd ~/Documents
git clone https://gitee.com/LuckfoxTECH/luckfox-pico.git
cd luckfox-pico
安装编译工具:
sudo dnf install g++
sudo dnf install dtc
sudo dnf install openssl
sudo dnf install openssl-devel-engine
sudo dnf install flex
sudo dnf install bison
sudo dnf install makeinfo
sudo dnf install gperf
sudo dnf install cmake
sudo dnf install patch
sudo dnf install perl-English
sudo dnf install perl-ExtUtils-MakeMaker
sudo dnf install perl-Thread-Queue
sudo dnf install perl-FindBin
sudo dnf install lzma
(特别注意:编译前必须安装lzma,否则编译过程中不会提示错误,但烧录到板子上后uboot无法启动linux内核,报## Checking uboot 0x00200000 (lzma @0x00400000) ... sha256(e3b0c44298...) + uboot: decompress error, ret=1的错误)
编译:
./build.sh lunch
选择[5] RV1106_Luckfox_Pico_Pro
[1] SPI_NAND
[0] Buildroot
然后
./build.sh
(重要)解决make[1]: Entering directory '/home/oct1158/Documents/luckfox-pico/sysdrv/source/kernel'后长时间无输出,且编译内核失败时不显示错误信息的问题:
修改sysdrv/source/kernel/Makefile
删掉或注释掉下面的语句
ifneq ($(findstring s,$(filter-out --%,$(MAKEFLAGS))),)
quiet=silent_
endif
报错:Unknown option 'passive-ftp'
解决方案:用sed命令把buildroot生成的文件里面的--passive-ftp选项去掉。
cd sysdrv/source/buildroot/buildroot-2023.02.6
sed -i "s/wget --passive-ftp/wget/g" utils/genrandconfig Config.in output/build/buildroot-config/autoconf.h output/build/buildroot-config/auto.conf .config
cd ../../../../
报错:../src/tramp.c:262:22: error: implicit declaration of function 'open_temp_exec_file' [-Wimplicit-function-declaration]
解决方案:修改sysdrv/source/buildroot/buildroot-2023.02.6/output/build/host-libffi-3.4.4/src/tramp.c文件。在顶部添加一行
int open_temp_exec_file(void);
烧录镜像
在fedora虚拟机上安装samba服务器:
sudo setenforce 0
sudo systemctl stop firewalld
sudo dnf install samba
把/etc/samba/smb.conf里面的workgroup = SAMBA改成
workgroup = WORKGROUP
server min protocol = NT1
lanman auth = yes
ntlm auth = yes
(后面三句话是为了支持XP系统)
启动samba服务器:
sudo systemctl start smb
sudo systemctl start nmb
设置当前用户的文件共享密码(独立密码):
sudo smbpasswd -a $(whoami)
板子按住REV键上电。
在64位Windows 7 SP1系统下以管理员身份运行瑞芯微SocToolKit_v1.98_20240705_01_win烧录软件。
(该烧录软件不支持原版64位Windows XP SP2和64位Windows Vista SP2)
芯片选择RV1106。
搜索路径选择\\fedora\oct1158\Documents\luckfox-pico\output\image。
选择正确的串口号,波特率选择1500000。勾选所有文件(一共8个文件),点击下载按钮。
烧录完成后,板子按RST键重启,即可在串口中看到启动成功。登录用户名和密码分别是root和luckfox。
修改配置文件,添加对AIC8800DC USB WiFi模块的支持
[sysdrv/source/kernel/arch/arm/boot/dts/rv1106g-luckfox-pico-pro.dts]
&usbdrd_dwc3 {
status = "okay";
dr_mode = "peripheral"; 改成 dr_mode = "host";
};
[project/cfg/BoardConfig_IPC/BoardConfig-SPI_NAND-Buildroot-RV1106_Luckfox_Pico_Pro-IPC.mk]
末尾添加
# enable rockchip wifi
export RK_ENABLE_WIFI=y
export RK_ENABLE_WIFI_CHIP=AIC8800DW_USB
# config wifi ssid and passwd
# this will generate /etc/wpa_supplicant.conf
export LF_WIFI_SSID="路由器名称"
export LF_WIFI_PSK="路由器密码"
[sysdrv/drv_ko/wifi/insmod_wifi.sh]
删除下列代码
#aic8800
if [ -n "$(cat /proc/device-tree/model | grep "W")" ]; then
insmod cfg80211.ko
insmod libarc4.ko
insmod ctr.ko
insmod ccm.ko
insmod libaes.ko
insmod aes_generic.ko
insmod aic8800_bsp.ko
sleep 0.2
insmod aic8800_fdrv.ko
sleep 2
insmod aic8800_btlpm.ko
sleep 0.1
fi
改成
#aic8800
if [ -f /oem/usr/ko/aic8800_fdrv.ko ]
then
insmod /oem/usr/ko/cfg80211.ko
insmod /oem/usr/ko/aic_load_fw.ko aic_fw_path=/oem/usr/ko/aic_fw
insmod /oem/usr/ko/aic8800_fdrv.ko
fi
改完后重新编译并烧录,重启后板子已自动连上wifi。并且能ping通百度。
(整个过程完全不需要改内核的menuconfig)
瑞芯微工具套件v1.98的兼容性
瑞芯微SocToolKit_v1.98_20240705_01_win烧录软件在原版64位XP SP2系统下运行,会提示找不到comctl32.dll的LoadIconMetric函数,XP系统里面没有这个函数。
XP SP2系统打了one core api 4.0.1补丁后,可以运行这个烧录软件,但是无法选择文件夹路径(选择后路径不会填入文本框),只能自己手动输入路径。然而“搜索路径”按钮左边的文本框是个只读文本框,没有办法手动输入,所以这个功能没法用。
在64位Vista SP2系统下,因为Vista系统不支持CM_MapCrToWin32Err函数,所以软件无法运行。
所以,这个烧录软件最低需要64位的Win7系统才能运行。
生成的wpa_supplicant.conf配置文件内容
[root@luckfox root]# cat /etc/wpa_supplicant.conf
ctrl_interface=/var/run/wpa_supplicant
ap_scan=1
update_config=1network={ssid="xxx"psk="xxx"key_mgmt=WPA-PSK
}
[root@luckfox root]#