Forum Discussion

plancheres's avatar
plancheres
Icon for New Contributor rankNew Contributor
1 day ago

RSU: Corrupted decision firmware after loading initial RSU image jic (Stratix 10)

Hi,

I'm programming an initial RSU image JIC containing a factory image and two application images and, after power cycling, the device always boots to the factory image with an RSU_STATUS of 

Current Image   : 0x00110000
Last Fail Image : 0x00100000
State           : 0xf004d00f
Version         : 0x0dcf0202
Error location  : 0x00000000
Error details   : 0x00000000
Retry counter   : 0x00000000

where state 0xF004D00F indicates decision firmware corruption. However, if I query the RSU DCMF status everything looks ok:

DCMF0: OK
DCMF1: OK
DCMF2: OK
DCMF3: OK

Perhaps there's something wrong with the boot.rbf that I assigned to the BOOT_INFO section? I generated the boot.rbf as follows:

quartus_pfg -c factory_image.sof boot.rbf -o rsu_boot=ON

Any ideas why the decision firmware is reported as being corrupted?

Extra info:

1) Note that the RSU image is otherwise fine, that is, the SPT/CPB are good and I can successfully switch to all the application images. Therefore, I don't believe there were any bit errors during JIC programming.

2) I  tried programming the initial RSU image using an SPT/CPB size of 32 KB and also 64 KB, and both gave the same result.

3) I'm not using the HPS, I'm using a Nios II core connected to the mailbox although I'm not sure this affects the decision firmware at all.

4) I attached the pfg that I used to generate the initial RSU image. The factory and application images are signed RBFs.

Regards,

Phil

1 Reply

  • plancheres's avatar
    plancheres
    Icon for New Contributor rankNew Contributor

    The pfg attachment isn't working so I'm copying the pfg file here, used to generate the initial RSU image:

    <pfg version="1">
        <settings custom_db_dir="./" mode="ASX4"/>
        <output_files>
            <output_file name="initial_rsu_dual_boot_image_64K_SPT_CPB" directory="." type="JIC">
                <file_options/>
                <secondary_file type="MAP" name="initial_rsu_dual_boot_image_64K_SPT_CPB_jic">
                    <file_options/>
                </secondary_file>
                <flash_device_id>Flash_Device_1</flash_device_id>
            </output_file>
        </output_files>
        <bitstreams>
            <bitstream id="Bitstream_1">
                <path>factory_boot.rbf</path>
            </bitstream>
            <bitstream id="Bitstream_2">
                <path>factory.rbf</path>
            </bitstream>
            <bitstream id="Bitstream_3">
                <path>Application_1.rbf</path>
            </bitstream>
            <bitstream id="Bitstream_4">
                <path>Application_2.rbf</path>
            </bitstream>
        </bitstreams>
        <flash_devices>
            <flash_device type="MT25QU02G" id="Flash_Device_1">
                <partition reserved="1" fixed_s_addr="1" s_addr="0x00000000" e_addr="0x0010FFFF" fixed_e_addr="1" id="BOOT_INFO" size="0"/>
                <partition reserved="1" extra_space="262144" fixed_s_addr="1" s_addr="0x00110000" e_addr="auto" fixed_e_addr="0" id="FACTORY_IMAGE" size="0"/>
                <partition reserved="1" fixed_s_addr="1" s_addr="auto" e_addr="auto" fixed_e_addr="1" id="SPT0" size="65536"/>
                <partition reserved="1" fixed_s_addr="1" s_addr="auto" e_addr="auto" fixed_e_addr="1" id="SPT1" size="65536"/>
                <partition reserved="1" fixed_s_addr="1" s_addr="auto" e_addr="auto" fixed_e_addr="1" id="CPB0" size="65536"/>
                <partition reserved="1" fixed_s_addr="1" s_addr="auto" e_addr="auto" fixed_e_addr="1" id="CPB1" size="65536"/>
                <partition reserved="0" fixed_s_addr="0" s_addr="auto" e_addr="auto" fixed_e_addr="0" id="P1" size="0"/>
                <partition reserved="0" fixed_s_addr="0" s_addr="auto" e_addr="auto" fixed_e_addr="0" id="P2" size="0"/>
            </flash_device>
            <flash_loader>1SM21BHU1AS</flash_loader>
        </flash_devices>
        <assignments>
            <assignment partition_id="BOOT_INFO">
                <bitstream_id>Bitstream_1</bitstream_id>
            </assignment>
            <assignment page="0" partition_id="FACTORY_IMAGE">
                <bitstream_id>Bitstream_2</bitstream_id>
            </assignment>
            <assignment page="1" partition_id="P1">
                <bitstream_id>Bitstream_3</bitstream_id>
            </assignment>
            <assignment page="2" partition_id="P2">
                <bitstream_id>Bitstream_4</bitstream_id>
            </assignment>
        </assignments>
    </pfg>