Embedded Design Handbook

ID 683689
Date 8/28/2023
Public
Document Table of Contents

5.3.9.2.3. Nios® II Reset Address

The Nios® II reset address is the address of the first instruction the processor executes after it is released from reset. Therefore, in a Nios® II system capable of externally controlled boot, the Nios® II reset address must point to a writable memory (RAM). This class of reset address is typically not what you want in a traditional boot scenario, but in the external boot control situation described in this section, it is important that the Nios® II reset address point to RAM.

The Nios® II reset address must point to RAM because, to direct the Nios® II processor to the application code that was just copied into RAM, the external processor must be able to write the first instruction (or instructions) that the Nios® II processor executes upon reset. Typically, the instruction written to the reset address is an unconditional branch (br) to the entry point of the application.

You can choose any unused 32-bit location in RAM as the reset address for the Nios® II processor, but the base address (offset 0x0) of the Nios® II program memory—the memory region that contains the .text section—is usually a good choice. By default, the Nios® II exception table is placed at offset 0x20 in the program memory, and the remainder of the application code is placed following the exception table in consecutive memory. This arrangement leaves offsets 0x0 through 0x1C available. A reset address at offset 0x0 guarantees that the difference between the reset address and the application entry point—assumed to be early in the application code—never exceeds 64 Kbytes, as required for this process to work. For a description of why the difference cannot exceed 64 Kbytes, see the discussion of instruction step 1 in the "External Boot Flow" section.