OpenCores
URL https://opencores.org/ocsvn/neorv32/neorv32/trunk

Subversion Repositories neorv32

[/] [neorv32/] [trunk/] [docs/] [datasheet/] [soc_bootrom.adoc] - Diff between revs 60 and 61

Go to most recent revision | Show entire file | Details | Blame | View Log

Rev 60 Rev 61
Line 6... Line 6...
[frame="topbot",grid="none"]
[frame="topbot",grid="none"]
|=======================
|=======================
| Hardware source file(s): | neorv32_boot_rom.vhd |
| Hardware source file(s): | neorv32_boot_rom.vhd |
| Software driver file(s): | none             | _implicitly used_
| Software driver file(s): | none             | _implicitly used_
| Top entity port:         | none             |
| Top entity port:         | none             |
| Configuration generics:  | _BOOTLOADER_EN_ | implement processor-internal bootloader when _true_
| Configuration generics:  | _INT_BOOTLOADER_EN_ | implement processor-internal bootloader when _true_
| CPU interrupts:          | none             |
| CPU interrupts:          | none             |
|=======================
|=======================
 
 
As the name already suggests, the boot ROM contains the read-only bootloader image. When the bootloader
[NOTE]
is enabled via the _BOOTLOADER_EN_ generic it is directly executed after system reset.
The default `neorv32_boot_rom.vhd` HDL source file provides a _generic_ memory design that infers embedded
 
memory for _larger_ memory configurations. You might need to replace/modify the source file in order to use
 
platform-specific features (like advanced memory resources) or to improve technology mapping and/or timing.
 
 
 
This HDL modules provides a read-only memory that contain the executable code image of the bootloader.
 
If the <<_int_bootloader_en>> generic is _true_ this module will be implemented and the CPU boot address
 
is modified to directly execute the code from the bootloader ROM after reset.
 
 
 
The bootloader ROM is located at address `0xFFFF0000` and can occupy a address space of up to 32kB. The base
 
address as well as the maximum address space size are fixed and cannot (should not!) be modified as this
 
might address collision with other processor modules.
 
 
 
The bootloader memory is _read-only_ and is automatically initialized with the bootloader executable image
 
`rtl/core/neorv32_bootloader_image.vhd` during synthesis. The actual _physical_ size of the ROM is also
 
determined via synthesis and expanded to the next power of two. For example, if the bootloader code requires
 
10kB of storage, a ROM with 16kB will be generated. The maximum size must not exceed 32kB.
 
 
The bootloader ROM is located at address 0xFFFF0000. This location is fixed and the bootloader ROM size
.Bootloader - Software
must not exceed 32kB. The bootloader read-only memory is automatically initialized during synthesis via the
[TIP]
`rtl/core/neorv32_bootloader_image.vhd` file, which is generated when compiling and installing the
See section <<_bootloader>> for more information regarding the actual bootloader software/executable itself.
bootloader sources.
 
 
 
The bootloader ROM address space cannot be used for other applications even when the bootloader is not
 
implemented.
 
 
 
**Boot Configuration**
 
 
 
If the bootloader is implemented, the CPU starts execution after reset right at the beginning of the boot
 
ROM. If the bootloader is not implemented, the CPU starts execution at the beginning of the instruction
 
memory space (defined via `ispace_base_c` constant in the `neorv32_package.vhd` VHDL package file,
 
default `ispace_base_c` = 0x00000000). In this case, the instruction memory has to contain a valid
 
executable – either by using the internal IMEM with an initialization during synthesis or by a user-defined
 
initialization process.
 
 
 
 
.Boot Configuration
[TIP]
[TIP]
See section <<_bootloader>> for more information regarding the bootloader's boot process and configuration options.
See section <<_boot_configuration>> for more information regarding the processor's different boot scenarios.
See section <<_boot_configuration>> for more information regarding the processor's different boot scenarios.
See section <<_boot_configuration>> for more information regarding the processor's different boot scenarios.

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.