Article ID: 000086175 Content Type: Troubleshooting Last Reviewed: 11/26/2024

Why there is a call 0x0 inside the assembly code of Nios® II application ?

Environment

    Intel® Quartus® Prime Pro Edition
    Nios® II Embedded Design Suite (EDS)
    Nios® II Processor
BUILT IN - ARTICLE INTRO SECOND COMPONENT
Description

During the Nios® II application development and debug, you might notice a reset command in assembly code view like this "call 0x0". This reset came from a memory getting corrupted. This corruption came from writing to a read-only peripheral, or reading from unknown address. 

So, what will happen to this wrong transaction? it get routed to the "default" slave. The default slave is defined as
1- Peripheral with the largest address span.
2- Peripheral that was selected as the default slave in Qsys.

If you are not defining the default slave, the memory peripheral will be the default slave.

Resolution

To avoid this unexpected reset command, do the following things:

1- Don't write to read only peripherals. 
2- Define a default Qsys Slave peripheral to receive all unassigned transactions.  -- there should be default slave peripheral that would capture the address of the invalid transaction it received.

3- Use AXI timoute bridge or AXI default slave

Related Products

This article applies to 1 products

Intel® Programmable Devices

1