Locale Icon
English
  • Forums

    Popular Forums

    • LTspice
    • Video
    • Power Management
    • RF & Microwave
    • Precision ADCs
    • FPGA Reference Designs

    Product Forums

    • Amplifiers
    • Clocks & Timers
    • Data Converters
    • Direct Digital Synthesis (DDS)
    • Energy
    • Interface and Isolation
    • MEMS Inertial Sensors
    • Power Management
    • Processors & DSP
    • Processors & Microcontrollers
    • Switches & Multiplexers
    • Sensors
    • Voltage References
    View All

    Application Forums

    • A2B Audio Bus
    • Audio
    • Automated Test Equipment (ATE)
    • Condition-Based Monitoring
    • Depth, Perception & Ranging Technologies
    • LiDAR Solutions
    • Motor Control Hardware Platforms
    • Speech Processing Solutions
    • Video

    Design Center Forums

    • ACE Evaluation Software
    • ADEF System Platforms
    • Design Tools & Calculators
    • FPGA Reference Designs
    • Linux Software Drivers
    • Microcontroller no-OS Drivers
    • Precision Studio
    • Power Studio Designer
    • Power Studio Planner
    • Reference Designs
    • Robot Operating System (ROS) SDK
    • Signal Chain Designer
    • Software Interface Tools
  • Learn

    Highlighted Webinar

    Power Integrity for High Performance Measurement Systems

    Increasing data rates driven by AI workloads and the evolution from 5G to emerging 6G standards are placing new demands on electronic test and measurement...

    Places

    • ADI Academy
    • ADI Webinars
    • EZ Blogs
    • Video Annex
    • Virtual Classroom

    Libraries

    • 3D ToF Depth Sensing Library
    • Continuous-Wave CMOS Time of Flight (TOF) Library
    • Embedded Vision Sensing Library
    • Gigabit Multimedia Serial Link (GMSL) Library
    • Optical Sensing Library
    • Other Products Library
    • Precision Technology Signal Chains Library
    • Software Modules and SDKs Library
    • Supervisory Circuits Library
    • Wireless Sensor Networks Library

    Upcoming Learning & Events

    • Humanoid Robotics: Deterministic Motion Control & Edge AI Systems
    View All Webinars
  • Community Hub

    Challenge Yourself!

      KCC Quizzes AQQ302 about Bang Gap Reference Generation

      1.Quote of the month: "People Who Say They Sleep Like a Baby usually don't have one" - unknown 2. New quiz AQQ302 about Band Gap Reference Voltage...

    View All

    What's Brewing

      Read a Blog, Take this Quiz for Another Chance to Win a Gift Card! - Watts Going On? — The AI Power Delivery Quiz

      Important: Read the blog first . The quiz questions are all based on the content of the blog: Reimagining Power for AI: Shaping the Future of AI Acceleration...

    View All

    Places

    • Community Help
    • Analog Dialogue Quiz
    • Logic Lounge
    • Super User Program

    Resources

    • EZ Code of Conduct
    • EZ How To Help Articles
    • Getting Started Guide
    • ADI: Words Matter
    • Community Help Videos
    View All
  • ContentZone

    Visit ContentZone

    Search content by industry or technology.
    • Blogs
    • Technical Articles
    • Tutorials
    • Videos
    • Webinars
    Your ADI content all in one place.
    View ContentZone

    The Latest Read

    JESD204 Bring-Up: From Link-Up to Data Integrity

    This blog presents a structured bring-up methodology for the ZCU102 + ADRV9009 platform, stepping through each initialization phase in sequence and identifying...

    New Release

    Signal Chain Designer: DC Error Simulation
    Signal Chain Designer: DC Error Simulation

    This video covers the DC error calculation capabilities of Signal Chain Designer. DC error is unique in that often requires calibration and has so many...

    Recent Technical Insights

    Latest Technical Article from Analog.com
    Game of DronesPart 1: How IMU Navigation Architectures Make or Break a Drone

    This article explains why industrial-grade UAVs require fundamentally different architectures than consumer drones. It highlights the need for inertial...

