Intel® Agilex™ Hard Processor System Remote System Update User Guide

ID 683184
Date 7/13/2022
Public

A newer version of this document is available. Customers should click here to go to the newest version.

Document Table of Contents

E.2. Using the Combined Application Image

This section shows an example of using a combined application image, from U-Boot. Similar commands can be used from Linux.

The combined application images are used the exact same way as regular application images, just that they first update the decision firmware and decision firmware data if necessary, before the device is configured with the functionality from the application SOF.

Note: The combined application images do not have absolute pointers inside like the regular application images, the factory update images, or the decision firmware update images. Because of this, they can be written to flash with any of the U-Boot and LibRSU APIs that write to slots.
  1. Create an initial flash image using the instructions from this document, but use an older version of Quartus, for example 20.2.
  2. Build the combined application image as described in the previous section, using Intel® Quartus® Prime Pro Edition version 21.2. Put the combined application image on the SD card, on the FAT partition.
  3. Boot the system created with Quartus 20.2 and query the decision firmware information from U-Boot:
    SOCFPGA # rsu display_dcmf_version
    DCMF0 version = 20.2.0
    DCMF1 version = 20.2.0
    DCMF2 version = 20.2.0
    DCMF3 version = 20.2.0
  4. Find an unused slot, erase it, write the combined application image to it, and check it is now the highest priority:
    SOCFPGA # rsu slot_erase 2
    Slot 2 erased.
    SOCFPGA # fatload mmc 0:1 ${loadaddr} combined_image.rpd
    151552 bytes read in 9 ms (16.1 MiB/s)
    SOCFPGA # rsu slot_program_buf 2 ${loadaddr} ${filesize}
    Slot 2 was programmed with buffer=0x0000000002000000 size=3510272.
    SOCFPGA # rsu slot_verify_buf 2 ${loadaddr} ${filesize}
    Slot 2 was verified with buffer=0x0000000002000000 size=3510272.
    SOCFPGA # rsu slot_get_info 2
    NAME: P3
    OFFSET: 0x0000000003000000
    SIZE: 0x01000000
    PRIORITY: 1
  5. Pass control to the combined application update image:
    SOCFPGA # rsu slot_load 2
  6. The combined application image checks the currently used decision firmware copy, it sees that it is older, then it updates the decision firmware and decision firmware data, then it loads the actual application image section. Everything takes a few seconds.
  7. Stop at U-Boot prompt and confirm the decision firmware is updated, and the application image is running fine:
    SOCFPGA # rsu status_log
    Current Image   : 0x03000000
    Last Fail Image : 0x00000000
    State           : 0x00000000
    Version         : 0x00000202
    Error location  : 0x00000000
    Error details   : 0x00000000
    Retry counter   : 0x00000000
    SOCFPGA # rsu display_dcmf_version
    DCMF0 version = 21.2.0
    DCMF1 version = 21.2.0
    DCMF2 version = 21.2.0
    DCMF3 version = 21.2.0
  8. Power cycle the board, the same combined application image is loaded, as it is the highest priority. But it takes a couple of seconds less, as the decision firmware does not need to be updated.