原始声明:该原始教程是由信义电子技术(上海)有限公司(ALINX)创建的。版权归我们公司所有。如果需要重印,则需要授权并注明出处。适用于板子型号:AXU2CGA / AXU2CGB / AXU3EG / AXU4EV-E / AXU4EV-P / AXU5EV-E / AXU5EV-P / AXU9EG / AXU15EG vivado项目目录为“ ps_hello / vivado”, vitis项目目录为“ ps_remote / vitis”,在实际工作中,您会遇到产品升级问题。如果遵循编程方法,则可能需要打开产品外壳,这无疑是必要的。本章介绍了一种通过网络远程更新FLASH程序的方法,包括UDP和TCP方法。软件工程师的工作内容以下是软件工程师的责任。 1. Vitis程序开发1.1 UDP传输方法1)LWIP部分主要处理BIN文件的接收,程序为lwip_app.c 2)创建项目后,需要启用lwip库并进行设置,然后启用DHCP功能,并占用pbuf空间可以将其设置为更大以增加缓存空间并提高效率。 3)udp_receive函数是设置的接收回调函数。主要功能是接收数据并将收到的数据缓冲在FlashRxBuffer空间中,以用于更新Flash。在发送数据之后,发送“更新”消息。命令开始更新闪存。该命令在功能中进行判断。 4)在while循环语句中,判断StartUpdate变量的值并更新Flash。 1.2 TCP传输方法1)TCP的LWIP部分也是lwip_app.c文件,控制部分参考lwipechoserver例程建立TCPServer 2)与UDP类似,在recv_callback接收回调函数中,接收到的BIN文件被缓存,并且update命令相同这是update,其他部分与UDP类似。 1.3 QSPIFlash读写控制UDP和TCP使用相同的QSPI读写文件qspi.c和qspi.h 1)根据xqspipsu_generic_flash_polled_example修改qspi.c文件2)主要有以下功能,写使能和关闭,闪存擦除,闪存写入,闪存读取,读取FlashID等。3)主要功能是update_qspi,其中TotalLen是要更新的字节总数,FlashDataToSend是用于存储更新数据的缓存区域,并且过程相对简单的。首先,擦除。在这里,我没有选择擦除整个Flash,而是根据TotalLen大小用于扇区擦除,因此要擦除的空间将比TotalLen稍大。然后写入Flash,使用FlashWrite函数进行写入;最后,进行验证,从Flash读取数据,并与写入的数据进行比较。 2.在板载验证中,我们可以选择其他例程的BOOT.bin文件。我们在理想的网络环境下进行实验。在进行此实验时,请勿打开其他与以太网传输有关的上层计算机软件。因为端口号相同,所以可能会引起冲突。 1)首先连接开发板,然后将网络电缆连接到网络端口。 2)如果有DHCP服务器,则会将IP自动分配给开发板;如果没有DHCP服务器,则默认的开发板IP地址为192.168.1.10,并且需要将PC的IP地址设置为同一网段,如下图所示。同时,请确保网络中没有IP地址192.168.1.10,否则将导致IP冲突并使其无法显示。您可以在电路板上电之前在CMD中输入ping192.168.1.10,以查看是否可以ping通。如果ping成功,则表示网络中存在此IP地址,无法对其进行验证。没问题后,打开串口软件。 2.1 UDP方式1)下载程序,可以在串口上看到信息2)打开项目目录下的单板网络升级软件3)填写单板的IP地址和端口号,选择UDP传输方式,并选择BOOT.bin文件,单击发送。4)发送后,将显示已发送的字节数。 5)在串行端口窗口中,您可以看到板子接收到的字节数,以及擦除,编程和验证的过程。 6)关闭电源,然后打开拨号开关以选择QSPI启动模式,打开电源以启动,您可以看到程序正在运行。 2.2 TCP方法1)下载程序,可以看到串口信息2)打开项目目录下的板卡网络升级软件3)填写IP地址和端口号,选择TCP发送方式,选择BOOT.bin文件,然后单击发送。4)与UDP类似,您还可以查看发送的字节数。 5)在串行端口窗口中,您可以看到板子接收到的字节数以及擦除,编程