sdk例程‐基于tcp和udp的远程qspi烧录 - minichao9901/TangNano-20k-Zynq-7020 GitHub Wiki

推荐的方法(其它方法都不太行)

原子的例程中,“基于UDP的远程qspi flash更新实验”,这一章节的方法是非常正确可行的。可以用于TCP和UDP例程。 它的方法如下:

先创建一个demo例程,用官方的lwip tcp perf server模板。注意对于z7nano的reltek网卡有问题,需要修改如下文件才能联网。

运行该例程,确认可以正确运行。(需要保证电脑端和zynq端的ip在一个网段,如果不一致需要修改为一致)

修改demo例程,将src文件夹的文件只保留lscript.ld, README.txt, Xilinx.spec,其余都删掉。然后从原子的tcp/udp例程中的src文件夹下复制所有文件到刚才的src文件夹中(粘贴的时候,选择跳过lscript.ld, README.txt, Xilinx.spec)。这个的目的是,只用官方例程的lwip的配置,应用程序用我们自己。

重新编译烧录

可见QSPI已经初始化,网络可以连上。

说明:

这个地方有些不稳定。在小主机上连接的时候,有时候连不上,反复尝试上电/复位好几遍才能连上。当连不上的时候,可以先测试一下echo例程和tcp/udp perf例程,这是demo例程,确保它能够通,然后再运行tcp/udp烧录qspi flash例程。

做了一个很有意思的实验:tcp和udp例程相互烧录

1)通过tcp烧录udp

首先jtag模式烧入tcp_load_flash例程,然后通过网络把udp_load_flash例程的BOOT.bin文件烧入Flash。可见烧录成功。

然后将z7nano跳线帽置于qspi模式, 上电按复位键。输出如下,卡住了,不能继续。原因不详。

2)通过udp烧录tcp

首先jtag模式烧入udp_load_flash例程,然后通过网络把tcp_load_flash例程的BOOT.bin文件烧入Flash。可见烧录成功。

然后将z7nano跳线帽置于qspi模式, 上电按复位键。输出如下,卡住了,不能继续。原因不详。