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

DFU on S130

I'm developing application using your devices (PCA10001/PCA10000) and S130 SoftDevice. I tried to implement DFU/OTA feature in my app. For this purpose I used DFU sources distributed for Beacon "nRF51822 Beacon v1.1.0.zip" that based on S110. But I see that DFU takes a lot of RAM - about 5.5k that is acceptable for S110. As I use S130 that takes 10k RAM itself, leaving for application about 6k. So, I can't use DFU with S130 as it takes almost all available RAM.

Please correct me if I'm not right. Otherwise, please, suggest a way to use DFU on S130. Thanks.

Memory map capture memmap.png

Parents
  • @Yaroslav: It's true that the bootloader can take up quite a lot of RAM but it still fit into the 6K RAM available. You can also change the heap size to 0 to get the 1K ram allocated for Heap if you don't use dynamic memory relocation.

    We have ported the bootloader on SDK v6.1 to work with S130, you can have a look here. Note that it's provided as-is.

    bootloader_S130_v09.hex

  • @Yasoslav: Could you let me know more about the issue with the "path for includes for cm0" ? You should have your project placed like this: \Board\nrf6310\device_firmware_updates\bootloader - Debug - S130\

    And it's with SDK v6.1. In my case it's 21kB after compilation.

    The address and size for ROM1 is correct in my project. And you have to make sure BOOTLOADER_REGION_START macro in dfu_types.h matched with the start address of ROM1.

    The bootloader should be located at the top of the code area leaving the area at 0x1D000 and above for the application. Please have a look at the layout here

    Also, because we write into UICR the start address of the bootloader, so it's wise to do a full erase of the chip when you modify the start address of the bootloader.

Reply
  • @Yasoslav: Could you let me know more about the issue with the "path for includes for cm0" ? You should have your project placed like this: \Board\nrf6310\device_firmware_updates\bootloader - Debug - S130\

    And it's with SDK v6.1. In my case it's 21kB after compilation.

    The address and size for ROM1 is correct in my project. And you have to make sure BOOTLOADER_REGION_START macro in dfu_types.h matched with the start address of ROM1.

    The bootloader should be located at the top of the code area leaving the area at 0x1D000 and above for the application. Please have a look at the layout here

    Also, because we write into UICR the start address of the bootloader, so it's wise to do a full erase of the chip when you modify the start address of the bootloader.

Children
No Data
Related