Blocked in Unknown Function after wakeup from SYSTEMOFF w/Bootloader

Hi, I work with SES on an nrf52840 on a custom board. Here is my issue : 

My board can be wakeup from SYSTEM OFF with 2 interrupts on 2 differents GPIOs : 1 is connected on a button and the other is triggered when plugged on a custom charging station. The 2 interrupts where working well before adding the secure bootloader I use for DFU in BLE. When I add the bootloader to the memory of the nrf52840, only the button interrupt allow me to wakeup the board. When I plug the device and the second interrupt is triggered, the only information I can see in debug mode is the Unknown Function at 0x00025D40, the processors seems to loop here during a while and then I can power my board again with the button.

Does anyone have an idea of the problem? here is my shutdown function :

//Enable powering on  
nrf_drv_gpiote_in_config_t my_config=NRFX_GPIOTE_CONFIG_IN_SENSE_HITOLO(false,NRF_GPIO_PIN_PULLUP);
  
err_code = nrf_drv_gpiote_in_init(BUTTON_PIN, &my_config, NULL);             //Initialize the wake-up 
APP_ERROR_CHECK(err_code);                                                  //Check error code returned
nrf_drv_gpiote_in_event_enable(BUTTON_PIN, true);     
  
err_code=nrf_drv_gpiote_in_init(STAT1_PIN, &my_config,NULL);
APP_ERROR_CHECK(err_code);
nrf_drv_gpiote_in_event_enable(STAT1_PIN, true);
 
//Enter System-off
err_code = nrf_sdh_disable_request();
// Softdevice was disabled before going into reset. Inform bootloader to skip CRC on next boot.
nrf_power_gpregret2_set(BOOTLOADER_DFU_SKIP_CRC);
 
NRF_POWER->SYSTEMOFF = 1; //Deep sleep

Parents
  • Hi,

    Which GPIOs are BUTTON_PIN and STAT1_PIN? Where does 0x00025D40 come from? Did you check with a debugger that it is the value of the program counter? And which SDK version and SoftDevice version are you using? I ask for several reasons, but primarily as the SoftDevice size has varied and it would be good to know if 0x00025D40 is in the SoftDevice or your application, and the size of the SoftDevice depends on type and version.

  • Hi,

    I am using Softdevice s140 version 7.2.0 and sdk v15.0. I believe my application starts at address 0x00027000 so 0x00025D40 might be in Softdevice address range. The address is the one given by my debug mode when I pause after triggering the interrupt.

    BUTTON_PIN which is the interrupt working is on GPIO(0,4) STAT1 which is causing the problem is on GPIO(0,25).

Reply Children
Related