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

Is there a checksum embedded in the S110?

Hello everyone,

I haven't read anything in the official documentation about it, but I was wondering if the S110 has an embedded checksum that I can use to verify its integrity at runtime.

I already do something similar for my application and it would be useful to extend the concept to the SoftDevice as well.

Thanks!

Parents
  • Hi Moloch,

    We don't have an embedded checksum for the softdevice. You need to do it manually.

    The softdevice size may change when doing DFU, so it may not be a good idea to store it at the end of the softdevice. Same with storing at the end of master boot record as Clem suggest, because when the softdevice is updated, you need to update the checksum, and then will have to erase 1 page in the MBR that can cause trouble. I would suggest to store the checksum in the bootloader setting page 0x3FC00, it will not be overwrite when doing DFU.

    You can also protect the softdevice from being modified by application by ticking the check box "Enable Softdevice protection" or write to CLENR0 in the UICR. But note that, by doing that, the size of the softdevice can not be changed.

  • I have CRC-32s at the end of the MBR (4K-4bytes) at the end of the softdevice (SOFTDEVICE_INFORMATION->softdevice_size-4) at the end of my application (NRF_UICR->BOOTLOADERADDR-PSTORAGE_SIZE-4) and at the end of my bootloader (256K-4). The softdevice CRC does not cover the MBR. The MBR CRC was just for completeness, if the MBR is corrupted you are most likely not going to recover.

    I only some minimal testing of growing the softdevice by hacking up the softdevice binary and it seems to work.

    Personally I feel that embedded CRCs are much better then side-loading them in the bootloader.

Reply
  • I have CRC-32s at the end of the MBR (4K-4bytes) at the end of the softdevice (SOFTDEVICE_INFORMATION->softdevice_size-4) at the end of my application (NRF_UICR->BOOTLOADERADDR-PSTORAGE_SIZE-4) and at the end of my bootloader (256K-4). The softdevice CRC does not cover the MBR. The MBR CRC was just for completeness, if the MBR is corrupted you are most likely not going to recover.

    I only some minimal testing of growing the softdevice by hacking up the softdevice binary and it seems to work.

    Personally I feel that embedded CRCs are much better then side-loading them in the bootloader.

Children
No Data
Related