As title.
In nRF54L15 DK, I set "SB_CONFIG_BOOTLOADER_MCUBOOT=y" in file "sysbuild.conf".
It makes main function GPIO toggle stop.
Do have any solution to prevent this problem?



result:

As title.
In nRF54L15 DK, I set "SB_CONFIG_BOOTLOADER_MCUBOOT=y" in file "sysbuild.conf".
It makes main function GPIO toggle stop.
Do have any solution to prevent this problem?



result:

Hello,
Is the gap shown in your logic trace happening while the chip is starting up after a reset? The bootloader executes first at startup and is responsible for validating the application's signature before booting it. However, 10 us seems a little too short to complete this part of the boot sequence.
Best regards,
Vidar
Hi Vidar
The situation has no reset occur.
Austin
Hi Vidar
The situation has no reset occur.
Austin
Hi Austin,
Thanks for confirming. 10 us was too short anyway. What is likely happening is that your main loop is preempted by the system timer interrupt (GRTC IRQn). This can happen regardless if you have a bootloader present or not. To confirm this, you can try to mask the interrupts before entering the while loop.
#include <zephyr/kernel.h>
int main(void)
{
...
(void) irq_lock();
while(1) {
...
}
...
Best regards,
Vidar
Hi Vidar
I added "(void) irq_lock();" before while(1), it works.
The gpio toggle continues.
I will check when (void) irq_lock(); added, DFU works or not.
Austin
No, it is not a solution to keep the IRQs locked. It will prevent DFU and other tasks from being performed. Maybe you can say a bit more about what you are trying to achieve and what your requirements are.
Hi Vidar
Thanks your reply so quickly.
I am using Timer00 every 4us interrupt once. (Note Timer20 is not works 4us, but 6us is okay)
Because that I need very stable Timing to do RF transceive.(2.4G Propritery)
-------------------------------------------------------------------------------------------------------------
By the way, do you know how to reduce Timer interrupt cost?
The Timer Interrupt just toggle GPIO. and it cost 1us.
Even I removed GPIO toggle from Timer Interrupt, it still cost 800ns.
Austin
I am using Timer00 every 4us interrupt once.
Does it have to be done inside an interrupt? With this short interval you will likely be spending most of the available CPU time on context switching, which is not very efficient. I am not sure why you did not get it to work with TIMER20 but not the base clock on this is 16MHZ compared to the 128 MHz on TIMER00.
The Timer Interrupt just toggle GPIO. and it cost 1us.
It is possible to completely offload the CPU if you only need to toggle a GPIO by combining the TIMER instance with DPPI and GPIOTE.