openwifi · 2020年05月20日

openwifi全面升级,扩展至64位ARM平台,ping延迟低于400us!

v2-2e792f66c5ee1c516993438900f229c6_1200x500.jpg

已将openwifi平台扩展到Xilinx ZCU102开发板(四核ARM Cortex-A53 1.2GHz,Zynq MPSoC芯片)花费了一个多月的时间。我原以为只需要1到2周。在此之前支持的各种开发板都是Zynq 7000芯片,大都是双核Cortex-A9,最高800MHz。

努力是值得的,在更高性能的平台上ping延迟大约只有之前的一半:小于400us。测试条件:zcu102当做 openwifi AP,用一台老的Thinkpad T420起ping(Intel迅驰芯片组WiFi)。
v2-bcc343bdc99646772470cca466a083dd_b.jpeg
openwifi github master https://github.com/open-sdr/o... 已更新,各位小伙伴可以考虑升级软件了。

主要解决的问题和遇到的困难:

  • 因为之前使用的老版本对zcu102的支持还处于很初级的阶段,所以这次升级ADI参考设计至最新的2019 R1,升级相应的Linux内核及驱动。相应的Vivado也升级到了2018.3。
  • 新的Vivado看起来改进(也可以说退步)了综合布局布线策略。原来没问题的设计现在出现很多timing violation。所以openwifi的进一步优化,改进了timing,进一步减少资源消耗,使得在新版Vivado下没问题。
  • Zynq MPSoC因为性能提升,各种pll配置更为复杂,对FPGA这边的pll缺省配置是125-250-500-1000MHz系列,而不是之前100MHz的倍数。也就是250MHz及以下,配置不到20MHz(WiFi基带采样率)的整数倍时钟频率。因此更改了openwifi的采样速率适配部分,使得它也支持非20MHz整数倍时钟频率。
  • AD9361和FPGA之间的高速LVDS接口。在Linux启动时,AD9361的驱动会做自动调优来选取这个接口的最优参数确保传输没有错误。居然被我碰到一块不太稳定的zcu102的板子,自动调优始终失败,因为程序在这一步无法找到合适的参数来保证无误传输。折腾了一周之后,放弃。换了另一块zcu102板子,竟然就可以了。不过这一周对于AD9361和FPGA之间高速LVDS接口软硬件适配有了更深入的了解,也算没有白白浪费。
  • 诡异的是,对另一块adrv9364z7020 SOM板子,老版参考设计在61.44MHz采样率下能够自动调优成功,但新版参考设计却只能在最高40MHz采样率下自动调优成功。看起来新的参考设计调优的判据更加苛刻,对于9364和7020这种低端射频和FPGA更不友好了。
  • 进一步优化文件组织和脚本。因为现在从软件的角度支持32bit和64bit两种平台,从硬件的角度支持6种FPGA板。内核、内核模块、驱动都需要两套。Linux设备树(devicetree),FPGA设计,ip库更是需要n套。每种平台下各个FPGA板使用的文件有交叉,时钟频率配置也有交叉。文件的组织既要清晰,又要尽可能避免重复代码。
  • 新的参考设计起始点,新的Vivado,新的设备树、驱动、内核,6块板子的FPGA设计都要一点点修改、跑实现、跑Linux测试。因为它们在新环境下各有各的“水土不服”。。。
  • 将openwifi打包为一个ip,这样对外接口看起来就比之前的“密密麻麻”干净许多,也方便用户的使用。

v2-32ab39866d2f413913fdbc1c10d7342a_b.png
以上就是openwifi近期更新。

此外近期有个新闻美国FCC在6GHz频段新分给WiFi 1200MHz频谱,这无疑会让5G设备商心头一紧。。。不得不说美国政府深谙搞平衡,引入竞争的好处。

原文发表于知乎:https://zhuanlan.zhihu.com/op...
更多OpenWifi芯片相关文章请关注开源芯片/FPGA设计
推荐阅读
关注数
2192
内容数
35
开源Wi-Fi芯片openwifi项目相关技术进展,欢迎加入
目录
极术微信服务号
关注极术微信号
实时接收点赞提醒和评论通知
安谋科技学堂公众号
关注安谋科技学堂
实时获取安谋科技及 Arm 教学资源
安谋科技招聘公众号
关注安谋科技招聘
实时获取安谋科技中国职位信息