Forum Discussion

watanabe's avatar
watanabe
Icon for New Contributor rankNew Contributor
1 month ago

Regarding the issue of UFM not starting

I am trying to implement a remote system update feature using Quartus version 23.1 on an FPGA (MAX10 10M16SA). I have set the configuration mode to Dual Compressed Images, and writing to CFM0 and CFM1 of the on-chip flash is working correctly.

However, I am having trouble starting the Nios II software that I stored in the UFM.

There are no errors reported. I have already performed the following steps:

・Configured the HEX file in the On-Chip Flash settings in Platform Designer

・Added the HEX file when generating the .pof file using Convert Programming File

・Added the meminit.qip file to the project

・Verified that the BSP Editor settings are correct

I have also confirmed that the software itself runs correctly when executed in other environments.

Are there any other possible reasons why the software stored in UFM would not start correctly? I would greatly appreciate any advice or suggestions.

4 Replies

  • FakhrulA_altera's avatar
    FakhrulA_altera
    Icon for Regular Contributor rankRegular Contributor

    Hi watanabe,

    Thanks for the details. From my understanding, if CFM programming is working but the Nios II software in UFM does not start, the most common causes are below.

    Could you please check:

    • Boot method match: Confirm whether you are using XIP (execute-in-place) from UFM or a boot copier that copies the app from UFM to RAM. If the system is set for boot copier but only the app HEX is placed at the reset address, the CPU will not start correctly. 
    • Reset and exception vectors: Ensure the reset vector points to the exact UFM address/page where the code starts. A page or offset mismatch will look like “no boot”. Try refer UBooting with dual compressed images on a MAX 10.
    • Dual Compressed Images behavior: In Dual Compressed Images mode, on-chip RAM preload is disabled. If your flow depends on RAM being pre-initialized at configuration time, it will not work in this mode.
    • UFM placement for multiple images: If you are trying to keep two software images in UFM (aligned to CFM0/CFM1), you may need an explicit offset strategy and a combined HEX approach, not two separate HEX files. 

       

    Regards,
    Fakhrul

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

      Thank you for your reply.

      First, let me provide some additional details.

      In this configuration, one Nios software image is stored in UFM and is started using UFM’s XIP feature. The software that boots acts as a bootloader, which then copies another Nios software image from QSPI flash into RAM and executes it.

      Based on your advice, I will check whether UFM is correctly configured to use XIP and verify that the reset vector and exception vector are set properly.

      I will get back to you once there is any progress.

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

        After that, I checked the vector address settings and other configurations, and they all seem to be correct.

        What I originally want to achieve is execution directly from the on-chip flash (UFM). However, to verify whether the UFM is being written correctly, I changed the configuration to load the UFM contents into RAM and execute from there, but this did not work either.

        At this point, I am not sure whether the issue is that:

        the UFM is not being programmed correctly,

        XIP from UFM is not functioning properly, or

        there is some incorrect configuration elsewhere.

        If you have any ideas or possible solutions, I would greatly appreciate your advice