EngineerZone
EngineerZone
ADSP-SC59x
  • Log In
  • User
  • Site
  • Search
OR
Ask a Question
ADSP-SC59x
  • Processors & DSP
  • SHARC Processors
  • ADSP-SC59x
  • Cancel
ADSP-SC59x
Documents How to Troubleshoot failures of the adi_rom_boot() Function?
  • Q&A
  • Members
  • Tags
  • Cancel
  • Documents
  • ADSP-SC594 UART loopback example.
  • +ADSP-SC598 Booting
  • ADSP-SC835 SPI Flash Read/Write example
  • BootROM Error Handling: No Bypass for Errors Except 0xC
  • Can we enable/disable the internal pull-up/pull-down for PORT/DAI pins by software in ADSP-SC59x/ADSP-2159x?
  • Data Fault Exception
  • Enabling Secure Boot on External Memory in BLx/BLw Formats
  • FAQ: Why enabling C1 and C2 cores without ARM clears Core2 interrupts on ADSP-SC59x Processors?
  • How can the CGU and DDR settings be configured, as initialization code is not supported during secure boot on the ADSP-2156x and ADSP-2159x?
  • How can the status of DAI pins be determined?
  • How does the CRC engine handle endianness and mirroring on input and output?
  • How is Error ID 0xC ('Header checksum failure') related to the error in secure boot with DDR memory?
  • How to Troubleshoot failures of the adi_rom_boot() Function?
  • Is it possible to connect different sources for SPDIF BCLK/FS and HFCLK and can the HFCLK will have jitter?
  • Is it possible to modify the internal routing of the Timer signals?
  • Is it possible to write data to SPI flash in memory-mapped mode?
  • Is OSPI flash supports 4-Byte addressing in SC594?
  • Is the signtool commands("-gencert" and "-cert") available in adi_signtool?
  • Is there a limit to interrupt nesting depth on the ADSP-21593?
  • MDMA Channel Support for OSPI on ADSP-21569 and ADSP-21593/SC594/SC598.
  • MEPU example for ECC error
  • MEPU example for parity error
  • Register Polling Based Synchronization in DMA
  • Significance of flush_data_buffer over cache_invalidate routines.
  • SMPU example for regional ID based protection of L3 memory
  • SMPU example for regional protection of L3 memory
  • SPI transmit collision during slave transmission (CPOL=0, CPHA=0)
  • +Tags List: ADSP-SC59x
  • TAPC_DBGCTL register
  • UART DMA mode example
  • What are the default GPIO/Port Mux pin assignments for External SPI2 Host Boot mode on the ADSP-21835 processor?
  • What is System Cross Bar (SCB) and its usage?
  • What is the default state of the ADSP-SC594 processor, and what happens when it's locked?
  • What is the state of the GPIO during Reset?
  • What is the use of Decoupling capacitors on power pins?
  • What memory regions are protected by SMPU in ADSP-SC59x/ADSP-2159x Processors?
  • What Utilities are recommended for Signing and Simulation in Secure Boot Process?
  • When frame sync error occurs and how to clear it?
  • When IllOpCodeDetected run time error occurs?
  • Why OTPC_SECU_STATE register remains open after lock?
  • Why UART TX and UART RX pins are marked as active low?

How to Troubleshoot failures of the adi_rom_boot() Function?

Here are the troubleshooting steps to follow when the adi_rom_boot() function fails.

1. Make sure that SPU and SMPU configurations are not modified such that ROM cannot access the memory anymore.
2. Make sure no interrupts are still enabled and active, else when you call the new startup and install the default empty error handlers you will vector off to them.
3. Make sure caches for L1 and L2 are all disabled and flushed if applicable before calling the boot API and reset the BTB(Branch Target Buffer). You could be booting in the content via DMA but if caches enabled the core read on the startup could be taking stale data from the previously loaded application.
4. Try setting the stack back to the same location to the boot ROM as documented in the processors boot chapter.
5. The stack space of the primary application should not interfere with the incoming secondary application.
6. The stack space of the primary application should remain uncached.
7. If primary application also uses hook routines related to bootROM API, then those section should also not get any conflicts with incoming secondary application.
8. For secure boot, the entire 8Kb space reserved for boot purpose should not be used by any of the application.
9. When the primary and secondary applications overlap, it can cause booting failures. This overlap may result in the corruption (clobbering) of both applications. To prevent this, the new application should be loaded in a way that it does not overwrite the loading function or the part of the software responsible for jumping to the start of the newly loaded application. In other words, the primary and secondary applications should not overlap. Therefore, it's important to place the bootloader code in a separate memory area to avoid conflicts.

