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

  • I found the issue. The image size was 0x6000 bytes and the size reserved for the bootloader was 0x5C00, i.e. 0x400 (1kB) too large.

    Change the ROM/RAM settings to the following

    IROM1 start: 0x39C00 size:6000
    

    and set BOOTLOADER_REGION_START to 0x00039C00 in dfu_types.h.

Reply Children
No Data
Related