cancel
Showing results for 
Search instead for 
Did you mean: 

Complex Bootloader Jump External Flash Application

HispaEmo
Associate III

Hello everyone,

I have been working on a custom bootloader for the STM32H735 microcontroller and I am encountering an issue when attempting to jump to my main application stored in external flash memory. Here's a brief overview of what I've done so far:

  1. Developed a Demo Bootloader: I started by creating a demo bootloader based on the ExtMem_Boot example. This bootloader successfully jumps to applications stored in external flash memory. Both a simple application (printing RTC values, just for TESTING) and a more complex application with multiple functionalities work perfectly when jumped to from this demo bootloader.

  2. Developed a More Complex Bootloader: I then developed a more complex bootloader that includes functionalities like CRC calculation, erasing sectors, and loading a new image from an SD card. This bootloader also successfully jumps to the simple RTC application without any problems.

  3. Encountered Issues with Main Application: However, when I attempt to jump to my main application (which has multiple functionalities and is much more complex) from this complex bootloader, I encounter the following error:

     

    Break at address "0x900064d0" with no debug information available, or outside of program code.

    This error occurs right after calling JumpToApplication(). After executing the jump, it sends me to the address 0x900064d0. I've double-checked the memory addresses and ensured that the application is correctly placed in the external flash.

    HispaEmo_0-1720695797792.png

    Request for Help:

    I would greatly appreciate any guidance or suggestions on what might be causing this issue. Specifically, I am looking for advice on:

    • Potential reasons for the application not jumping correctly when it is more complex.
    • Debugging steps or tools that could help identify the root cause of the problem.
    • Any additional considerations for handling more complex applications when jumping from a bootloader.

    Thank you in advance for your help and support!

    Best regards,

    Emo
1 ACCEPTED SOLUTION

Accepted Solutions
HispaEmo
Associate III

Hello everyone,

I'm happy to report that I have resolved the issue I was facing with my bootloader project. I'm posting this solution because I regularly turn to this forum for help with challenging problems, and I hope this post can assist other developers facing similar issues.

Problem Summary: I developed a complex bootloader that calculates CRC, erases memory, copies images from an SD card, etc. When jumping to a simple application like an RTC printout, everything worked fine. However, when trying to jump to my main project with multiple functionalities, I encountered the following error:

Break at address "0x900064d0" with no debug information available, or outside of program code.

Solution: The root of the problem was that the complex bootloader project was not configuring the HyperRAM. Unlike the simple RTC project, the main project relies on the HyperRAM, and its absence was causing the jump to fail.

By ensuring that the HyperRAM was properly configured in the bootloader, I was able to successfully jump to the main application without any issues.

Steps Taken:

  1. Verified that the HyperRAM was required by the main application.
  2. Added the necessary configuration and initialization for the HyperRAM in the bootloader.
  3. Re-tested the jump to the main application, which then executed successfully.

I hope this helps anyone facing similar issues. It's always rewarding to overcome these hurdles, and sharing solutions is a great way to support our developer community.

Best regards,
Emo

View solution in original post

1 REPLY 1
HispaEmo
Associate III

Hello everyone,

I'm happy to report that I have resolved the issue I was facing with my bootloader project. I'm posting this solution because I regularly turn to this forum for help with challenging problems, and I hope this post can assist other developers facing similar issues.

Problem Summary: I developed a complex bootloader that calculates CRC, erases memory, copies images from an SD card, etc. When jumping to a simple application like an RTC printout, everything worked fine. However, when trying to jump to my main project with multiple functionalities, I encountered the following error:

Break at address "0x900064d0" with no debug information available, or outside of program code.

Solution: The root of the problem was that the complex bootloader project was not configuring the HyperRAM. Unlike the simple RTC project, the main project relies on the HyperRAM, and its absence was causing the jump to fail.

By ensuring that the HyperRAM was properly configured in the bootloader, I was able to successfully jump to the main application without any issues.

Steps Taken:

  1. Verified that the HyperRAM was required by the main application.
  2. Added the necessary configuration and initialization for the HyperRAM in the bootloader.
  3. Re-tested the jump to the main application, which then executed successfully.

I hope this helps anyone facing similar issues. It's always rewarding to overcome these hurdles, and sharing solutions is a great way to support our developer community.

Best regards,
Emo