Flashing firmware on a new chip

Suppose I design a PCB where nRF52810 or a similar chip is used for very simple BLE connectivity.
My understanding is that as it is fresh from a factory, there is no firmware on it of any sort, so it needs to be programmed before it can be used for anything.

What would be the suggested way of programming it with a firmware, especially keeping in mind that it may be needed to produce many such devices and the process should not involve much manual or complicated work?

  • I believe I cannot use a single header to program multiple MCUs (the board already has another MCU), so a single programming header is not an option as unlike JTAG SWD does not support daisy-chaining.
  • Flashing the nRF chip via JTAG does not appear to be possible either.
  • I suppose I could add a dedicated header connected to nRF's SWD pins just to program that chip. But that seems wrong as I would end up with multiple programming headers on the PCB, which is error-prone and messy.
  • Over-the Air updates are - I think - also impossible even though the datasheet says it is supported. My reasoning here is that the chip would likely come entirely empty, so it would not have a bootloader for OTA updates. 
  • It would not be on a dev board either, where a J-Link is already present. Although had it been present, that would still require extra headers, I suppose.
  • Perhaps there is a way to source chips pre-programmed with a bootloader enabling OTA updates but it is not clear where would I get that from.

I am sure I am not the only one who is interested in a very straightforward solution to this. Surely, after designing a prototype on a dev kit people move on to mass production, which requires a convenient process for flashing the chips.

What are my options?

Parents
  • Hi,

    My understanding is that as it is fresh from a factory, there is no firmware on it of any sort, so it needs to be programmed before it can be used for anything.

    Correct,

    • I believe I cannot use a single header to program multiple MCUs (the board already has another MCU), so a single programming header is not an option as unlike JTAG SWD does not support daisy-chaining.
    • Flashing the nRF chip via JTAG does not appear to be possible either.
    • I suppose I could add a dedicated header connected to nRF's SWD pins just to program that chip. But that seems wrong as I would end up with multiple programming headers on the PCB, which is error-prone and messy.
    • Over-the Air updates are - I think - also impossible even though the datasheet says it is supported. My reasoning here is that the chip would likely come entirely empty, so it would not have a bootloader for OTA updates. 
    • It would not be on a dev board either, where a J-Link is already present. Although had it been present, that would still require extra headers, I suppose.
    • Perhaps there is a way to source chips pre-programmed with a bootloader enabling OTA updates but it is not clear where would I get that from.

    Your understanding here is mostly correct, OTA is not possible as the ICs doesn't come with pre programmed fw that enables it. 

    I think most of the answers for your questions are summarized in our production programming white paper

    Can you take a look at that and see if that answers your question?

    Thanks,

    regards

    Jared

Reply
  • Hi,

    My understanding is that as it is fresh from a factory, there is no firmware on it of any sort, so it needs to be programmed before it can be used for anything.

    Correct,

    • I believe I cannot use a single header to program multiple MCUs (the board already has another MCU), so a single programming header is not an option as unlike JTAG SWD does not support daisy-chaining.
    • Flashing the nRF chip via JTAG does not appear to be possible either.
    • I suppose I could add a dedicated header connected to nRF's SWD pins just to program that chip. But that seems wrong as I would end up with multiple programming headers on the PCB, which is error-prone and messy.
    • Over-the Air updates are - I think - also impossible even though the datasheet says it is supported. My reasoning here is that the chip would likely come entirely empty, so it would not have a bootloader for OTA updates. 
    • It would not be on a dev board either, where a J-Link is already present. Although had it been present, that would still require extra headers, I suppose.
    • Perhaps there is a way to source chips pre-programmed with a bootloader enabling OTA updates but it is not clear where would I get that from.

    Your understanding here is mostly correct, OTA is not possible as the ICs doesn't come with pre programmed fw that enables it. 

    I think most of the answers for your questions are summarized in our production programming white paper

    Can you take a look at that and see if that answers your question?

    Thanks,

    regards

    Jared

Children
Related