文章目录

  • 一、前言
  • 二、PL端的配置
  • 三、PS端的程序设计
    • 1、LWIP的UDP服务器模板介绍
      • readme
      • main.c
      • udp_perf_server
      • platform_zynqmp.c
    • 2、具体修改的代码
      • 库文件
      • 工程中的文件
        • main函数中添加:
        • udp_perf_server.c中添加
        • udp_perf_server.h中添加和删除:
  • 四、IPV4设置
  • 五、硬件测试
  • 六、总结

一、前言

继续将自己所做的练习做个小总结。知识还是要反复复习的。本次记录的是zynq部分的以太网传输模块,写两篇文章作为记录,这是第一篇,主要就是利用模板进行网络调试助手和PS端的简单通信。

二、PL端的配置

这部分就不多说了,zynq的配置部分根据开发板给的硬件资料图配置就行。以太网部分的配置如下图所示。

三、PS端的程序设计

重点记录下PS端的程序设计,理解方式上最好从顶层理解,为了实现方便,不用纠结一些函数的问题。

1、LWIP的UDP服务器模板介绍

建立工程的时候要选择udp_server模板,实际工程的源文件中只需要下图所示文件,有的文件打开全是阴影,就是预编译中不需要的代码,整个文件都是阴影当然删除没啥事,但是官方竟然给了就说明有其他用处,自己探索吧~~

readme

为啥我要把readme放在第一位呢,因为如果一开始硬看这些东西会没有头绪,看完官方的readme后可以知道,官方已经给你写完了大部分包括udp接收数据后计算出接收速率的report官方都编好了,虽然有些繁琐但确实好用~~

main.c

这个没啥说的,只需要看int main(void)当中的东西就好了,可以清除的看到代码思路,从初始化到进入大循环,每个函数怎么回事的可以按住ctrl去看,也可以实际单步运行看一下

udp_perf_server

这个就是包含了udp的初始化和回调函数,以及接收数据后回馈到串口的report(计算了接收速率等信息)

platform_zynqmp.c

这个是官方写好的定时中断,250ms中断一次,500ms中断一次,这个其实是TCP/IP协议栈所需要的,在此程序当中可以用超时来判断是否有DHCP连接,即网线连到了路由器。

2、具体修改的代码

具体代码里面主要讲一下修改的地方~

库文件

这里面需要将ksz9031的identifier和model number(查看手册,如下图)加入宏定义,并且获取phy速度函数也需要添加。

需要修改的两个库文件的位置在“X:\xxx\Vitis\2020.1\data\embeddedsw\ThirdParty\sw_services”
里面的
“lwip211_v1_2\src\contrib\ports\xilinx\netif”
中的文件
“xaxiemacif_physpeed.c”和“xemacpsif_physpeed.c”
我的是lwip211_v1_0,因为软件版本没那么高。

工程中的文件

本次要完成的简单工作是通过网络助手向PS端以太网发送数据,发送fanhui时,PS端会返回已接收到的数据,发送clear,PS端会清除已接收数据。

main函数中添加:


udp_perf_server.c中添加



下图中q没用到忘了删了,实际上用p就可以,被网上的程序误导了,那个udp传输数据中也用不到p,我是将端口和ip在回调函数中传递给了全局变量,这样就可以将收发分开进行,你如果要用他的report,那么回调函数里你不要删除东西就可以了。

udp_perf_server.h中添加和删除:


四、IPV4设置

为啥要说这个呢,因为你如果用路由器的话,肯定是在一个网段,但是直接从PC机连到开发板肯定要设个静态地址的,在网络连接中设置,如下图,设置后,再打开网络调试助手的udp连接,本机主机地址就会多一个静态连接。

五、硬件测试

可以看到返回正常,清除之后发数据再返回也正常

其实如果直接运行他的范例程序,可以在网络调试助手设置个循环发送,看他的接受速率以及丢包率,如下图,官方程序的report是5秒一次,我是1秒一个包,也可以设置10ms一个包或者其他频率进行测试。

但是report中有个问题,存在于回调函数,我把recv_id注释掉了,感觉在这里没啥用,丢包率其实和发送端对比就行了,看看是否满足自己发送的包数就行了,不知道官方程序里这个有啥用,我的更改如下图(此更改是只运行官方例程时的小更改,不是自己添加一些任务时的更改)

不过我还要吐槽一句,虽然好用,但是,尤其那个report相关的函数,一堆结构体和枚举真是看着头晕,哈哈。

六、总结

有些知识点大家可以自行百度下,尤其是概念方面的~
还是老样子,等整理好了一块把源工程文件发出来,还是在评论区,下一篇是准备记录:用PL端借助BRAM向PS端循环发送数据,再通过以太网上传PC机,看下发送速率。有时间再整理下,以后会更详细的。。。
还有其他一些的练习,以及以前做过的东西会陆续整理出来,期待大家的评论和关注,一起学习、一起努力、一起记录!~~

