FPGA, SoC, And CPLD Boards And Kits
FPGA Evaluation and Development Kits
5930 Discussions

altera_remote_update: Set application image address (Cyclone V)

tibor1
Novice
797 Views

Hello all,

Consider the following use case:

Hardware: Cyclone V + EPCQ256

There are three fpga configuration images stored in flash memory:

1) Factory Image

2) Application Image #1 (slot 1)

3) Application Image #2 (slot 2)

At any point in time, only one application image should be considered valid. Let's say there is a valid application in slot 1. Slot 2 is reserved for a firmware update. We don't overwrite slot 1 because we want to keep it as fallback image in case something goes wrong during the update process.

When an update was carried out successfully, slot 2 contains the valid image and slot 1 can be overwritten by the next update.

Setting an arbitrary address for loading the application image is easy enough, but is there an obvious way to select the valid image built into the altera_remote_update Megafunction?

I did not find anything in the documentations but it seems like a feature that should be part of that Megafunction.

Of course, I can always use a flash controller and read update-/startup-information from flash and write my own logic that determines the applicaiton image address based on this information, but i was hoping there would be an inbuilt solution, especially because the Megafunction already supports arbitrary image addresses.

0 Kudos
1 Solution
tibor1
Novice
742 Views

Thank you for your reply.

I am using the page select signal in order to provide that remote update core with my desired flash address. In order to determine which application image to load, I am using a flash sector to store boot information, which i read  before loading the application.

 

Kind regards.

View solution in original post

0 Kudos
4 Replies
YuanLi_S_Intel
Employee
785 Views

Hi Tibor,


When you mentioned about valid, are you saying that you are looking for something which will check the bitstream validity from application image 1/2 and then program it if it is valid?


Thank You


0 Kudos
tibor1
Novice
781 Views

Hi,

Thank you for your reply.

No, i know about the POF-checking-feature and this is not what I mean by valid (if that is, what you were going to say). What I mean is "most recent". HPS-Software can write the Flash-Memory via a Flash Controller in the FPGA. In case of a FPGA-Update, the HPS writes the new configuration File into another Page of the Flash. The old image is not overwritten, so that it can be used as a fallback in case the update fails.

I need a way to tell the FPGA Factory Image, which of the two application Images to choose. Also, I can't use Information contained in the HPS, because in my design, the FPGA boots first and the HPS boots from FPGA.

As I said, i could keep that Information somewhere in the same Flash and read it from FPGA and write some logic that decides which image to use, but I was hoping, that this use case was already covered. Especially, because Flash-Read-Logic already exists (for Configuration from Flash).

0 Kudos
YuanLi_S_Intel
Employee
769 Views

Hi,


For your scenario, i believe you could select the application image to boot first by using the remote update IP. You may refer to the user guide below particular on the "page select" parameter.

https://www.intel.com/content/dam/www/programmable/us/en/pdfs/literature/ug/ug_altremote.pdf (Page 21)


Thank You


0 Kudos
tibor1
Novice
743 Views

Thank you for your reply.

I am using the page select signal in order to provide that remote update core with my desired flash address. In order to determine which application image to load, I am using a flash sector to store boot information, which i read  before loading the application.

 

Kind regards.

0 Kudos
Reply