Forum Discussion
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
- watanabe30 days ago
New 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.
- watanabe29 days ago
New 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
- FakhrulA_altera26 days ago
Regular Contributor
Hi Watanabe-san,
Thanks for the update, if both XIP from UFM and “copy to RAM then run” fail, the next step is to confirm whether the CPU is reading valid code from the expected UFM address.
Please try these quick checks:
1. Read back UFM content
- Run a small temporary Nios app loaded to RAM via JTAG that reads the first 32 to 64 bytes from the UFM base (via the On-Chip Flash IP) and prints them.
- If it reads all 0xFF or unexpected data, the issue is UFM programming or placement.
2. Confirm address alignment
- Compare: Nios reset vector address, linker map .text start address, and the HEX placement used in Convert Programming File.
- Any offset or page mismatch will prevent boot.
3. Confirm UFM access and wiring
- Ensure UFM sector is not Hidden and is readable in the On-Chip Flash IP settings.
- Ensure the Nios instruction master can access the On-Chip Flash memory interface and clocks/resets are correct.
Regards,
Fakhrul