路灯网关

说 WiFi Chip 之前先说一个我三年前做过的项目:路灯网关(好吧,我承认我的思维很跳跃)。其结构是这样的:

路灯网关

核心由一个主处理器(Linux)和一个协处理器(STM32)构成,二者通过串口通信。

这里只讲下系统升级功能,Linux 的 APP 升级就不需要讲了,太容易了。给 STM 32 进行升级,采用的方案是:STM32 整体固件由两部分组成,bootloader 和 application。通过主处理器从云端下载 application 的二进制文件,然后通过串口给 STM32 进行升级。这样就能够对整套系统进行迭代升级。

华丽的分割线


嵌入式 Linux 整体结构

一直以来致力于嵌入式 Linux 系统开发,对嵌入式 Linux 整体结构较为熟悉,大致如下:

嵌入式 Linux 整体结构

带 WiFi 芯片的嵌入式 Linux 整体结构

具体的,一个带 WiFi 芯片的嵌入式 Linux 整体结构如下:

嵌入式 Linux 整体结构-WiFi

其中,应用层程序WiFi 驱动进行交互,WiFi 驱动WiFi 芯片进行交互,构成一个完整的 WiFi 功能。

通信结构 && 配置结构

其实图中的 WiFi APP 承担的是配置 WiFi Driver 的作用,而不能算作通信结构,真正的通信结构是下图蓝色部分:

嵌入式Linux整体结构-WiFi-通信-配置

对应到 TCP/IP 参考模型

嵌入式Linux整体结构-WiFi-对应TCP-IP参考模型

WiFi Driver Vs WiFi Chip

在含有 WiFi 的 TCP/IP 参考模型中,数据链路层又被划分为 MAC 子层和 LLC 子层,LLC 子层在 WiFi Driver 中,那 MAC 子层是在 WiFi Driver 中还是在 WiFi Chip 中呢?

嵌入式Linux整体结构-WiFi-对应TCP-IP参考模型-MAC-LLC

SoftMAC or HardMAC

MAC 层使用三种类型的帧:管理帧、数据帧、控制帧。其中,802.11 标头中的帧控制字段用以标识特定的类型。

1.png

管理帧是由被称为 MLME(MAC 子层管理实体)的实体进行管理的。根据处理 MLME 的实体的运行位置的不同,我们可以将 WiFi Chip 的实现大体分为两种:SoftMAC,其中 MLME 在 Kernel 的WiFi Driver 中运行;HardMAC(也称为 FullMAC),其中 MLME 是以固件的形式嵌入在 WiFi Chip 中的。但实际情况要比这里说的要复杂得多,并且还存在一些混合实现形式,例如,Probe Req/Rsp 由 WiFi Driver 管理,而 Auth 和 Association 则归 WiFi Chip 固件处理。

MLME(MAC 子层管理)

SoftMAC —— SoftAP

HardMAC(FullMAC):功耗、性能

参考

Broadcom无线芯片组的逆向分析之旅

wifi 里面模块里面所说的firmware是指什么?

WiFi的Firmware和Nvram文件 WiFi芯片内部有一个小系统,用来运行802.11协议,此部分代码就叫Firmware。有些芯片(例如 broadcom)的Firmware是以文件的形式存放的,有些芯片(例如 realteck)的Firmware是做到驱动代码中的。 WiFi芯片需要作相应的RF参数校准,校准值等信息一般放到到Nvram中。

驱动和固件(driver和firmware)