【ZYNQ入门】第八篇、基于Lwip构建TCP服务器

目录

第一部分、基础知识

1、小白入门必看文章

2、什么是Lwip?

3、什么是TCP/IP协议?

4、MAC地址、IP地址、子网掩码、网关

4.1、MAC地址

4.2、IP地址

4.3、子网掩码

4.4、网关

第二部分、硬件搭建

第三部分、软件代码

1、SDK工程的建立

2、利用工具测试 TCP 链路性能

2.1、利用电脑直接去ping

2.2、用iperf软件工具去测试

第四部分、总结

1、测试工具下载链接

2、交流群


第一部分、基础知识

        作为一个本科没有学过计算机网络这门课程的开发小白来说,想一时半会把所有的TCP/IP协议里面的知识都全部弄明白,这太难了。

        但是在FPGA开发的过程中,很多时候学的东西没有理论知识做铺垫的。而且我个人在学习的过程中,如果目前学的东西我没有一点理论基础,我是真的学不了一点。我非要掌握一点理论知识我才有兴趣继续往下学。哎,如果我有一个过目不忘的脑袋那就好了。🧠🧠🧠

1、小白入门必看文章

        第一篇、 太棒了!TCP/IP协议 (图解+秒懂+史上最全)_图解tcpip-CSDN博客

        第二篇、太厉害了,终于有人能把TCP/IP 协议讲的明明白白了 - 知乎 (zhihu.com)

        第三篇、用大白话解释什么是Socket - 知乎 (zhihu.com)

        第四篇、正点原子实验手册

        经过上面这三篇文章再配上正点原子的数据手册后,我对TCP/IP的就有了一个模糊的认知。

2、什么是Lwip?

        LwIP 全名:Light weight IP,意思是轻量化的TCP/IP协议栈,是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈

        LwIP的设计初衷是:用少量的资源消耗实现一个较为完整的TCP/IP协议栈其中“完整”主要指的是TCP协议的完整性,实现的重点是在保持TCP协议主要功能的基础上减少对RAM的占用。此外LwIP既可以移植到操作系统上运行,也可以在无操作系统的情况下独立运行

        优点:

        支持的协议较为完整。几乎支持TCP/IP中所有常见的协议,这在嵌入式设备中早已够用。

        开源、免费,用户可以不用承担任何商业风险地使用它。

3、什么是TCP/IP协议?

        TCP/IP 协议又名网络通讯协议,可以单独指:由网络层的 IP 协议和传输层的 TCP 协议组成。也可以指:利用 IP 进行通信时所必须用到的协议群的统称。(图片来源于这篇文章:太厉害了,终于有人能把TCP/IP 协议讲的明明白白了 - 知乎 (zhihu.com))

4、MAC地址、IP地址、子网掩码、网关

4.1、MAC地址

        MAC地址也叫物理地址、硬件地址,长度为 48 位,这个是唯一。只要不更改自己的 MAC 地址,MAC 地址在世界是唯一的。形象地说,MAC地址就如同身份证上的身份证号码,具有唯一性。

        例如我电脑WiFi的MAC地址如下图:

MAC地址查看方法:step1、win + R
step2、输入"cmd"
step3、输入"ipconfig/all"

4.2、IP地址

        IP地址为32 位的编号, IP 地址是软件层面上的,可以随时修改,MAC 地址一般是无法修改的。

        如上图,我电脑WiFi模块的IP地址为192.168.166.221。

4.3、子网掩码

        用来区分两个不同IP地址的联网设备是否处于同一网段。

        将源 IP 与目的 IP 分别同这个子网掩码进行与运算,相等则是在一个子网,不相等就是在不同子网,就这么简单。例如:

        A电脑:192.168.0.1 & 255.255.255.0 = 192.168.0.0
        B电脑:192.168.0.2 & 255.255.255.0 = 192.168.0.0
        C电脑:192.168.1.1 & 255.255.255.0 = 192.168.1.0
        D电脑:192.168.1.2 & 255.255.255.0 = 192.168.1.0

        那么 A 与 B 在同一个子网,C 与 D 在同一个子网,但是 A 与 C 就不在同一个子网,与 D 也不在同一个子网,以此类推。

4.4、网关

        当两个通信设备在同一网段,那网关就用不上,当两个互相通信的设备不处于同一网段时,就需要网关来实现两者之间的通信。

第二部分、硬件搭建

第一步、根据自己的FPGA原理图来配置管脚

第二步、只保留最小系统,取消无关端口 

第三步、最终生成的最小系统 

