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

S310 v2.0 + SDK 7.x.x +16kB RAM chip bootloader example

I'm migrating from S310 v1.0 + SDK 5.2.0 to the latest S310 v2.0 + SDK 7.1.0 (to be able to update also BL and SD).

I have used OTA DFU based on example included in SDK 5.2.0 with chip nRF51422-QFAA.

Now I try to use bootloader example from SDK 7.1.0 wich is made for S110 and 32kB RAM chip, so I have modified:

  • chip device to QFAA (16kB RAM)

  • IROM1 (0x3C000; 0x4000) + IRAM1(0x20000000; 0x3F80) + IRAM2(0x20003F80; 0x80)

  • Preprocesor Symbols (Keil): __HEAP_SIZE=0 NRF51 BLE_STACK_SUPPORT_REQD SOFTDEVICE_PRESENT BOARD_CUSTOM PSTORAGE_RAW_MODE_ENABLE

  • LED and BUTTON defines (dfu_transport_ble.c is using another two leds, I had to redirect them into my only LED on my board)

I flashed new S310 v2 and modified bootloader but I can't see even any BLE channel. I'm probably something missing but I can't find any other modifications necessary for port example to S310.

Do you have a plans to make bootloader example even for S310 with 16kB RAM chips?

Parents
  • All the examples in SDK 7.1.0 are made for the new PCA10028 (nRF51 DK) or PCA10031 (nRF51 dongle) development boards. So you must change your Keil define constant to the board you have, as described here.

    In order to have the standard S110 bootloader from SDK 7.1.0 to work with S310 v2.0.0 softdevice, make modifications to the bootloader as described on this thread for S310 v2.0.0

    The bootloader in SDK 7.1.0 needs an init packet to validate if the application image that is to be transferred is valid or not. You can use Android nRF Toolbox DFU v1.11.1 (available on Google Play) to transmit the applicaiton image. The init file (.dat file) and the application file (.hex file, e.g. ble_app_hrs) must match together. In nRFToolbox there are two files that match together by default, namely the Nordic Semiconductor/Board/pca10028/ble_app_hrs_dfu_s110_v7_1_0_ext_init.dat and Nordic Semiconductor/Board/pca10028/ble_app_hrs_dfu_s110_v7_1_0.hex. This brobably only works with the new pca10028 board. Also, for any other application, CRC needs to be calculated for that application and then inserted into the init file.

    In short terms, I would not recommend to make the S110 bootloader work for now for S310, I would wait for nRF51 SDK 8.0.0 which is only a few weeks away from release. Hopefully, SDK 8.0.0 makes it easier to upload custom S310 application via bootloader.

  • I just went through the process of porting the SDK 7.1.0 OTA DFU update mechanism (bootloader and DFU service) to the IAR tool chain using S110 7.1.0. DFU service was added to our application, target device is nRF51422-CEAA. After getting this working I went back and rebuilt targeting the 2.0.1 S310 and OTA DFU hit the ground running. I'm using the Android MCP (with init files) to perform the update.

    I had to make the following changes for S310:

    • define S310 instead of S110 to preprocessor (app, bootloader)

    • include s310 instead of s110 softdevice headers (app, bootloader)

    • set ram region start address to 0x20002400 instead of 0x20002000 (app, bootloader)

    • set rom region start address to 0x0001D000 instead of 0x00016000 (app only)

    No other changes, just re-build app and bootloader.

Reply
  • I just went through the process of porting the SDK 7.1.0 OTA DFU update mechanism (bootloader and DFU service) to the IAR tool chain using S110 7.1.0. DFU service was added to our application, target device is nRF51422-CEAA. After getting this working I went back and rebuilt targeting the 2.0.1 S310 and OTA DFU hit the ground running. I'm using the Android MCP (with init files) to perform the update.

    I had to make the following changes for S310:

    • define S310 instead of S110 to preprocessor (app, bootloader)

    • include s310 instead of s110 softdevice headers (app, bootloader)

    • set ram region start address to 0x20002400 instead of 0x20002000 (app, bootloader)

    • set rom region start address to 0x0001D000 instead of 0x00016000 (app only)

    No other changes, just re-build app and bootloader.

Children
No Data
Related