Apparently, the dfu bootloader example in nrf51 SDK 8.1 is not working on PCA10031 type(16K RAM devices). In my case, the device is RedBearLab BLE Nano and nrf51822. Can anybody help?
Apparently, the dfu bootloader example in nrf51 SDK 8.1 is not working on PCA10031 type(16K RAM devices). In my case, the device is RedBearLab BLE Nano and nrf51822. Can anybody help?
You need to change the linker settings of the bootloader project, taking into account that you have 0x4000 byte less RAM.
If you use Keil you need to go to Project -> Options for Target ... -> Target. Then in the lower right half of the pane you have a section called "Read/Write Memory Areas". There you should update the following:
If you use GCC you would have to change the linker script (examples/dfu/bootloader/dfu_gcc_nrf51.ld) in the same way:
RAM
LENGTH
to 0x1380 (line 17)NOINIT
ORIGIN
to 0x20003F80 (line 22)@eith
i have 16k board as well am using s130
my linker file is:
FLASH (rx) : ORIGIN = 0x1b000, LENGTH = 0x25000
RAM (rwx) : ORIGIN = 0x20002080, LENGTH = 0x5f80
it works on 32k board but not on 16k , how can i modify this ?
thanks
Have a look at this post: devzone.nordicsemi.com/.../. You must update the APP_CODE_BASE
and APP_RAM_BASE
values for S130.
The only change you need to make in the linker script for the application when going from 32k RAM to 16k RAM is to subtract 0x4000 from the LENGTH. Then you would get the following:
RAM (rwx) : ORIGIN = 0x20002080, LENGTH = 0x1f80
For the SDK12.1, nrf51 and the bootloader_secure example this wont compile.
Can we lower the start address 0x20002C00? How is this derived? Thanks!