Openwifi 开源项目解读(一)

这篇具有很好参考价值的文章主要介绍了Openwifi 开源项目解读(一)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Openwifi 是一个关于wifi 系统的开源项目,是一个少有的优秀的关于wifi的开源项目,项目中包括了wifi的基带、lowmac、linux驱动 等三部分,其中基带、lowmac部分是在FPGA中实现,wifi驱动部分是运行在Linux下,因此openwifi系统是一个运行在linux下的完整无线网卡实现版,因此对于希望学习wifi的协议中物理层实现部分或者想要了解无线网卡运行功能的同学有着极高的参考价值,由于作者将所有部分全部开源到github上,因此可以通过网址https://github.com/open-sdr/下载。更令人感到高兴的是这个项目的作者是一位中国人焦现军博士(在比利时)开发的,在此非常感谢焦博士能将此项目全部开源供大家学习。

      在解读openwifi之前还是要讲一下openwifi项目在github上的组成:

openwifi,C/C++,ARM,嵌入式设备,fpga开发,物联网,嵌入式硬件

  1. Openwifi      这是openwifi与linux的驱动部分源码和linux系统。
  2. Openwifi-hw   这是openwifi的FPGA部分源码,是硬件部分,也是lowmac部分。
  3. Openofdm    这是openwifi的基带部分源码,也是运行在FPGA中,最终集成到openwif-hw项目中,也算是openwif-hw的一部分( ip ) ,在这里单独作为一个工程更便于大家理解和学习。

Openwifi 的软件开发环境是vivado 2018 ,这款软件可以到赛灵思Xilins 公司官网上下载,我也打包了一份到百度网盘,也可以从 链接:百度网盘 请输入提取码 提取码:kau0  这里下载。Vivado 是赛灵思公司专为其FPGA芯片提供的集成开发软件,由于赛灵思公司提供的很多FPGA芯片既包含FPGA部分也集成了Arm核,因此vivado软件既可以对芯片FPGA进行开发,也可以对芯片上的Arm进行软件开发,因此开发起来非常方便,关于vivado 集成环境的使用,这里不是重点,需要学习的童鞋可以到网上搜寻相关视频教程。 openwfi项目就包含了FPGA硬件开发部分和Arm的软件开发部分(linux驱动)。补充一点,Openwifi工程的vivado环境即可以在linux下开发,也可以在windows下开发,根据兴趣各自选择,我是在linux和windows都编译运行通过。

不过各位如果只是想先试试openwifi的功能则不需要安装vivado开发环境,只是需要一个pc 机上的 linux系统环境 + 一块开发板(openwifi支持的开发板见后面列表)即可。

下图是openwifi项目整体功能框架图:

     openwifi,C/C++,ARM,嵌入式设备,fpga开发,物联网,嵌入式硬件                              (来自openwifi项目文档)

 

最上层是与linux接口 Linux mac80211 subsystem ieee80211_ips运行在arm中

SDR driver 是驱动部分,运行在arm 中的Linux中

FPGA 部分主要有七部分

  • 收发DMA
  • Xpu
  • Rx_intf
  • Tx_intf
  • Openofdm_tx
  • Openofdm_rx
  • Side_ch    这部分上面框图中没有体现

这张openwifi功能框图已经把各个功能都清晰的表示出来了,openwifi是一个运行在linux下的wifi项目,其功能就是无线网卡的整个功能, 简单讲openwif项目就是告诉我们如何构建一个无线网卡,并提供网卡在linux下的驱动,并能在linux下如同商业无线网卡一样的运行,提供wifi接入或链接服务。

在这里我就把功能框图中对应的代码路径总结一下,方便初学着快速找到对应部分的代码。

  1. 首先是linux驱动部分,这部分对应着 openwifi 工程:

openwifi,C/C++,ARM,嵌入式设备,fpga开发,物联网,嵌入式硬件

上图红圈点进去就是linux驱动工程,进入后内容如下图:

openwifi,C/C++,ARM,嵌入式设备,fpga开发,物联网,嵌入式硬件 

点击进入Driver,显示如下:

openwifi,C/C++,ARM,嵌入式设备,fpga开发,物联网,嵌入式硬件 

 

