目录
第一部分、基础知识
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,有疑问的小伙伴可以加入哦,但是我不太爱在群聊里说话,我觉得在群聊里说话有好多人看,有点抗拒,不太喜欢这种感觉,等我有时间了我再尝试尝试😅😅😅