【鸿蒙南向开发】OpenHarmony HDF WLAN驱动分析与使用

WLAN驱动概述

WLAN 是基于 HDF(Hardware Driver Foundation)驱动框架开发的模块,该模块可实现跨操作系统迁移、自适应器件差异、模块化拼装编译等功能。从而降低 WLAN 驱动开发的难度,减少 WLAN 驱动移植和开发的工作量。

本文主要分析 WLAN 驱动架构的组成和各部件的功能,WLAN 芯片厂商通过本框架如何进行各自驱动的开发,以及如何使用 HAL 接口。

WLAN驱动架构介绍

WLAN 驱动架构组成:

image.png

驱动架构主要由 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 原生的网络数据缓冲的统一数据结构的封装以及对网络数据的操作接口的封装,框架如下图所示:

image.png

BUS

BUS 驱动模块向上提供统一的总线抽象接口。通过向下调用 Platform 层提供的 sdio 接口和封装适配 usb、pcie 接口,屏蔽不同操作系统的差异;通过对不同类型的总线操作进行统一封装,屏蔽不同芯片差异,能够对不同芯片厂商提供完备的总线驱动功能,不同厂商共用此模块接口,从而使厂商的开发更为便捷和统一,框架如下图所示:

image.png

HAL

HAL 部件对 WiFiService 模块提供标准的 WIFI-HDI 接口和数据格式定义,提供能力如下:设置 MAC 地址、设置发射功率、获取设备的 MAC 地址等。

Client

Client 部件实现用户态与内核态的交互,通过对 sbuf 及 nl80211 做不同适配,根据产品做配置化编译,从而实现对上提供统一的接口调用,框架如下图所示:

image.png

Message

Message 部件为每个服务单独提供业务接口,每个服务也可依赖其他服务形成组合业务接口,此模块支持在用户态、内核态和 MCU 环境运行,实现了组件间的充分解耦。

image.png

WLAN驱动开发步骤与实例

各 WLAN 厂商驱动开发人员可根据 WLAN 模块提供的向下统一接口适配各自的驱动代码,实现如下能力:建立/关闭 WLAN 热点、扫描、关联 WLAN 热点等;

下面以 hi3881 WLAN 芯片为例,进行 WLAN 驱动开发过程的详解。

配置WLAN芯片的硬件参数

1)根据硬件参数,通过 wlan_platform.hcs 配置平台相关参数。

hisi :& deviceList {
    device0 :: deviceInst {
        deviceInstId = 0;
        powers {
            power0 {
                powerSeqDelay = 0;   /* 电源序列延时 */
                powerType = 1;       /* 电源类型:0--总是打开;1--GPIO */
                gpioId = 1;           /* GPIO管脚号 */
                activeLevel=1;       /* 有效电平:0--低;1--高 */
            }
            power1 {
                powerSeqDelay = 0;  /* 电源序列延时 *
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值