【ZYNQ Ultrascale+ MPSOC FPGA教程】第二十六章PS端网络远程更新QSPI

描述

原创声明:

本原创教程由芯驿电子科技(上海)有限公司(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

 

FlaSh

 

2)在创建工程后,需要使能lwip库,并进行设置,使能DHCP功能,将pbuf空间尽可能设置大一些,增大缓存空间,提高效率。

 

FlaShFlaSh

 

3)udp_receive函数为设置的接收回调函数,主要功能是接收数据,并将接收到的数据缓存到FlashRxBuffer空间,留待更新Flash使用,在发送数据后,再发送“update”命令,开始更新flash,在函数中判断此命令。

4)在while循环语句中,判断StartUpdate变量值,更新Flash。

 

FlaSh

 

1.2 TCP传输方式

1)TCP的LWIP部分同样也是lwip_app.c文件,控制部分参考lwip echo server例程,建立一个TCP Server

 

FlaSh

 

2)与UDP类似,在recv_callback接收回调函数中,缓存接收到的BIN文件,启动更新命令同样是update,其他部分也与UDP类似。

1.3 QSPI Flash读写控制

UDP和TCP两种方式使用的是同样的QSPI读写文件qspi.c和qspi.h

 

FlaSh

 

1)qspi.c文件是根据xqspipsu_generic_flash_polled_example做的修改

 

FlaSh

 

2)主要有以下一些函数,写使能及关闭,flash擦除,flash写,flash读,读Flash ID等。

 

FlaSh

 

3)主要的函数为update_qspi,其中TotalLen为要更新的总字节数,FlashDataToSend为存放更新数据的缓存区域,流程也比较简单,首先是擦除,在这里没选择擦除整个Flash,而是根据TotalLen大小进行Sector擦除,因此擦除的空间会比TotalLen稍微大一点;然后是写Flash,利用FlashWrite函数进行写入;最后是校验,从Flash里读出数据,并与写入的数据进行对比。

 

FlaSh

 

2. 板上验证

我们可以选择其他例程的BOOT.bin文件。我们是设定网络环境理想状态下做的实验,在做此实验时,不要打开其他有关以太网传输的上位机软件,由于端口号一样,可能会造成冲突。

1)首先连接开发板,将网线连接到网口

2)如果有DHCP服务器,会自动分配IP给开发板;如果没有DHCP服务器,默认开发板IP地址为192.168.1.10,需要将PC的IP地址设为同一网段,如下图所示。同时要确保网络里没有192.168.1.10的IP地址,否则会造成IP冲突,导致无法显示。可以在板子未上电前在CMD里输入ping 192.168.1.10查看是否能ping通,如果ping通,说明网络中有此IP地址,就无法验证。

没有问题之后打开串口软件。

 

FlaSh

 

2.1 UDP方式

1)下载程序,可以看串口里的信息

 

FlaSh

 

2)打开工程目录下的板卡网络升级软件

 

FlaSh

 

3)填入板卡的IP地址和端口号,选择UDP发送方式,选择BOOT.bin文件,点击发送

 

FlaSh

 

4)发送完毕后,会显示发送的字节数

 

FlaSh

 

5)在串口窗口可以看到板卡接收到的字节数,以及擦除,烧写,校验过程。

 

FlaSh

 

6)断电通拨码开关选择QSPI启动方式,打开电源启动,即可看到程序运行起来。

2.2 TCP方式

1)下载程序,可以看到串口信息

 

FlaSh

 

2)打开工程目录下的板卡网络升级软件

 

FlaSh

 

3)填入IP地址和端口号,选择TCP发送方式,选择BOOT.bin文件,点击发送

 

FlaSh

 

4)与UDP一样,也能看到发送的字节数

 

FlaSh

 

5)在串口窗口可以看到板卡接收到的字节数,以及擦除,烧写,校验过程。

 

FlaSh

 

6)断电通过拨码开关选择QSPI启动方式,打开电源启动,即可看到程序运行起来。

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分