上图标识的是openwifi项目中与前面功能框图中对应的框图的驱动代码部分,注意这里是驱动部分的代码,款图的功能实现代码是在openw-hw工程中实现的,是verilog代码实现的,关于open-hw工程内容后面会逐一解读。

  1. 接下来是FPGA部分,就是openwifi-hw部分

openwifi,C/C++,ARM,嵌入式设备,fpga开发,物联网,嵌入式硬件 

准确的讲openwifi-hw部分还包括openofdm部分,openofdm 在openwifi-hw中作为一个ip出现,是wifi基带部分的实现。后面的讲解中就将openofdm作为openwifi-hw的一部分一起讲解。

 

点击 openwifi-hw进入就是openwifi的FPGA工程,即Openwifi项目的硬件实现部分。

openwifi,C/C++,ARM,嵌入式设备,fpga开发,物联网,嵌入式硬件

 

  • 点击ip就进入openwifi各个子框图功能文件夹,里面就是FPGA的verilog代码.

openwifi,C/C++,ARM,嵌入式设备,fpga开发,物联网,嵌入式硬件

  • 点击boards 就会显示openwifi支持的各种开发板的工程文件夹。

openwifi,C/C++,ARM,嵌入式设备,fpga开发,物联网,嵌入式硬件 

 

我的开发板是Zed_fmcs2 ,因此对应的是上图中红箭头所指示的文件夹,此文件夹里面就是vivado工程文件。

在对openwifi工程的学习中,首先需要安装vivado 2018.2的开发环境,这一步比较简单,大家参考网上的一下教程就可以顺利安装了。接下来最为关心的是如何能把openwifi整个系统跑起来,能够用手机链接上openwifi的热点进行进一步的了解学习。

要运行openwifi除了软件开发环境,还需要购买一块开发板,准确的说是两块开发板

一块是FPGA开发板,另一块是ad9361射频板,openwifi项目支持多种开发板:

板名

板组合

地位

SD卡映像文件

Vivado 许可证

zc706_fmcs2

Xilinx ZC706 板FMCOMMS2/3/4

完毕

32位图像

需要

zed_fmcs2

Xilinx zed板FMCOMMS2/3/4

完毕

32位图像

不需要_

adrv9364z7020

ADRV9364-Z7020 + ADRV1CRR-BOB

完毕

32位图像

不需要_

adrv9361z7035

ADRV9361-Z7035 + ADRV1CRR-BOB/FMC

完毕

32位图像

需要

zc702_fmcs2

Xilinx ZC702 板FMCOMMS2/3/4

完毕

32位图像

不需要_

蚂蚁博士

MicroPhase增强型 ADALM-PLUTO注释

完毕

32位图像

不需要_

zcu102_fmcs2

Xilinx ZCU102 板FMCOMMS2/3/4

完毕

64位图像

需要

zcu102_9371

Xilinx ZCU102 板ADRV9371

未来

未来

需要

上图是openwifi支持的开发板,点击后面的链接可以查看和购买。

我选用FPGA的开发板是zed_fmcs2 ,射频开发板是fmcomms2开发板。

上图中 【SD卡映像文件】 一栏对应你开发板的linux + openwif的系统映像文件。

下载你的开发板对应的映像文件,用映像文件制作一张启动SD卡后,将SD卡插入开发板的SD卡槽中,给开发板通电,再将板上的USB连线插入PC中,你就可以通过串口登录到开发板上,控制并运行openwifi了。

下一篇将仔细讲解如何制作SD卡,如何连结USB,以及如何登录到开发板并运行openwifi 网卡,并用手机登录openwifi热点验证openwifi的各项功能。文章来源地址https://www.toymoban.com/news/detail-782350.html

