赞
踩
title: FPGA远程更新/在线升级
date: 2021-03-03 22:00:00
tags:
对最近做的FPGA远程更新/在线升级做一个总结。一般在代码开发阶段,我们使用JTAG烧写代码,但当产品投入到实际使用过程中,难以再用JTAG进行固件更新。所以需要开发远程/在线更新的功能,即使用产品自带的通讯接口(如串口,以太网接口等)传输待更新的固件包,实现固件更新升级的功能。本文所使用的平台是ALTERA公司的cyclone IV E系列产品EP4CE30F23I7,PC通过串口将待更新的固件包传发送到FPGA,FPGA将接收的固件包写入FPGA的配置 flash:EPCS16中,并以新收到的固件包覆盖原来通过JTAG烧写的代码,当芯片重新上电或者进行一次重配置,FPGA便会执行新的固件包。
目前,大多数FPGA芯片是基于 SRAM 的结构的, 而 SRAM 单元中的数据掉电就会丢失,因此系统上电后,必须要由配置电路将正确的配置数据加载到 SRAM 中,FPGA才能正常运行。EP4CE30F23I7采用EPCS16作为配置芯片,所以我们要做的就是将要更新的固件包烧写到此EPCS16芯片中。每次芯片上电,配置电路就会加载EPCS16中的固件包,进行一次配置,FPGA还有一个重配置的ip核,也可以在FPGA运行过程中进行重配置。
FPGA上电后会自动从0地址开始加载镜像文件(把一个FPGA工程综合生成的文件成为一个镜像文件),看别人说的rpd文件末尾至少留32个字节的FF,我认为可能是加载到32个连续的FF就会停止加载文件。
我的思路是编写一个工程称为出厂配置工程,再编写一个工程称为应用工程,应用工程是我们正常的编写的工程,也就是我们需要更新的固件。将出厂配置工程转换成jic文件并通过JTAG烧进flash中,但是只将该文件烧写在flash的前几个扇区,具体几个扇区由你的出厂配置程序的大小来定,我自己生成的jic文件占用6个扇区,在生成Jic文件时可以选择代码在flash中的地址的,所以我的出厂配置所占的地址范围为0x0 ~ 0x5FFFF,占前6个扇区。而我编写的应用工程则放在从0x60000开始地址的地方,在线烧写镜像文件时,将需要更新的文件从0x60000地址开始写就可以了。我们在线烧写的是rpd文件,后面具体介绍这几种文件。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。