Example of C-based client when DFUing a nRF52840 via UART

Good morning,

 

In our next product (mounting a nRF52840) we will need a dual UART+BLE update channel. We have already implemented the update via BLE and we are now trying to do the same for the UART channel.

We have successfully used both the C++- and Rust-based clients you advise on your webpage (here: https://docs.nordicsemi.com/bundle/ncs-latest/page/zephyr/services/device_mgmt/mcumgr.html) to update our device via UART. However we cannot rely on an executable to update our device and, because of project's constraints, we need to write a C-based client and embed it in our control system. This client will of course be based on mcumgr libraries.

My questions are:

 

1) Does such a C-based client exist? If so, where can we find the source code? A c++-based one would also be ok, but without the difficulties related to the use of Qt

2) If a C-based client does not exist, where can we find the sequence of operations that allow the aforementioned clients to update the MCU, and possibly the mcumgr functions associated with these operations? None of us is an C++ nor Rust expert, so we cannot easily deduce these steps from the clients you advise. Something like a sequence diagram of needed operations would be great.

 
We are using SDK version 2.8.

Kind regards,

Stefano

Parents Reply
  • Dear Amanda,

    Thank you for your answer. Correct me if I am wrong: even though the DFU over UART can be enabled in Zephyr running on the nRF52840, the only chance users have in order to understand the sequence of packets to be exchanged between client (PC) and host (MCU) is extracting it from third-parties clients, cause neither Nordic nor Zephyr provide it?

    Kind regards,

    Stefano

Children
Related