【米联客-F3P-CZ02-7020]无线通信方案实战:WiFi + 4G 模块驱动配置全流程详解
一、前言
随着物联网(IoT)与嵌入式 AI 的快速普及,越来越多的嵌入式平台需要具备无线通信能力。WiFi、4G/LTE 等无线通信技术凭借其便携性和广泛的覆盖能力,成为工业控制、边缘计算、智能设备等场景的首选方案。
本文以 米联客 F3P-CZ02-7020 开发板(基于 Xilinx Zynq-7020 SoC)为载体,详细记录在该平台上配置并验证 WiFi(AIC8800 系列) 和 4G(移远 Quectel) 两种无线通信方案的完整流程,包括驱动移植、内核配置、文件系统构建以及实际联网测试。
二、WiFi 方案(AIC8800D80)
2.1 AIC8800 芯片简介
AIC8800 系列是 AICSEMI(上海赤霄科技) 推出的一款高集成度 WiFi+蓝牙 SoC,支持 IEEE 802.11a/b/g/n/ac 标准,最高支持 WiFi 5(802.11ac),通过 USB 接口与主机通信,非常适合嵌入式 Linux 平台外挂使用。
其驱动架构由两个内核模块组成:
aic_load_fw.ko:负责将 WiFi 固件上传到芯片aic8800_fdrv.ko:WiFi 主功能驱动,注册wlan0网络接口
2.2 驱动配置步骤
Step 1:放置驱动源码
将厂商提供的 aic8800 驱动目录复制到内核源码的无线驱动目录下:
bash
# 驱动源码路径
cp -r aic8800/ <SDK>/sources/linux/drivers/net/wireless/
随后修改该目录下的 Kconfig 和 Makefile,将新驱动纳入内核构建系统。
Kconfig 添加示例:
kconfig
if WLAN
config WIRELESS_WDS
bool "mac80211-based legacy WDS support" if EXPERT
help
This option enables the deprecated WDS support, the newer
mac80211-based 4-addr AP/client support supersedes it with
a much better feature set (HT, VHT, ...)
We plan to remove this option and code, so if you find
that you have to enable it, please let us know on the
linux-wireless@vger.kernel.org mailing list, so we can
help you migrate to 4-addr AP/client (or, if it's really
necessary, give up on our plan of removing it).
source "drivers/net/wireless/admtek/Kconfig"
...
source "drivers/net/wireless/aic8800/Kconfig" ← 添加这一行
Makefile 添加示例:
makefile
obj-$(CONFIG_AIC8800_WLAN) += aic8800_fdrv/
obj-$(CONFIG_AIC_LOAD_FW) += aic_load_fw/
Step 2:开启内核驱动配置
在菜单中找到以下路径并开启:
Networking support
└── Wireless
└── [*] cfg80211 wireless extensions compatibility ← 选中
Device Drivers
└── Network device support
└── Wireless LAN
└── [*] AIC wireless Support
└──[M] AIC8800 wlan Support ← 设为模块编译
└──[M] AIC8800 Load Firmware Support ← 设为模块编译
保存配置。
2.3 编译与烧录
完整编译流程请学习《3-4-1_米联客2024版ZYNQ-Linux课程(基础入门篇).pdf》,这里就不一一赘述了。
编译完成后,将以下文件复制到 TF 卡 rootfs 分区:
| 文件 | 说明 |
|---|---|
aic_load_fw.ko |
固件加载模块 |
aic8800_fdrv.ko |
WiFi 主驱动模块 |
aic8800D80/ |
AIC8800D80 固件目录 |
2.4实验验证
板卡上电后,执行以下步骤完成 WiFi 联网:
1. 准备固件并加载驱动
bash
# 创建固件目录并复制固件(以下命令是在root权限下运行)
mkdir -p /vendor/etc/firmware
cp -r aic8800D80/* /vendor/etc/firmware/
# 加载固件上传模块
insmod aic_load_fw.ko
# 加载 WiFi 主驱动
insmod aic8800_fdrv.ko
如图所示为加载驱动成功:
2. 确认网络接口注册
bash
ifconfig
# 应能看到 wlan0 接口
wlan设备名称不一定是wlan0,如下为我的设备:

3. 配置 WiFi 连接信息
因为现在的无线wifi网络大多是wpa加密,所以需要wpa_supplicant工具。插入ps网口,输入人以下命令:
bash
apt update
apt install wpa_supplicant
接着配置wif连接信息:
bash
touch /etc/wpa_supplicant/wpa_supplicant.config
vi /etc/wpa_supplicant/wpa_supplicant.config ->编辑 wifi 连接配置(ssid 为名字,psk 为密码)
写入以下内容(替换为你的 SSID 和密码):
ctrl_interface=/var/run/wpa_supplicant
ap_scan=1
update_config=1
network={
ssid="你的WiFi名称"
psk="你的WiFi密码"
key_mgmt=WPA-PSK
}
4. 启动认证进程并获取 IP
bash
# 启动 WPA 认证(后台运行)(其中 wlan0请根据 ifconfig 下 wifi 实际名称来)
wpa_supplicant -iwlan0 -Dnl80211 -c /etc/wpa_supplicant.conf/wpa_supplicant.conf &
# 通过 DHCP 获取 IP 地址
udhcpc -iwlan0
5. 测试网络连通性
bash
ping www.baidu.com
2.5 网络不稳定问题修复
若 WiFi 联网后出现频繁断线或丢包严重的问题,原因在于 USB 分片数据未被正确重组,导致数据包超长触发驱动保护机制。
修复方法:在 aic8800_fdrv/Makefile 中找到以下配置项并修改:
makefile
# 修改前
CONFIG_USB_RX_REASSEMBLE = n
# 修改后
CONFIG_USB_RX_REASSEMBLE = y
💡 原理说明:
CONFIG_USB_RX_REASSEMBLE=y开启后,驱动会在接收侧对 USB 分片数据进行重组,确保上层协议栈收到的数据包长度合法(≤1600 字节),从而解决分片导致的数据异常问题。
三、4G 模块方案(移远 Quectel)
3.1 方案概述
本方案使用 移远(Quectel)系列 4G 模块,通过 USB 接口连接至开发板。该模块在 Linux 下通过 GobiNet 驱动创建 usb0 网络接口,配合移远官方拨号工具 quectel-CM 实现 4G 网络连接。
GobiNet 是高通(Qualcomm)Gobi 系列模块采用的 USB 网络驱动,移远模块兼容该协议,支持以 NDIS/QMI 方式进行 4G 数据拨号。
3.2 驱动配置步骤
Step 1:替换 USB 驱动文件
将厂商提供的 USB 驱动(含 GobiNet 适配版本)覆盖到内核源码中:
bash
cp -r <4G驱动目录>/usb/ <SDK>/sources/linux/drivers/net/usb/
Step 2:编译拨号工具 quectel-CM
bash
cd Quectel_QConnectManager_Linux_V1.6.7/
make
# 生成 quectel-CM 可执行文件
quectel-CM 是移远官方提供的 Linux 端拨号管理工具,负责:
- 与 4G 模块建立 QMI 通信
- 发送拨号 AT 指令
- 配置
usb0网络接口的 IP 信息
Step 3:开启内核 USB 网络驱动
在菜单中开启以下选项:
Device Drivers
└── Network device support
└── USB Network Adapters
└── [*] Multi-purpose USB Networking Framework ->选中
└── USB support
└── USB Serial Converter support
└── [*] USB driver for GSM and CDMA modems ->选中
3.3 编译与烧录
编译流程与 WiFi 方案相同,额外将以下文件复制到 TF 卡 rootfs 分区:
| 文件 | 说明 |
|---|---|
GobiNet.ko |
4G 模块网络驱动 |
quectel-CM |
移远拨号工具(可执行文件) |
3.4 硬件连接
- 将 4G 模块插入板卡的 USB 接口
- 在板卡背面 SIM 卡槽中插入有效的 SIM 卡(支持 4G 网络)
3.5 实验验证
1. 确认设备识别
bash
ls /dev/
# 应看到 /dev/ttyUSB0、/dev/ttyUSB1 等设备节点
# 表明 4G 模块已被系统正确识别
2. 加载驱动并拨号
bash
# 加载 GobiNet 驱动(以下命令为root权限下)
insmod GobiNet.ko
# 启动拨号(自动完成网络注册和 IP 配置)
./quectel-CM ->输完命令多等待几秒
3. 确认网络接口
bash
ifconfig
# 应看到 usb0 接口并已获取 IP 地址
4. 测试网络连通性
bash
ping www.baidu.com
四、两种方案对比
| 对比维度 | WiFi(AIC8800D80) | 4G(移远 Quectel) |
|---|---|---|
| 接口类型 | USB | USB |
| 网络类型 | IEEE 802.11 a/b/g/n/ac | LTE / 4G |
| 覆盖范围 | 局域网(≈100m) | 广域网(全国) |
| 移动性 | 受热点位置限制 | 不受地理限制 |
| 延迟 | 低(≤10ms) | 中(20~60ms) |
| 带宽 | 高(理论 433Mbps) | 中(下行 150Mbps) |
| 月租费用 | 无(需有热点) | 需购买流量套餐 |
| 典型应用 | 室内设备、工厂内网 | 野外、移动、无热点场景 |
五、总结
本文完整演示了在 米联客 F3P-CZ02-7020(Zynq-7020) 开发板上部署两种无线通信方案的全流程:
- WiFi 方案(AIC8800D80):通过 USB 接入,支持 WPA2 加密,适合局域网无线接入,注意开启
CONFIG_USB_RX_REASSEMBLE以保证稳定性。 - 4G 方案(移远 GobiNet):通过
quectel-CM拨号,支持广域网接入,适合户外或无固定网络环境。
两种方案均采用内核模块(.ko)方式加载,无需修改内核本体,具有良好的可移植性和灵活性,可根据实际应用场景灵活选择或组合使用。
注:根据原理图,米联客 F3P-CZ02-7020 USB A 口默认用作Host模式,使用WIFI,4G模块要将跳线帽跳至Host模式。另外WIFI和4G模块驱动源码可至米联客论坛下载,下载地址为:https://www.uisrc.com/t-6587.html
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐



所有评论(0)