主要观点:
- 正在通过二进制代码块为 ESP32 提供 Wi-Fi 堆栈,尝试反向工程软件和硬件以构建自己的开源 Wi-Fi 堆栈,以实现现有闭源实现没有的功能(如 802.11s 网状网络)并提高代码的可审核性。
- 这是关于反向工程 ESP32 Wi-Fi 网络堆栈系列的第五篇文章,目标是构建自己的开源 MAC 层,此前已反向工程了用于发送和接收 Wi-Fi 数据包的硬件寄存器等。
- 尚未处理 Wi-Fi 外设的初始化,目前是让二进制代码块初始化硬件,之后替换 Wi-Fi 中断等,最终要反向工程并重新实现无线电初始化。
- 同时可开始实现 Wi-Fi MAC 堆栈,负责扫描 AP、认证/关联 AP 等,可参考 FreeBSD 的 802.11 代码,目前已能发送/接收数据包和配置数据包过滤器,但不能配置其他数据包参数。
关键信息:
- 为 ESP32 提供 Wi-Fi 堆栈的方式及目标。
- 系列文章的进度及已完成的工作。
- 硬件初始化的主要函数及作用。
- 通过日志记录外设寄存器访问及转换为火焰图。
- 重新实现无线电初始化的方法及难度。
- MAC 堆栈的实现内容及目前的情况。
重要细节:
- 二进制代码块用于为 ESP32 提供 Wi-Fi 堆栈。
- 系列文章的前五篇及目标是构建开源 MAC 层。
esp_phy_enable
函数负责硬件初始化及射频校准等。- 通过补丁记录 Wi-Fi 相关外设寄存器访问及栈跟踪。
- 硬件初始化需 53286 次外设访问,发送 Wi-Fi 数据包约需 10 次。
- 可通过火焰图可视化硬件初始化过程。
- 重新实现无线电初始化的方法是逐个替换函数并测试。
- MAC 堆栈负责的具体功能及目前的实现状态。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。