Hi,
in our current products we use UART for many purposes in development and service. We have
- a shell,
- advanced logging (colors, human readable text for error codes, dictionary based to save flash etc.),
- DFU,
- API for interacting with the device (like reading some ID or factory testing)
all over one UART. To achieve that, we have our own UART protocol to allow multiplexing and a software running on a host computer to talk to the µC with this protocol and map text to IDs (like the JSON from the dictionary based logging), forward firmware images and so on.
Now we transition to nRF5340 with Zephyr and I am evaluating the possibilities with Zephyr RTOS. As far as I can see, combining the shell with dicitionary based logging and DFU over one interface is not something that's intended to do with the default modules, as some multiplexing protocol and counterpart on the host computer is needed. Is this correct?
if so, I would stick with our own debugging protocol and integrate a logging backend into that to send the logging messages to the host encapsulated in our protocol. A shell would have to be done by my own on the host computer and for DFU, I would transfer data into an external flash to flash it with MCUBoot later on. So I would only use the Logging module from Zephyr. Would you recommend this way or are there better ways with Zephyr? I feel like this could be done easier with Zephyr modules.
Best regards,
Lars