My company has been developing an application using the multicore SDK example, but this code only runs when using the MCUXpresso debugger before any nRESET or power cycle. The SDK example codes: 'lpcxpresso55s69_multicore_manager_cm33_core0' and 'lpcxpresso55s69_multicore_manager_cm33_core1' work only when using the MCUXpresso debugger and immediately after pressing 'Terminate All Debug Sessions'. As soon as the nRESET is applied, the red LED fails to toggle. This code also fails after power cycling and pressing nRESET.
After some debugging by attaching the CMSIS-DAP debug probe, it seems that the hard-fault handler is being invoked upon the subsequent boot after nRESET. The hard fault handler is not invoked when reattaching a debug probe to the multi-core SDK example without a power cycle or press of nRESET after flashing.
The hardfault handler link register contained a value in the MAILBOX_SetValueBits(...) function which seems to indicate a problem with the mailbox. I am not sure if this specific link register value is reproducible, it just happened upon some initial testing.
Any ideas on how to solve this problem? Any help is appreciated!
Thank you for the reply!
I did include the Semihost so I have access to printf(), but it seems that the way that printf works makes it hard fault after an nRESET.
To get around this problem, I simply pruned the printf() statements for a release version and it worked.
That said, there probably shouldn't be a hard fault if using printf() in the release version after including the Semihost. That seems like there might be an issue with the way printf() is redefined in stdio.h.
Hello RyanM314,
As Converse said, the Semihost need work with debugger.
Semihosting explicitly requires a debugger to work. This is by design.