到了这里,关于Openwifi 开源项目解读(一)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 合肥中科深谷嵌入式项目实战——基于ARM语音识别的智能家居系统(二)

    目录 基于ARM语音识别的智能家居系统 练习一 一、程序编译 练习二: 二、文件IO 三、文件IO常用API接口函数 1、打开文件 open() 2、将数据内容写入文件 write() 3、关闭(保存)文件 四、编程示例 总结 我们上一篇讲了,关于Linux系统的一些质量,今天,我们实现在Linux系统

    2024年02月04日
    浏览(131)
  • 嵌入式相关开源项目、库、资料------持续更新中

    学习初期最难找的就是找学习资料了,本贴精心汇总了一些嵌入式相关资源,包括但不限于编程语言、单片机、开源项目、物联网、操作系统、Linux、计算机等资源,并且在不断地更新中,致力于打造全网最全的嵌入式资料库。有好的嵌入式相关资源的朋友欢迎做贡献,利人

    2024年02月02日
    浏览(47)
  • 嵌入式-stm32-基于HAL库的感应开关盖垃圾桶项目(开源)

    网盘资料: 《嵌入式-stm32-基于HAL库的感应开关盖垃圾桶项目(开源)》 链接:https://pan.baidu.com/s/1kFk09nMKPDvLwIUqMT9q3w 提取码:og66 –来自百度网盘超级会员V6的分享 一:项目概述 二:材料准备 三:细节分析(重点) 四:Stm32CubeMx操作步骤以及实现细节 五:Keil5业务逻辑代码编

    2024年02月03日
    浏览(68)
  • 嵌入式毕设分享 stm32的人体健康状态检测系统(项目开源)

    🔥 这两年开始毕业设计和毕业答辩的要求和难度不断提升,传统的毕设题目缺少创新和亮点,往往达不到毕业答辩的要求,这两年不断有学弟学妹告诉学长自己做的项目系统达不到老师的要求。 为了大家能够顺利以及最少的精力通过毕设,学长分享优质毕业设计项目,今天

    2024年03月22日
    浏览(78)
  • 嵌入式毕设分享 stm32与GSM的远程无线智能报警系统(项目开源)

    🔥 这两年开始毕业设计和毕业答辩的要求和难度不断提升,传统的毕设题目缺少创新和亮点,往往达不到毕业答辩的要求,这两年不断有学弟学妹告诉学长自己做的项目系统达不到老师的要求。 为了大家能够顺利以及最少的精力通过毕设,学长分享优质毕业设计项目,今天

    2024年02月20日
    浏览(88)
  • 嵌入式开发——ARM介绍

    ARM是一种芯片架构,由英国的ARM Holdings公司开发和授权,被广泛应用于各种嵌入式系统、移动设备和消费电子产品中。ARM架构被设计成低功耗、高性能、可定制化的特点,能够满足各种应用场景下的需求。 ARM架构主要设计了以下几个部分内容: 指令集架构 (Instruction Set Ar

    2024年02月04日
    浏览(69)
  • 嵌入式ARM设计编程(四) ARM启动过程控制

    文章和代码已归档至【Github仓库:hardware-tutorial】,需要的朋友们自取。或者公众号【AIShareLab】回复 嵌入式 也可获取。 一、实验目的 (1) 掌握建立基本完整的ARM 工程,包含启动代码,C语言程序等; (2) 了解ARM启动过程,学会编写简单的C 语言程序和汇编启动代码并进行

    2024年02月06日
    浏览(60)
  • 嵌入式学习---ARM时钟体系

    按 一定电压幅度 , 一定时间间隔 连续发出的脉冲信号。它是一个周期性的信号,每个周期内包含一个上升沿和一个下降沿。时钟脉冲的上升沿和下降沿通常用于触发和同步各个电子元件的操作,例如CPU的指令执行、数据传输、寄存器更新等。 时钟频率是指时钟脉冲的频率

    2024年01月16日
    浏览(62)
  • 嵌入式:ARM Day6

    目的:1.输入\\\'a\\\',显示\\\'b\\\',将输入的字符的ASCII码下一位字符输出            2.原样输出输入的字符串 源码: uart4.h  uart4.c main.c 结果1: 结果2: 

    2024年02月12日
    浏览(46)
  • ARM+LINUX嵌入式学习路线

    嵌入式学习是一个循序渐进的过程,如果是希望向嵌入式软件方向发展的话,目前最常见的是嵌入式Linux方向,关注这个方向,大概分3个阶段: 1、嵌入式linux上层应用,包括QT的GUI开发 2、嵌入式linux系统开发 3、嵌入式linux驱动开发 嵌入式目前主要面向的几个操作系统是,

    2024年02月02日
    浏览(64)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包