BSP调试#16:WiFi-ap6256(全志T527)

本文以全志T527平台适配AP6256 Wi-Fi/蓝牙模组为核心,详细阐述硬件供电、时钟、复位与唤醒信号设计要点,以及Linux内核驱动路径、设备树(DTS)配置、rfkill射频管理、固件加载机制和wlan0节点生成问题的定位与解决。重点涵盖SDIO接口初始化、wl_regon/wl_hostwake电平验证、时钟使能修复及iw/wpa_supplicant功能验证流程。

BSP 调试 #16:WiFi-ap6256(全志 T527)

摘要:以全志 T527 平台为例,记录 AP6256 Wi-Fi 模组从硬件检查、设备树与内核配置,到固件加载、问题定位和功能验证的完整调试过程。

1. 调试前:硬件条件

AP6256 是同时集成 Wi-Fi 和蓝牙功能的模组:

  • Wi-Fi 默认使用 SDIO;
  • 蓝牙默认使用 UART。

Wi-Fi 模组正常工作的硬件条件如下:

条件要点
供电通常为两路:VCC-Wi-Fi 主电源和 VCCIO-Wi-Fi IO 上拉电源
使能WL-REG-ON 需输出高电平
通信接口可使用 USB、SDIO 或 PCIe,本文以 SDIO 为例;SDIO0~3 共 4 条数据线
唤醒主控WL-WAKE-AP 可用于唤醒主控,也可能作为主控接收数据的中断
主时钟依模组规格,可为 24/26/30/40/60 MHz
次时钟通常为 32.768 kHz,可能由模组内部生成,也可能由外部输入

2. 软件流程

Wi-Fi 通常有 4 种工作模式:

  1. station:连接无线网络的终端,也是最常用的模式;
  2. AP:无线接入点,即热点/路由器模式;
  3. monitor:混杂监听模式,将所有数据包不经过滤地传给主机;
  4. P2P:WLAN 直连,设备之间无需中间接入点即可连接。

整体流程为:

系统启动 → 驱动加载 → 服务加载 → 启动网卡 → 访问网络

Linux 使用标准 rfkill 子系统管理射频开关和使能。主控厂商需要按 rfkill 标准注册 Wi-Fi/BT 操作。在 Tina Linux 平台中,蓝牙相关实现位于:

linux-x.X/drivers/misc/sunxi-rf/sunxi_bluetooth.c

Linux 驱动遵循设备驱动模型。Linux 3.4 及以上版本通常将板级差异配置归纳到设备树 DTS 中,由驱动负责解析配置,从而实现“核心驱动不变、平台差异由 DTS 描述”。

3. 硬件设计注意事项

3.1 供电

蓝牙和 Wi-Fi 供电通常复用,分别为模组提供主电源和 IO 通信上拉。若电源来自 PMIC,软件需要配置 PMIC,使其对相应电源域输出稳定电压;若为直接供电,软件通常无需额外配置。

3.2 时钟
  • 主时钟:为蓝牙模块正常工作提供时钟源,可由外挂晶振或主控输出 24M/26M 等,具体取值以模组规格为准。
  • 次时钟(AP-CK32K-OUT):作为休眠时的辅助时钟。部分模组不要求该时钟,部分模组需要主控输出并在软件中使能。
3.3 复位与唤醒
  • BT-RESETN:主控 GPIO 输出的复位使能信号,蓝牙正常工作时需要拉高;
  • AP-WAKE-BT:主控控制蓝牙休眠/唤醒;
  • BT-WAKE-AP:蓝牙通过中断唤醒处于休眠状态的主控。

通常将 AP-WAKE-BT 配置为输出,将 BT-WAKE-AP 配置为中断输入。是否需要休眠唤醒配置,以具体模组规格为准。

3.4 接口
  • UART:蓝牙模组与主控之间的数据传输接口,软件侧通常只需打开实际使用的 UART;
  • PCM:蓝牙语音通话的音频接口,本文未使用。

4. 软件配置

4.1 驱动路径
rfkill 驱动路径:bsp/drivers/misc/sunxi-rf/sunxi-wlan.c
Wi-Fi 驱动路径:bsp/drivers/net/wireless/bcmdhd/*
4.2 DTS 配置

适配时需要手动配置 WL_REG_ON 和 WL_HOST_WAKE 两个引脚;SDIO 引脚沿用默认配置即可。

4.3 内核配置
CONFIG_BCMDHD=y
CONFIG_BCMDHD_FW_PATH="/lib/firmware/fw_bcm43456c5_ag.bin"
CONFIG_BCMDHD_NVRAM_PATH="/lib/firmware/nvram.txt"

将动译成模,还需要把固件加打路径:

./buildroot/buildroot/target/lib/firmware

并在 bcmdhd/dhd_linux.c 指定正确的件路径名称,例如将 DHD_FW_NAME 改为 CONFIG_BCMDHD_FW_PATH。

5. 调试过程
5.1 启动验证:网卡节点未成
用官方默认的 allwinner,sunxi-wlan 驱动动后没有成 wlan0 节点并报错。硬件检查发现:

  • wl_regon 为低电平,正常状态应为高电平;
  • wl_hostwake 为高电平,正常状态应为低电平。
    因此首先应正备树引脚配置和硬件电平状态,再继续排查件问题。
    5.2 题 1:固件载报错
    现象: 正确添件,固仍无加载。
    分析: 从错误信息看,固件文件名 不配。
    处: 将固件重为:
fw_bcm43456c5_ag.bin

该改决了对应的固件名错误,但 Wi-Fi 功能仍未全恢复,需要继续检时钟等硬件条
5.3 问题 2:时钟引脚没有输出
定位: SoC 的时钟脚没有输出。之前以该时钟为空贴、无使。
解决: 修复时钟问题,Wi-Fi 可正生成 wlan0 节点,连热点并 ping 外网。

6. 功证
6.1 扫描 Wi-Fi
iw 命令用于扫描附近的 Wi-Fi:

iw dev wlan0 scan | grep SSID

6.2 连接指定 Wi-Fi
在 wpa_supplicant.conf 中完成置,启动连:

wpa_supplicant -B -i wlan0 -c /wpa_supplicant.conf

6.3 启动 Wi-Fi 服务
行下面命令后才能使用 wifi -s:

wifi_daemon

7. 调总结

  1. 先硬件、后软件:确认供电、时、wl_regon 和 wl_hostwake 引脚状态正常后,再排驱动和固件。
  2. 固件通位于 /lib/firmware/;径或文件名错误会导致 wlan0 无法生成
  3. 关注两个关键:
  4. wl_regon 正常工作态高电平
  5. wl_hostwake 正常工作状态为低电平。
  6. Wi-Fi 驱动编译为 M 模块时会自动加载,而他模块不定自加载。中结论是:Wi-Fi模块的自动加载使用 udev 机制。

本文内容为试记录,具体引脚、源、时和固件名称请以实际 AP6256 模组规格书及硬件设计准。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值