1. WLAN 驱动框架概述
WLAN 是基于 HDF(Hardware Driver Foundation)驱动框架开发的模块,该模块可实现跨操作系统迁移、自适应器件差异、模块化拼装编译等功能。从而降低 WLAN 驱动开发的难度,减少 WLAN 驱动移植和开发的工作量。
本文主要分析 WLAN 驱动架构的组成和各部件的功能,以及快速适配方法。
2. WLAN 驱动框架
WLAN 驱动框架组成:
驱动架构主要由 Module、NetDevice、NetBuf、BUS、HAL、Client 和 Message 这七个部分组成。
Module
Module 基于 HDF 驱动框架实现 WLAN 框架的启动加载、配置文件的解析、设备驱动的初始化和芯片驱动的初始化等功能,根据 WLAN 的功能特性,划分 Base、AP、STA 等部件,对控制流的命令和事件进行统一管理。
NetDevice
NetDevice 用于建立专属网络设备,屏蔽不同 OS 的差异,对 WIFI 驱动提供统一接口,提供统一的 HDF NetDevice 数据结构,及其统一管理、注册、去注册能力;对接富设备上的 Linux 的网络设备层;对接轻设备上的 Linux 的网络设备层。
NetBuf
NetBuf 部件为 WLAN 驱动提供 Linux 或者 LiteOS 原生的网络数据缓冲的统一数据结构的封装以及对网络数据的操作接口的封装,框架如下图所示:
BUS
BUS 驱动模块向上提供统一的总线抽象接口。通过向下调用 Platform 层提供的 sdio 接口和封装适配 usb、pcie 接口,屏蔽不同操作系统的差异;通过对不同类型的总线操作进行统一封装,屏蔽不同芯片差异,能够对不同芯片厂商提供完备的总线驱动功能,不同厂商共用此模块接口,从而使厂商的开发更为便捷和统一,框架如下图所示:
HAL
HAL 部件对 WiFiService 模块提供标准的 WIFI-HDI 接口和数据格式定义,提供能力如下:设置 MAC 地址、设置发射功率、获取设备的 MAC 地址等。
Client
Client 部件实现用户态与内核态的交互,通过对 sbuf 及 nl80211 做不同适配,根据产品做配置化编译,从而实现对上提供统一的接口调用,框架如下图所示