- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hello everyone,
I’ve been working with the DE10-Nano board, following the guide provided in this link: SocBootFromFPGA (https://community.intel.com/t5/FPGA-Wiki/SocBootFromFPGA/ta-p/735773).
I successfully booted the HPS from the FPGA and ran the ARM Hello World program. Now, I’d like to make some modifications:
- Replace the ARM Hello World binary with a Nios II binary (nios_app.bin).
- Store the Nios II application binary on the SD card.
- Upon power-up, the HPS should load the Nios II application binary into SDRAM and signal that the code has been successfully loaded into SDRAM. Once the signal is received, the Nios II core in the FPGA should execute the code stored in SDRAM.
Steps I’ve Taken:
Booting HPS from FPGA: I followed the steps in the above guide to boot the HPS from FPGA successfully. The ARM Hello World program (hello-mkimage.bin) ran correctly.
Questions:
- What is the correct process for creating a Nios II application binary (.bin) that can be stored on the SD card and executed from SDRAM?
- Do I need to modify the preloader from the tutorial to load the Nios II binary into SDRAM automatically? If yes, what changes are required?
- How can I configure the Nios II processor to execute code directly from SDRAM using the HPS-to-FPGA SDRAM Bridge? (I refer Nios II Access HPS SDRAM example from the DE10-Nano System CDROM. I attempted to read data using ADDRESS_SPAN_EXTENDER_0_WINDOWED_SLAVE_BASE. However, doing this causes: My Nios II program to become stuck. The ARM Hello World program to stop running as well).
- How should I synchronize between the HPS and the Nios II core to ensure the code is loaded into SDRAM before execution starts?
My Setup:
- Board: DE10-Nano
- FPGA Tool: Quartus Prime 18.1
- EDS SoC: 18.1
- HPS Preloader: Configured based on the SocBootFromFPGA guide.
I’m still new to working with Nios II and the SoC FPGA, so I’d appreciate any guidance, examples, or configurations that can help me get this working.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi
In your use case, the HPS is using the DDR, the Nios could not run from the DDR.
The Nios would need a dedicated DDR to run on.
Regards
Jingyang, Teh
Link Copied
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi
You could not run the Nios HelloWorld in the HPS.
It was not compiiled to run on the HPS.
You will need to compile the the helloworld using a cross compiler.
Try taking a look the steps below on cross compiling a hello world for hps.
https://www.rocketboards.org/foswiki/pub/Documentation/DE10Standard/DE10-Standard_My_First_HPS.pdf
Regards
Jingyang, Teh
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi,
Thanks for your response! To clarify, I don't need my Nios II program to run on the HPS. Instead, the HPS only acts as a loader — it stores the Nios II program on an SD card and loads it into the SDRAM. The SDRAM is on the HPS side, and my goal is for the Nios II processor on the FPGA side to fetch instructions directly from this SDRAM.
Is it possible to configure the system in this way?
Thank you!
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi
Happy New Year!
This is interesting, Have not tried this before.
However I think it is possible.
You would need to set the Nios to boot from the EMIF controller.
Then the HPS could writ the elf file into the DDR and reset the Nios.
You will need to set the Nios to boot on DDR. (set the reset and exception vector to DDR , Same as the flow in on chip memory)
Regards
Jingyang, Teh
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Thank you.
I tried adding a DDR3 SDRAM controller with UniPHY in Qsys, but I received an error: "illegal connection on io input buffer primitive soc_system". It appears that the DDR3 is already connected to the controller on the HPS side, and the FPGA cannot directly connect to the DDR3 without using the F2H bridge.
From what I understand, since the DDR3 is managed by the HPS, Nios II on the FPGA side must access it via the F2H bridge. However, I’m unsure about how exactly Nios II can fetch instructions from DDR3 through the F2H bridge and whether a memory span extender is required in this case.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi
In your use case, the HPS is using the DDR, the Nios could not run from the DDR.
The Nios would need a dedicated DDR to run on.
Regards
Jingyang, Teh
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi
As we do not receive any response from you on the previous question/reply/answer that we have provided. Please login to ‘https://supporttickets.intel.com/s/?language=en_US’, view details of the desire request, and post a feed/response within the next 15 days to allow me to continue to support you. After 15 days, this thread will be transitioned to community support. The community users will be able to help you on your follow-up questions.
Regards
Jingyang, Teh

- Subscribe to RSS Feed
- Mark Topic as New
- Mark Topic as Read
- Float this Topic for Current User
- Bookmark
- Subscribe
- Printer Friendly Page