OpenWiFi简介与学习记录
最近在做毕设,学习SDR,OpenWiFi是一个很好的可以用来二次开发的开源平台,故简略记录一下。
1. OpenWiFi简介
OpenWiFi是一个基于zynq+AD9361的软件定义无线电(SDR)设计,是IEEE 802.11/WiFi协议的实现。作者是Jiao Xianjun。
该项目的GitHub网址:https://github.com/open-sdr/openwifi
其具有以下特性:
- 兼容IEEE 802.11n
- 20MHz带宽
- Ad-hoc, Station, AP, monitor模式
- 在FPGA实现CSMA/CA,10us SIFS
- ……
2. 框架
Zynq组合了一个双核ARM Cortex-A9 处理器和一个传统FPGA,架构中实现了工业标准的AXI接口,在芯片的两个部分之间实现了高带宽、低延迟的连接。Xilinx将其称为全可编程SoC。
OpenWiFi项目的PHY与low MAC在zynq中的Xilinx 7 系列架构FPGA中实现,ARM层实现了驱动,基于Linux mac80211 subsystem。
3. Quick Start
先不看具体的内容,跑起来再说。
OpenWiFi支持以上的开发板组合,我使用的是zedboard,下载相应的img文件。下载下来应是.img.xz格式,将img解压出来。准备一张SD卡,如果用的windows系统,用烧录软件如win32disk将镜像烧到SD卡里就行了。
将openwifi文件夹中符合自己板子的boot和devicetree以及uImage复制到根目录,插到zed板子上就可以运行了。看到板子上蓝色LED亮了。
4. 连接与配置
用zed的uart串口连上电脑,在mobaXterm中新建session,进入系统。运行fosdem.sh脚本就可以看到openwifi出现了,可以用手机和电脑连接上去。
5. Ad-hoc模式
在一快板子上运行sdr-ad-hoc-up.sh,另一个板子上运行sdr-ad-hoc-join.sh就可以进行点对点通信。脚本里的代码实际上就是配置了一下ip,essid,channel等参数。
ping一下,发现速度还可以。
6. 仔细研究
接下来可以研究一下OpenWifi的代码,以及在上层做一些优化、算法。
参考资料:
- Linux 80211mac subsystem: https://www.kernel.org/doc/html/v4.9/80211/introduction.html
- https://wireless.wiki.kernel.org/en/users