【Zynq UltraScale+ MPSoC】基于LWIP模板的udp通信与测试(一):网络调试助手和PS端的简单通信相关推荐

  1. 【Zynq UltraScale+ MPSoC】基于LWIP模板的udp通信与测试(二):PL与PS基于BRAM的UDP通信

    文章目录 前言 一.PL端准备 二.PS端程序 1.BD文件和模块连接 2.PS端的程序: 三.测试与总结 前言 承接上一篇文章 一.PL端准备 这部分主要是加入BRAM来向PS端传输数据,主要是需要 ...

  2. 在MacOS上实现两个网络调试助手的UDP通信测试

    文章目录 一.背景 二.网络调试助手软件 三.UDP通信过程 一.背景 因为有一个项目要中会使用本机中两个应用程序之间的UDP通信. 因此本文记录一下怎么在MacOS上实现两个网络调试助手的UDP通信 ...

  3. 基于xilinx Zynq UltraScale MPSoC平台的核心板及开发板介绍-米尔科技

    近日,米尔科技推出国内首款基于xilinx Zynq UltraScale+MPSoC 平台的核心板及开发板.其优势主要有:采用16纳米制程,相比Znyq7000系列每瓦性能提升5倍,且单芯片融合4核 ...

  4. Zynq UltraScale + MPSoC示例设计 - 在64位Linux上执行32位应用程序

    目录 官方说明连接:https://china.xilinx.com/support/answers/66636.html 描述 解决方案 官方说明连接:https://china.xilinx.co ...

  5. 嵌入式开发之zynqMp ---Zynq UltraScale+ MPSoC 图像编码板zcu102

    嵌入式开发之zynqMp -Zynq UltraScale+ MPSoC 图像编码板zcu102 1.1 xilinx zynqMp 架构 1.1.1 16nm 级别工艺 Zynq UltraScal ...

  6. zynq+linux固化程序,如何在 Zynq UltraScale+ MPSoC 上实现 Linux UIO 设计

    原标题:如何在 Zynq UltraScale+ MPSoC 上实现 Linux UIO 设计 简介 作者: Alex He (何晔), 赛灵思高级嵌入式应用工程师 这里的 UIO 即 Userspa ...

  7. ultrascale和arm区别_[原创] Avnet Zynq UltraScale+MPSoC系列Ultra96开发方案

    Avnet公司的Ultra96 开发板是基于ARM的Xilinx ZynqUltraScale+™ MPSoC系列产品的满足Linaro 96板指标的开发板,设计者可创建或评估Zynq处理器子系统(P ...

  8. Xilinx Zynq UltraScale+ MPSoC 介绍

    文章目录 简介 软件架构 petalinux工具 开发环境搭建 简介 MYC-CZU3EG 是深圳市米尔科技有限公司推出的一款以 Xilinx XCZU3EG 作为核心的嵌入式核心板. 采用了 Xil ...

  9. Zynq UltraScale+ MPSoC智能视频平台1:Camera Link接收IP

    Camera Link是一种串行通信协议标准,基于美国国家半导体公司的Channel-link,设计用于摄像机接口应用,目的是规范科学和工业视频而设计的产品包括相机.电缆和框架.Camera Link ...

最新文章

  1. RabbitMQ 延迟队列实现定时任务的正确姿势,你学会了么?
  2. PL/SQL Developer 导出表结构和表数据
  3. 怎么把json数据转化为数组_RESTful API 返回统一JSON数据格式是怎么实现的?
  4. 《软件工程》individual project开发小记(一)
  5. Apache Flink 为什么能够成为新一代大数据计算引擎?
  6. 《HTML5与CSS3实战指南》——2.3 HTML5常见问题
  7. 猜数字游戏的提示 (Master-Mind Hints, UVa 340)
  8. java生成16位唯一性的订单号
  9. VScode报错显示unins000.exe
  10. 自然辩证法对计算机科学技术的应用,自然辩证法在计算机科学技术中的应用
  11. 复权不复权,天差与地别 | 量化投资中如何最准确的计算股票前后复权价(附代码)
  12. segnet---训练
  13. 基于 Nginx 的 HTTPS 性能优化
  14. Apache ShenYu源码阅读系列-基于ZooKeeper的数据同步
  15. 计算机函数说课ppt,《excel公式与函数》说课稿
  16. POJ 1205 Water Treatment Plants(递推)
  17. html 画星星的坐标,如何使用画布HTML5绘制星星?
  18. php 反射执行类方法,PHP的反射类ReflectionClass、ReflectionMethod使用方法
  19. 作为中国传统小吃,凉果蜜饯在全球范围内越来越受欢迎
  20. VS中编写Qt项目时,提取ts文件出现中文乱码的解决方法(填坑)

热门文章

  1. SQL - SQL Server中如何取年、月、日 -DATEPART函数
  2. 扫雷游戏2023.4.3
  3. 某webrtc团队工作新闻
  4. linux deepin 64位 安装longene wineQQ 2013(部分引用)
  5. 【百度C++面试题】如何才能获得百度的offer?你面试必须要会这些...
  6. 安卓8.0以上系统如何没root激活xposed框架的步骤
  7. Python自动化办公--长图拼接,视频合并
  8. 脑机接口背后的残酷真相
  9. 虚拟主播虚拟视频虚拟人物形象软件
  10. 大连考研英语百家外语考研英语满分多少考研英语题型及分值