To achieve this, use #pragma section("section_name") directive to place the code in a different memory location.

For example, if adi_rom_boot is called from Start_Application, ensure that Start_Application is placed in a memory section such as L1_Block0 or L2:

#pragma section("section_name")
void Application (void)

{
..
..

adi_rom_boot();

..
..
}

  • Share
  • History
  • More
  • Cancel
 
Related Content
  • RE: Need to reset SPU before calling adi_rom_boot() in application of ADSP-21593
    Divya.P
    Hi, When calling the boot API you bypass all the preboot code that sets up all the C environment for the processor etc. We would recommend trying to undo all the configuration performed by the default...
  • RE: adi_rom_boot  user mode / supervisor mode error
    Santhakumari
    Hi Ariel, The reason may be that the boot stack can be corrupted when using ROM boot API. By default, the boot code places the stack at a dedicated range in the L2 after a processor reset, we define...
  • RE: adi_rom_boot() and interrupts
    NandiniC
    Hi Robrecht, When calling the boot API, you bypass all the preboot code that sets up all the C environment for the processor etc. We would recommend trying to undo all the configuration performed by the...
 
Related Content
  • RE: Need to reset SPU before calling adi_rom_boot() in application of ADSP-21593
    Divya.P
    Hi, When calling the boot API you bypass all the preboot code that sets up all the C environment for the processor etc. We would recommend trying to undo all the configuration performed by the default...
  • RE: adi_rom_boot  user mode / supervisor mode error
    Santhakumari
    Hi Ariel, The reason may be that the boot stack can be corrupted when using ROM boot API. By default, the boot code places the stack at a dedicated range in the L2 after a processor reset, we define...
  • RE: adi_rom_boot() and interrupts
    NandiniC
    Hi Robrecht, When calling the boot API, you bypass all the preboot code that sets up all the C environment for the processor etc. We would recommend trying to undo all the configuration performed by the...
analog-devices logo

About Analog Devices

  • Who We Are
  • Careers
  • Newsroom
  • What We Do (Signals+)
  • Investor RelationsExternalLink
  • Quality & Reliability
  • Sales and Distribution
  • What's New on Analog.com
  • Contact Us

Find Help

  • Support
  • Resources
  • WikiExternalLink
  • Analog Dialogue
  • ADI Developer PortalExternalLink

myAnalog

Interested in the latest news and articles about ADI products, design tools, training, and events?

Go to myAnalog
  • Instagram page
  • Twitter page
  • Linkedin page
  • Youtube page
  • Facebook
  • Legal and Risk
  • Accessibility
  • Privacy Policy
  • Privacy Settings
  • Cookie Settings

©2026 Analog Devices, Inc. All Rights Reserved

analog-devices

About Analog Devices

Down Up
  • Who We Are
  • Careers
  • Newsroom
  • What We Do (Signals+)
  • Investor RelationsExternalLink
  • Quality & Reliability
  • Sales and Distribution
  • What's New on Analog.com
  • Contact Us

Find Help

Down Up
  • Support
  • Resources
  • WikiExternalLink
  • Analog Dialogue
  • ADI Developer PortalExternalLink

myAnalog

Interested in the latest news and articles about ADI products, design tools, training, and events?

Go to myAnalog
Instagram page Facebook Twitter page Linkedin page Youtube page
  • Legal and Risk
  • Accessibility
  • Privacy Policy
  • Privacy Settings
  • Cookie Settings

©2026 Analog Devices, Inc. All Rights Reserved