openwifi · 2021年02月01日

one man army(孤胆英雄)2 - WiFi芯片开放的不同层次

接上篇的WiFi固件,这里有几个概念需要澄清:

可编程VS可配置:一个东西可编程意味着你可以在上面跑你写的程序,一个东西可配置意味着你只是用你写的外部程序(比如驱动)去配置它和实时的控制它,比如配置它的成百上千个寄存器,进而实时控制它的行为、模式等。例如单片机开发中有上位机(PC)下位机(单片机)的概念。这个下位机(也就是单片机)是可编程的,当你的下位机编程完成和成熟后,你主要做的就是通过上位机去配置和控制下位机,而不再对下位机编程。WiFi芯片在大多数系统里就是一个可配置但不可编程的下位机。

开源的设计VS开源的驱动:openwifi发布后,有不少人跑过来说,某某WiFi芯片就是开源的。我仔细一看,其实是驱动和API/SDK开源,芯片设计本身并不开源,我们看不到芯片的RTL代码和芯片里的固件代码。

WiFi芯片的固件是跑在芯片内的处理器上,但一般说来这个程序并不负责WiFi信号的调制解调等需要大量数字信号处理(DSP)计算的操作(比如同步、信道估计、均衡、MIMO处理、解调、解码、CRC校验等一系列物理层信号处理操作)。这个程序更多的是起到状态控制的作用。

比如,主机要通过WiFi发送的包通过DMA来到了芯片,这个固件程序可能会读取一下WiFi调制解调硬件模块的状态(比如正在接收?正在发射?idle?信道中有其他信号正在传输?),然后决定这个包是暂时缓存起来还是直接送给WiFi调制器?缓存起来还要决定缓存到哪个队列。因为芯片里可能有几个包缓存队列,当信道空闲时,不同队列的发送优先级是不同的。
这个程序可能还需要一直跟踪CSMA/CA的操作(NAV的计算,倒计时,随机退让等),决定何时才是自己这个节点的发送机会。
这个程序可能还需要检查解调出的WiFi包的一些字段,决定是否DMA送给主机(比如目标MAC地址是否自己,主机给芯片配置的包过滤规则是什么,CRC是否错误,等等)。
所以这个WiFi芯片内的处理器和固件充当的更多是芯片“管家”的工作,而不是亲自干“重体力劳动”:OFDM调制解调、DMA传输等。

值得强调的是,这个WiFi芯片内的处理器和固件也可以用直接写数字逻辑状态机来代替。此时这个WiFi芯片就是一个不含处理器的全固化的ASIC。比如openwifi现在就不包含处理器,上述“管家”功能全是FPGA内的状态机实现。

openwifi发布后,不少人也跑过来说,esp32这样的wifi芯片也是开放的,而且十分便宜,因此openwifi根本没有竞争力。这其实是一种误解,搞错了对于芯片层次架构的理解。esp32里的WiFi部分的设计我个人认为并不是开放的(当然肯定是可配置的)。下面谈谈我对于esp32芯片(乐鑫,上海)的理解(可能有误,毕竟不是业内人士,欢迎指正):
esp32.jpg

在ESP32的框图中,radio部分主要就是模拟电路(可能还包含了ADC、DAC)。Wi-Fi baseband和Wi-Fi MAC合在一起就是WiFi芯片了,我认为WiFi芯片内部的固件(如果包含处理器)并不是开放的,也就是用户无法编程的。用户可编程的部分(也就是开放的部分,文档、SDK一应俱全)是Xtensa LX6 microprocessor。这个Xtensa上的用户程序需要调用周围一大堆的外设(包含WiFi和蓝牙)和外部世界通信、互动,因此文档和SDK主要是关于这一大堆外设的寄存器定义、API、例程等等。而openwifi则不同,openwifi的FPGA里包含了Wi-Fi baseband和Wi-Fi MAC(low MAC,即实时部分),这部分的设计是开源的用户可更改/编程的!openwifi里的ARM处理器则扮演了类似esp32里的Xtensa的角色。可见openwifi和esp32最大的不同就是Wi-Fi baseband和Wi-Fi MAC的设计是开放的而且用户可修改的(对FPGA重新编程)。

最近大火的基于RISC-V的BL602 WiFi芯片(博流智能,南京),也是和esp32类似的架构。下面也谈谈我对BL602的理解(可能有误,毕竟不是业内人士,欢迎指正):
bl602.jpg

其实从BL602的图看出基本思路和esp32是类似的,只不过把Xtensa LX6 microprocessor换成了最近很热的RISC-V处理器,用户程序就跑在RISC-V上。而WiFi和蓝牙部分的设计并不是开放的,也并不是用户可编程的。当然, 为了方便用户使用和开发,丰富的文档和SDK会详细的告诉大家如何实时配置和控制WiFi,但用户是不可能看到和更改WiFi本身的设计的。

未完待续。

推荐阅读
关注数
2192
内容数
35
开源Wi-Fi芯片openwifi项目相关技术进展,欢迎加入
目录
极术微信服务号
关注极术微信号
实时接收点赞提醒和评论通知
安谋科技学堂公众号
关注安谋科技学堂
实时获取安谋科技及 Arm 教学资源
安谋科技招聘公众号
关注安谋科技招聘
实时获取安谋科技中国职位信息