ZYNQ7020 实现UDP 通信(一)
项目参考
学会Zynq(14)UDP发送Hello World
本文章在上述完整代码基础上实现:
原代码输出——helloworld,一个字符串
本代码输出——1MByte数据,每个数据16位
因为项目需要快速读取PL数据并显示,通过PS-AXI总线读PL,然后用网口输出,(串口传输速度有限)。之前没怎么学过计算机网络,C也是个菜鸡,一步一步来吧。
改变pbuf_alloc申请的数据大小
结果是显而易见的;
如果增加申请的空间大小呢?
0D 归位
0A 换行
00 NULL
00
28 左括号(
9B ???这个搞不懂了,问号应该是3F
00 NULL
这说明申请空间大小要和数据大小严格对应,申请空间不能小于数据长度(就是一部分给砍掉了),也不能大于数据长度(不然就会乱码)。
如果我们把本来应该udp_send的数据先一个个存到ddr里面,有一个num作为计数,然后超过设定值后就把整个数据用udp给读出来,应该是可行的。
---------------------------------分割线 2021.04.03--------------------------------------------
网络发包的一帧的格式如下图所示
也就是说,先把数据堆进一个字符串数组里面,然后达到计数阈值的时候再输出这个字符串数组里面的内容,比如1024长度的数组,那一次发包就相当于传了1KB的数据出来
在这个经典博客的基础上做了一些修改
主要改动在main函数和user_udp.c里的udp_printf函数上
num