This post is older than 2 years and might not be relevant anymore
More Info: Consider searching for newer posts
This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

Bootloader hardfault

Hi,

Im trying to use BLE DFU Bootloader from examples. I loaded SD8 and then bootloader via nrfStudio (dont have a valid app flashed), but I cant see the device from Android app. I decided to do some debugging via Keil. I recompiled Bootloader with no optimisation and moved bootloader address to 0x3A000.

If I try to debug in Keil it doesnt stop at main, but if i manually press stop it gets into hardfault: image description

Memory settings: image description

Compilation settings: image description

Im using Revision 3 chip. What do I do wrong?

app.zip

hex

Bootloader

Bootloader hex O3

bootloader package without BANK_VALID_APP

Bootloader HEX without BANK_VALID_APP

Memory map according to NRF Studio: Memory map

Bootloader optimisation Level 2 gets stuck on run: image description

Image size > 0x6400

Parents
  • Your application is 70kB and not 47kB. This means that you need at least 140kB of application flash space( two banks of 70kB each) when using a Dual Bank Bootloader. If you use the default ROM settings for the bootloader, i.e. the bootloader starts at 0x3C000 then you'll have

    0x3C000 - 0x18000 = 0x24000( 144kB left) 
    

    However, extending the bootloader section in order to debug the bootloader you are left with

    0x3A000 - 0x18000 = 0x22000( 136kB left) 
    

    which is not enough and you will get the Data Size Exceeds Limiterror

  • The size issue turned out to be error with the script I used to create a hexdump of the hexfile you sent me.

    In the bootloader hex you have set the BANK_VALID_APP flag on the bootloader settings flash page. If you are using a single bank bootloader, the application will be erased and the new bootloader is saved to the application flash space. When the bootloader is swapped with the old one, it will check the bootloader settings to see if the BANK_VALID_APP flag is set. If it is set, the bootloader will branch to what it thinks is a valid application, but in reality is just an empty flash area.

    Do not set the BANK_VALID_APP in bootlaoder images when performing OTA DFU. Only set it if you're flashing BL+APP+SD using a programmer.

Reply
  • The size issue turned out to be error with the script I used to create a hexdump of the hexfile you sent me.

    In the bootloader hex you have set the BANK_VALID_APP flag on the bootloader settings flash page. If you are using a single bank bootloader, the application will be erased and the new bootloader is saved to the application flash space. When the bootloader is swapped with the old one, it will check the bootloader settings to see if the BANK_VALID_APP flag is set. If it is set, the bootloader will branch to what it thinks is a valid application, but in reality is just an empty flash area.

    Do not set the BANK_VALID_APP in bootlaoder images when performing OTA DFU. Only set it if you're flashing BL+APP+SD using a programmer.

Children
No Data
Related