This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

The easiest way to debug a lockup reset on Cortex M7

In my Cortex M7 based project I am in a condition where often a reset takes place apparently for no reason. The only thing I can think of is that there has been a lockup.
If I have a breakpoint at the first instruction of the Handler Reset is it possible then to know the cause of the lockup? In other words, how can I debug the lockup after the reset has taken place?

Best regards

Max

Parents
  • None of the documents related to RT1051 refers to ETB, but only to ETM.

    Do you mean the system crash right after getting into beginning of main()? (the description is not very clear).

    I'll try to explain better: the SOC RT1051 has a ROM bootloader (whose code is written by NXP and is obviously closed). At reset resetISR in ROM bootloader is executed. Then, after all the work the ROM bootloader does, the execution jumps into my startup code, which copies .data to RAM and resets .bss. WDTs are turned off and caches enabled, and then execution jumps to the main(). The main() enables faults and calls the function to initialize the multiplexing of GPIO pins and ports. This function is never exited. But going into assembler step-by-step debug everything works, so the only way I have to debug is to impose breakpoints by bisectioning the code.

    So the crash happens many instructions after entering the main().

    best regrads

    Max

Reply
  • None of the documents related to RT1051 refers to ETB, but only to ETM.

    Do you mean the system crash right after getting into beginning of main()? (the description is not very clear).

    I'll try to explain better: the SOC RT1051 has a ROM bootloader (whose code is written by NXP and is obviously closed). At reset resetISR in ROM bootloader is executed. Then, after all the work the ROM bootloader does, the execution jumps into my startup code, which copies .data to RAM and resets .bss. WDTs are turned off and caches enabled, and then execution jumps to the main(). The main() enables faults and calls the function to initialize the multiplexing of GPIO pins and ports. This function is never exited. But going into assembler step-by-step debug everything works, so the only way I have to debug is to impose breakpoints by bisectioning the code.

    So the crash happens many instructions after entering the main().

    best regrads

    Max

Children