This post is older than 2 years and might not be relevant anymore
More Info: Consider searching for newer posts

S112 crash at address 0x18808

Hi,

On a dice projet based on NRF52810. Sometime when I plug the battery charger the firmware crash at address 0x18808 and the call stack is empty !

This address is in softdevice , and I can't determine the cause !

SDK 16.0

Softdevice version: s112_nrf52_7.0.1_softdevice.hex

Please can you explain what is the function at 0x18808 address ?

Regards,

Gaétan

Parents
  • Hi,

    The batterie charger is :

    I have found a current injection on a pin "LED" connected directly to nrf52810.

    When bootloader software is present -> sometime  fix at adresse 0x18808

    When bootloader software is not in flash -> sometime  firmwre restart

    Now I make multiple tests with nRF52810 pin forced to ouput whith high current configuration...

    Regards,

    Gaétan

    EDIT:

    Now, without charger...

    I allways have the same fix at address 0x18808 when I connected to NUS !

    Last log is : <info> app: Data len is set to 0xB6(182)

    NrfToolBox: 

    With s112_nrf52_7.3.0_softdevice.hex address is 0x188D4

    EDIT 2:

    When I put the firmware compiled for nRF52810 directly in a PCA10040 (NnRF52832) all is OK no fix but in a nRF52810 allways fix when etablish a NUS connection. No problem when using DFU service. 

  • Hi Gaetan, 

    Could you please confirm that even without the charger you still have the issue when you are trying to connect with NUS ? 

    Could you check if you have any log on the device ? Any assertion ? Could you send the full log ?
    If you test with unmodified NUS example do you have the same issue  ? 

  • Yes, with or without bootlader in memory, this the same.

    Bootloader source files:secure_bootloader_ble.zip

  • Please step into the nrf_dfu_svci_vector_table_set() function in your application and check why it says "error : No bootloader was found" 
    Without properly detecting the bootloader the application will fail when there is any activity related to the bootloader. It's most likely the reason of the crash. 

    To be able to detect the bootloader, either the bootloader address need to be written in to MBR or into UICR.


  • The issue is the same with the bootloader installed or not.

    Please look my code. APP_ERROR_CHECK is comment for my dev in DEBUG...

        // Initialize the async SVCI interface to bootloader.
        err_code = ble_dfu_buttonless_async_svci_init();
    #ifndef DEBUG
        //En DEBUG on a pas le bootloader, il est donc normal d'avoir une erreur
        APP_ERROR_CHECK(err_code);
    #endif

    SoftDevice is always loaded and I have make a lot of projects with SD and bootloader and I always use this code...

    Please can you run the firmare in a nRF52810 and check the crash at 0x18808 or 0x188D4 ?

  • Hi Gaetan, 

    The error at 0x18808 and 0x188D4 pointing us to the hardfault handler in the softdevices. 

    I know that it's the same with or without the bootloader. But from what I can see even with the bootloader installed you still receive "error : No bootloader was found" , is this correct ? 

    Please confirm if you test the NUS example without the DFU buttonless service implemented you don't have any issue. 

    If you don't flash the application did the softdevice + bootloader works (can do DFU ) ?

    If it's the case, please send us your bootloader project file so we can compile here, as well as the NUS + DFU buttonless project. 

  • I know that it's the same with or without the bootloader. But from what I can see even with the bootloader installed you still receive "error : No bootloader was found" , is this correct ? 

    No, when I have bootaloder, I don't have the message "error : No bootloader was found". All is ok with bootloader.

    Please confirm if you test the NUS example without the DFU buttonless service implemented you don't have any issue. 

    I confirm, all is ok with NUS example.

    If you don't flash the application did the softdevice + bootloader works (can do DFU ) ?

    I all is OK

    Here this Bootloader + Application + Sodtdevice with services (NUS +DFU) If you connect to NUS -> crash in softdevice

    I send all source file in private message...

Reply
  • I know that it's the same with or without the bootloader. But from what I can see even with the bootloader installed you still receive "error : No bootloader was found" , is this correct ? 

    No, when I have bootaloder, I don't have the message "error : No bootloader was found". All is ok with bootloader.

    Please confirm if you test the NUS example without the DFU buttonless service implemented you don't have any issue. 

    I confirm, all is ok with NUS example.

    If you don't flash the application did the softdevice + bootloader works (can do DFU ) ?

    I all is OK

    Here this Bootloader + Application + Sodtdevice with services (NUS +DFU) If you connect to NUS -> crash in softdevice

    I send all source file in private message...

Children
  • Hi Gaetan,

    I have just tested your BL+Settings+App+SD.hex file on my nRF52810 dev kit and it worked fine. 
    You can see the screen recording here: 


    This is quite strange. Do you have any other hardware board to test ? 
    Could you record the screen when you test ? What exactly you meant by "connecting to NUS" 
    If you test with the buttonless example (no NUS) do you have any trouble ? 

  • Hi, 
    I'm back from holiday...

    I have make some tests with 

    and the crash occur only if SES is in debug mode !

    Thanks for confirmation:

    The error at 0x18808 and 0x188D4 pointing us to the hardfault handler in the softdevices. 

    Please can you explain why softdevice don't fire the function app_error_fault_handler() when hard fault is catched ?

    Thanks

  • Hi Gaetan, 
    When you are running in debug mode did you stop at any breakpoint and then continue ? 

    Have you built your application so that it's friendly for debugging ? (build with no optimization )
    The app_error_fault_handler() only handle assertion that thrown by the softdevice or the SDK, not the hardfault. It's not possible to return to the application from the softdevice when you have a hardfault. 

    Please try to narrow down the issue by comparing to our DFU Buttonless example. Please try to test if you can reproduce the issue with the example. 

  • When you are running in debug mode did you stop at any breakpoint and then continue ? 

    Never. But I download firmware in flash memory. and after I use "attach to debbuger" menu for connect Jlink RTT to debug terminal in SES.

    I continue to investigate... and send feedback.

  • You can use the RTT Viewer application to see the log without having to "attach to debugger" in SES. 

Related