第四步、Create HDL Wrapper

 第五步、生成bitstream文件

第三部分、软件代码

1、SDK工程的建立

第一步、新建一个应用工程,选择freertos10,不用standalong。

第二步、选择创建FreeRTOS lwip TCP Perf Server

第三步、啥也不用改,进行DEBUG,来测试链路带宽

2、利用工具测试 TCP 链路性能

第一步、Debug并运行,等待串口打印消息

第二步、电脑与FPGA之间连接网线,打开网络,修改电脑以太网配置参数 

第三步、选择未识别的以太网,右键属性进行修改

第四步、选择IPv4,点击属性

第五步、修改属性如下

2.1、利用电脑直接去ping

方法:step1、win + R
step2、输入"cmd"
step3、输入"ping 192.168.1.10 -t"

链路连接测试成功后的截图

注意:若出现请求超时的问题,那就重新拔插网线,保证网线连接没有问题 

2.2、用iperf软件工具去测试

step1、输入"cd + 软件路径"
//该命令指示 iperf 以客户端模式启动,连接到服务器 192.168.1.10,
//指定 TCP 窗口大小为 2Mbyte(参数-w 2M) ,
// 测试 30 秒( -t 30),
//每隔 5 秒打印一次输出( -i5)。
step2、输入"iperf -c 192.168.1.10 -p 5001 -i 5 -t 30 -w 2M"

我的电脑带宽测试结果为500MB,我记得我第一次测才400MB,挺奇怪的 

        如果上面的步骤你都测了,那就证明整个工程已经跑成功了。

第四部分、总结

        这篇博客简单介绍了一些关于TCP/IP协议的一些理论知识以及ZYNQ如何构建基于Lwip的TCP服务端

1、测试工具下载链接

        关于测试工具的免费下载链接如下:Iperf测试工具,防止大家找不到。

2、交流群

         QQ交流群聊号码1020775171,有疑问的小伙伴可以加入哦,但是我不太爱在群聊里说话,我觉得在群聊里说话有好多人看,有点抗拒,不太喜欢这种感觉,等我有时间了我再尝试尝试😅😅😅

        

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/639149.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

数据结构与算法-二叉树-从中序与后序遍历序列构造二叉树

从中序与后序遍历序列构造二叉树 给定两个整数数组 inorder 和 postorder ,其中 inorder 是二叉树的中序遍历, postorder 是同一棵树的后序遍历,请你构造并返回这颗 二叉树 。 示例 1: 输入:inorder [9,3,15,20,7], postorder …

云盘后端分析

1.验证码 用的是外面找的 2.发送邮箱验证码 配置邮箱的授权码 我们在发送邮箱的时候,需要把那个值传到数据库中,数据库中有它的状态,我们需要根据状态判断它是注册还是找回密码 我们在发送邮箱之前,先从session里面得到我们验证…

Rocky Linux 8.9 安装图解

风险告知 本人及本篇博文不为任何人及任何行为的任何风险承担责任,图解仅供参考,请悉知!本次安装图解是在一个全新的演示环境下进行的,演示环境中没有任何有价值的数据,但这并不代表摆在你面前的环境也是如此。生产环境…

某度网盘提取下载链接JS逆向分析(一)

本次目标网址如下,使用base64解码后获得 aHR0cHM6Ly9wYW4uYmFpZHUuY29tL3MvMUZsaDBPeGpZamZJTFVZWUQzTm9fVnc 链接提取码为:ly12 本次逆向分析分为上下两篇文章说明,一为讲解如何从原链接通过逆向拿到下载链接,二为逆向登录拿到co…

flink结合Yarn进行部署

1. 什么是Yarn模式部署Flink 独立(Standalone)模式由 Flink 自身提供资源,无需其他框架,这种方式降低了和其他第三方资源框架的耦合性,独立性非常强。但我们知道,Flink 是大数据计算框架,不是资…

C++学习笔记——指针

1,指针的基本概念 指针的作用:可以通过指针间接访问内存 内存的编号是从0开始记录的,一般用十六进制数字表示可以利用指针变量保存地址 上图中的p就是a变量的指针,也可以记作*a 2,指针变量的定义和使用 指针变量定…

Linux操作系统——理解文件系统

预备知识 到目前为止,我们所学习到的关于文件的操作,全部都是基于文件被打开,被访问,访问期间比较重要的有重定向,缓冲区,一切皆文件,当我们访问完毕的时候需要将文件关闭,关闭时那…

3.RHCSA脚本配置及通过node2改密码

