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

Secure DFU througput

Hi,

We are using the Secure DFU from SDK 12.2, with SD132 3.1.0, on a PCA10040. As a DFU controller, we use a PCA10031 with a SD130 2.0.1 and a project derived from the multilink central in SDK 12.2. The data is transferred to the central via UART.

Currently, I had to set the FLASH_BUFFER_CHUNK_LENGTH in dfu_req_handling.c to 4096 (2 buffers) in order to allow more data buffering before each write. With this change, I manage to lower the connection interval to 10 (12.5ms) and reach a throughput of about 4.5KBps. However, with the old DFU, we've managed to get up to 10KBps.

Can you provide some information on the max throughput you managed to get out of the secure DFU process and how was it achieved?

  • Hi,

    We are looking to improve the buffer handling as it has been limiting the throughput in some cases, but I'm not sure if it has been a limiting factor for updates with Bluetooth as transport.

    Have you changed the bandwidth configuration in the softdevice at both sides to ensure that as many packets as possible are sent on each connection interval (BW configuration is explained in SD migration document)?

    Shorter connection intervals make it harder to schedule flash operations via the softdevice stack so you might have to make it a bit longer if you increase the BW.

  • Yes. we are working with 6 packets per interval and it seems to be pretty consistent during the transfer.

    I increased the buffer size to 4KB, so we only get flash writes at the end of each data object. I do see some lack of data transfer (for about 600ms) between the flash write and the time the EXECUTE is handled.

    The CRC and EXECUTE commands are sent immediately after the last packet of the object.

    Any idea what can cause such delay?

Related