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

Bootloader error after successfully application transfer

Hi All,

I have an  issue with bootloader, in this i am successfully transferred application but after that my application not started.

i am just upgrading the sdk from 11.0 to 14.2.

i am uploading the both version's bootloader  memory addresses. please look at this and suggest me next stop.

this is the memory address in 14.2

MEMORY
{
  FLASH (rx) : ORIGIN = 0xf3000, LENGTH = 0xb000
  RAM (rwx) :  ORIGIN = 0x200027e0, LENGTH = 0x3d7a0
   
  uicr_bootloader_start_address (r) : ORIGIN = 0x10001014, LENGTH = 0x4
  bootloader_settings_page (r) : ORIGIN = 0x000FF000, LENGTH = 0x1000
  mbr_params_page (r) : ORIGIN = 0x000FE000, LENGTH = 0x1000
  uicr_mbr_params_page (r) : ORIGIN = 0x10001018, LENGTH = 0x4
}

this is the memory address in 11.0

MEMORY
{
  APPLICATION (rx) : ORIGIN = 0x71000, LENGTH = 0x9000 
  RAM (rwx) :  ORIGIN = 0x20002C00, LENGTH = 0x5380
  NOINIT (rwx) :  ORIGIN = 0x20007F80, LENGTH = 0x80

    DM_RAM_BUFFER    (rwx)    :    ORIGIN = 0x2000D000, LENGTH = 0x1000            /* */    
    CONFIG             (rwx)     :    ORIGIN = 0x2000E000, LENGTH = 0x2000        /* */

  BOOTLOADER_SETTINGS (rw) : ORIGIN = 0x0007B000, LENGTH = 0x1000
  UICR_BOOTLOADER (r) : ORIGIN = 0x10001014, LENGTH = 0x04
  MBR_PARAMS_PAGE (rw) : ORIGIN = 0x0007A000, LENGTH = 0x1000
  UICR_MBR_PARAM_PAGE(r) : ORIGIN = 0x10001018, LENGTH = 0x04
}

if you any this for this please ask.

Thanks,

Prateek

Parents
  • Hi All,

    here is the log i can found during debug,

    :INFO:Received execute object
    :INFO:Before OP execute
    :INFO:Valid Data Execute
    :INFO:Erasing old settings at: 0x0007b000
    :INFO:Erasing: 0x0007b000, num: 1
    :INFO:Writing 0x00000060 words
    :INFO:Writing settings...
    :INFO:Waiting for 0 pending flash operations before doing postvalidate.
    :INFO:Doing postvalidate
    :INFO:Current bank is bank 0
    :INFO:Successfully run the postvalidation check!
    :INFO:Erasing old settings at: 0x0007b000
    :INFO:Could not queue writing of DFU Settings
    :INFO:Erasing old settings at: 0x0007b000
    :INFO:Could not queue writing of DFU Settings
    :INFO:Erasing old settings at: 0x0007b000
    :INFO:Erasing: 0x0007b000, num: 1
    :INFO:Writing 0x00000060 words
    :INFO:Writing settings...
    :INFO:Sending Response: [0x4, 0x1]
    :INFO:Resetting device.
    :INFO:In nrf_dfu_transports_close
    :INFO:num transports: 1
    :INFO:Waiting for buffers to be cleared before disconnect
    :INFO:Return true. App was valid
    :INFO:Enter nrf_dfu_app_is_valid
    :INFO:Return true. App was valid
    :INFO:Jumping to: 0x0001f000
    :INFO:Running nrf_bootloader_app_start with address: 0x0001f000
    :INFO:Disabling interrupts
    :INFO:Setting SD vector table base: 0x0001f000


    :INFO:In nrf_bootloader_init
    :INFO:In real nrf_dfu_init
    :INFO:running nrf_dfu_settings_init
    :INFO:Enter nrf_dfu_continue
    :INFO:Valid App
    :INFO:Watchdog Initialized
    :INFO:Enter nrf_dfu_app_is_valid
    :INFO:Return true. App was valid
    :INFO:Enter nrf_dfu_app_is_valid
    :INFO:Return true. App was valid
    :INFO:Jumping to: 0x0001f000
    :INFO:Running nrf_bootloader_app_start with address: 0x0001f000
    :INFO:Disabling interrupts
    :INFO:Setting SD vector table base: 0x0001f000

  • So you are able to debug the new bootloader after updating the bootloader and SoftDevice from SDK v11.0.0 to SDK v14.2.0? From the log output it looks like the bootloader is starting the application. Are you able to debug the new application? If you're using GCC then I recommend using Segger Ozone for debugging.

  • Hi, i also mention debug logs.

    ----------------

    :INFO:In nrf_bootloader_init
    :INFO:In real nrf_dfu_init
    :INFO:running nrf_dfu_settings_init
    :INFO:Enter nrf_dfu_continue
    :INFO:Valid App
    :INFO:Watchdog Initialized
    :INFO:Enter nrf_dfu_app_is_valid
    :INFO:Return true. App was valid
    :INFO:Enter nrf_dfu_app_is_valid
    :INFO:Return true. App was valid
    :INFO:Jumping to: 0x0001f000
    :INFO:Running nrf_bootloader_app_start with address: 0x0001f000
    :INFO:Disabling interrupts
    :INFO:Setting SD vector table base: 0x0001f000

    -------------------

    i always find these lines in debug but my main program not started after dfu.

    in main application i am also writing some debug print so that i can verify the stage of application.

    have you any think from me, please ask.

    coz i am the last stage of the development and i have less time to solved this issue.

  • I ask again, have you actually tried to debug the application with Segger Ozone or GDB? If you are you using RTT as the logging backend then you might have to reconnect with Segger RTT viewer as the RTT control block may not be located at the same location in RAM in the application and the bootloader. 

    You can also readout the CPU registers after the DFU to see if code is being executed in the application region, i.e. nrfjprog --readregs

Reply
  • I ask again, have you actually tried to debug the application with Segger Ozone or GDB? If you are you using RTT as the logging backend then you might have to reconnect with Segger RTT viewer as the RTT control block may not be located at the same location in RAM in the application and the bootloader. 

    You can also readout the CPU registers after the DFU to see if code is being executed in the application region, i.e. nrfjprog --readregs

Children
No Data
Related