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