Replies: 3 comments 2 replies
-
Hey @alexazon.
This refers to a direct boot mode, i.e. there is no code being executed that is responsible (like the bootloader) of fetching the actual application code.
This option is supported! 😉
So, all you need to do is to connect your application code memory to the external bus interface and "map" it to address zero. You can "halt" the core by keeping the reset signal active (= low) until your external memory is initialized with the actual application code. |
Beta Was this translation helpful? Give feedback.
-
Hi @stnolting, First of all: Thanks for your quick response. I've already played around with the boot and imem parameters in a simulation and noticed the behavior you describe. Let me explain my use case in a more detailed way. I need to use the wishbone (XBUS) interface to access a wishbone subsystem with multiple devices, connected by a wishbone crossbar. There are at least 4 different wishbone masters (including the NEORV32). If I add the IMEM here, I'll get multiple delays (crossbar) and possible blockages (depending on my implementation). That's why I prefer to have the IMEM exclusively and close to at the processor. Additionally I wanted to change the constants...
... to a higher address space. 0x0 to 0x80000000 shall be the wishbone address range. I see 2 ways to fix this:
Please let me know if I missed something. For technical reasons I would like to instantiate the IMEM with a MIF file [1]. In other words: I need a default neorv32 application in my FPGA bitstream. If I understand your code correctly, I need to generate my own neorv32_application_image.vhd to do this, in case I don’t use the XBUS? [1] https://www.intel.com/content/www/us/en/programmable/quartushelp/17.0/reference/glossary/def_mif.htm |
Beta Was this translation helpful? Give feedback.
-
Hi, First of all: Thank you for adding the MIF support. I'll test it when it's inside the main branch (and all checks are successful 😄)
I assume that I need to add registers here to multiplex a 32bit data/address bus, but on the other hand I would like to avoid additional delays. Silly question: Ok, let's assume I'm using the XBUS and the AXI interface. What happens when I issue a simple pointer-based write? What I mean:
How does the "CPU" know which interface to use? |
Beta Was this translation helpful? Give feedback.
-
Hi all,
Quick question about the boot process. I want to use the indirect boot mode (no boot loader).
Quote:
My understanding is that the neorv32_top.vhd should provide a way to connect an external RAM/ROM? Like a generic i.e. MEM_USE_EXTERNAL and a view pins (imem_req/imem_rsp)?
Or what is the official/correct way to do this?
For better understanding, my use case is as follows:
Beta Was this translation helpful? Give feedback.
All reactions