运行脚本发现node2不成功 脚本破解 选第二个 Ctrl x 换行 破解成功后做node2的改密码题 回到redhat, 发现检测程序检测密码题成功,得了8分.

DBA技术栈MongoDB: 数据增改删除

该博文主要介绍mongoDB对文档数据的增加、更新、删除操作。 1.插入数据 以下案例演示了插入单个文档、多个文档、指定_id、指定多个索引以及插入大量文档的情况。在实际使用中,根据需求选择适合的插入方式。 案例1:插入单个文档 db.visitor.insert({…

【蓝桥杯冲冲冲】动态规划初步[USACO2006 OPEN] 县集市

蓝桥杯备赛 | 洛谷做题打卡day13 文章目录 蓝桥杯备赛 | 洛谷做题打卡day13题目描述输入格式输出格式样例 #1样例输入 #1样例输出 #1 提示样例说明数据规模与约定 思路:方程: 题解代码我的一些话 [USACO2006 OPEN] 县集市 The County Fair 题目描述 每年…

Threejs实现立体3D园区解决方案及代码

一、实现方案 单独贴代码可能容易混乱,所以这里只讲实现思路,代码放在最后汇总了下。 想要实现一个简单的工业园区、主要包含的内容是一个大楼、左右两片停车位、四条道路以及多个可在道路上随机移动的车辆、遇到停车位时随机选择是否要停车&#xff0…

解决ssh登录Permission denied, please try again

现象截图如下: 确定root的密码是正确的,最后的原因找到了,是远程的服务器,禁用了root账户可以被远程访问的权限。开启操作如下: 1.编辑配置文件 vi /etc/ssh/sshd_config 2.文件中找到PermitRootLogin #PermitRoo…

seaborn可视化示例详解

目录 1、散点图 2、散点图回归线 3、折线图 4、频数柱状图 5、分组散点图 6、箱型图 7、数值分布柱状图 8、频数分布图 9、联合分布图 10、数值分布柱状图 11、相关系数热力图 划重点 少走10年弯路 Seaborn是一个基于Python的数据可视化库,Seaborn提供了许多用…

链表|数据结构|C语言深入学习

什么是链表 离散,就是“分离的、散开的” 链表是什么样子的: 有限个节点离散分配 彼此间通过指针相连 除了首尾节点,每个节点都只有一个前驱节点和一个后继节点 首节点没有前驱结点,尾节点没有后继节点 基本概念术语&#xf…

1.使用分布式文件系统Minio管理文件

分布式文件系统DFS分类 文件系统 文件系统是操作系统用于组织管理存储设备(磁盘)或分区上文件信息的方法和数据结构,负责对文件存储设备空间进行组织和分配,并对存入文件进行保护和检索 文件系统是负责管理和存储文件的系统软件,操作系统通过文件系统提供的接口去…

Docker五部曲之五:通过Docker和GitHub Action搭建个人CICD项目

文章目录 项目介绍Dockerfile解析compose.yml解析Nginx反向代理到容器以及SSL证书设置MySQL的准备工作Spring和环境变量的交互 GitHub Action解析项目测试结语 项目介绍 该项目是一个入门CICD-Demo,它由以下几部分组成: Dockerfile:用于构建…

「 典型安全漏洞系列 」05.XML外部实体注入XXE详解

1. XXE简介 XXE(XML external entity injection,XML外部实体注入)是一种web安全漏洞,允许攻击者干扰应用程序对XML数据的处理。它通常允许攻击者查看应用程序服务器文件系统上的文件,并与应用程序本身可以访问的任何后…

【Unity小技巧】3D人物移动脚步和跳跃下落音效控制

文章目录 单脚步声多脚步声,跳跃落地音效播放不同材质的多脚步声完结 单脚步声 public AudioClip walkingSound; public AudioClip runningSound;//移动音效 public void MoveSound() {// 如果在地面上并且移动长度大于0.9if (isGround && moveDirection.s…

动物免疫(羊驼免疫)-泰克生物

在过去几十年里,抗体研究和应用的领域已经经历了革命性的变化。在这个进程中,一种特殊来源的抗体 —— 来自骆驼科动物(包括羊驼)的单链抗体(也称纳米抗体)引起了全球科学家的广泛关注。 羊驼等骆驼科动物…

【Linux】python版本控制和环境管理

文章目录 1.查看目前python的版本2.添加软件源并更新3.选择你想要下载的版本4.警示:没必要设置默认版本误区千万千万不要覆盖python3软链接解决办法 5.pip软件包管理最省心稍微麻烦换源 网上有很多教程都是教导小白去官方下载之后编译安装。但是,小白连c…