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

Firmware update for serialization scenario?

From what I can see the scenario where you have a serialized app running from a separate CPU and how to do firmware update on that is not discussed anywhere on the Nordic site and I am trying to get some ideas so I will not find myself duplicating a lot of work that Nordic software engineers are already doing somewhere and maybe release at some point in the (near?) future.

So to make a long story short:

  • we have a pretty complex solution with a STM32F4 + NRF51 (which could soon be updated to STM32F7 + NRF52 and then go to much larger-scale production); the STM32 has a very well designed firmware update procedure where we can activate options that can make that one safe enough

  • the BLE part of it is almost perfect, no serious problems there since softdevice S130 v2.0.0

  • however the very quick move from 2.0.0 to 2.0.1 raises the valid question if we would not be much better on the longer term having a very clean upgrade path in the Nordic circuit too

  • for the moment we do not want a DFU update over BLE, we would be perfectly fine just updating the Nordic from the main CPU over the same connection (SPI) that we already use for serialization

  • from what I can see that is not already supported

  • one way to add that would be to add a new packet type , something like SER_PKT_TYPE_USER_CMD = 0x80 , and then directly encode and decode (ser_conn_pkt_decoder.c) those packets

  • probably a more elegant way would be to extend the existing SER_PKT_TYPE_CMD = 0 with new commands and just add handlers for those (basically extending conn_mw_item[] list) with new custom commands like SD_USER_CUSTOM_CMD_1 and/or - and here I would like to know if that is not already done by Nordic software engineers themselves - adding serialization handlers for functions like sd_mbr_command() and ble_flash_block_write() (even if that might not be an easy task).

I do not know if I explained well enough what I need - but I am open to any other suggestions or ideas on the topic.

  • Hi Catalin,

    I afraid that there is not much work has been done regarding having DFU for the connectivity chip in serialization set-up.

    DFU process requires a bootloader. It's not possible or I would say pretty complicated to integrate the DFU functionality into the main connectivity application.

    The closest we have is the SPI bootloader that you can have a look here.

    I am not fully understand what you mentioned here: "however the very quick move from 2.0.0 to 2.0.1 raises the valid question if we would not be much better on the longer term having a very clean upgrade path in the Nordic circuit too"

    Could you explain a little bit more?

Related