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

Secure DFU Bootloader ROM / RAM configurations for nRF51822_xxAA

Hi,

I have a problem with Secure DFU Bootloader available from SDK 12.1 on nRF51822_xxAA SoC. I use example in SDK 12.1 and when i download it to nRF51822_xxAA it isn't working properly. SoC isn't advertising, and when i go to Debug in Keil uVision program go instatnly to HardFault_Hander in arm_startup_nrf51.s

Initilaly i was using nRF51 DK board with nRF51422_xxAC SoC. I fallowed instruction on Nordic InfoCenter. I compiled project in Keil uVision 5 and downloaded secure dfu bootloader to SoC. Then i created zip with new program and uploaded it with nRF Connect application on Android System. Everything worked properly.

Is this a problem with memory settings? The xxAC SoC has more RAM memory (32kB) then xxAA (16kB). What is the correct ROM/RAM settings for xxAA chip. For nRF51422_xxAC correct settings are:

image description

Also on custom board with nRF51822_xxAA which i use has lack of external LFCLK source. So for correct SoftDevice initilize i create my custom_board.h and set NRF_CLOCK_LFCLKSRC to Synthesized LFCLK from HFCLK. Could it be also the reason of problem?

#define NRF_CLOCK_LFCLKSRC      {.source        = NRF_CLOCK_LF_SRC_SYNTH,           \
                             .rc_ctiv       = 0,                                \
                             .rc_temp_ctiv  = 0,                                \
                             .xtal_accuracy = NRF_CLOCK_LF_XTAL_ACCURACY_250_PPM}
Parents
  • Hi,

    Finally I solved the problem. It wasn't a problem with the ROM/RAM settings or lack of external LFCLK on my custom board with nRF51822_xxAA SoC. I was analyzing code line by line and i detected that the problem was made by Scheduler. Scheduler Queue Size was to big.

    To solve this problem was enought to reduce the size of Scheduler Queue. In file nrf_dfu.c need to be changed line 28 from:

    #define SCHED_QUEUE_SIZE                20
    

    to

    #define SCHED_QUEUE_SIZE                10
    

    Due to this change secure bootloader work properly on my custom board, I was able to download new application with nRF Connect on Android.

Reply
  • Hi,

    Finally I solved the problem. It wasn't a problem with the ROM/RAM settings or lack of external LFCLK on my custom board with nRF51822_xxAA SoC. I was analyzing code line by line and i detected that the problem was made by Scheduler. Scheduler Queue Size was to big.

    To solve this problem was enought to reduce the size of Scheduler Queue. In file nrf_dfu.c need to be changed line 28 from:

    #define SCHED_QUEUE_SIZE                20
    

    to

    #define SCHED_QUEUE_SIZE                10
    

    Due to this change secure bootloader work properly on my custom board, I was able to download new application with nRF Connect on Android.

Children
Related