1. I'm developing multiprotocol BLE/Thread app with Thread SDK 1.0 and I want to ask if there's a possibilty to perform DFU over Thread in that case? In Thread Secure DFU Example description there's something like this written:
"The Thread stack does not use the SoftDevice, but the --sd-req 0x00 option is required to indicate that no SoftDevice is used."
So what in case of multiprotocol solution? Do I need just to insert the number of SoftDevice?
Thanks in advance,
This field used in nrfutil, --sd-req 0xNN is used only for the bootloader to not accept a DFU pack that does not fulfill the requirements.
So if your application is using multiprotocol; BLE and Thread, and the BLE part requires the softdevice (which it probably does), then you should use the --sd-req that fits to that softdevice.
You may know this, but you can see the list of softdevice IDs by typing:
nrfutil pkg generate --help
And what do I have to add to my app, only coap dfu init, process and trigger functions, and all their dependencies?
I have not tested the Thread DFU yet, but I see that it uses the same bootloader library as the BLE bootloader, so I assume that it is only the transport layer that is changed.
So if your application requires a softdevice, which it does if you use BLE, you must use --sd-req 0xNN, which matches the softdevice that you are using.
You need to use coap_dfu_init(), yes. Just remember to also flash the bootloader before you run the project. At least in the regular BLE bootloader projects, it will return an error if it can't find any bootloader.
I can't see that it uses the same function to look for the bootloader, but I assume it has the same check. Either way, you would need the bootloader in order to perform the DFU.
I suggest that you try the guide for the Thread DFU example first, just to see that you get the bootloader is up and running before you try to implement it in a BLE + Thread project.
Few more questions, because I still didn't make this work and I didn't see any more questions and tutorials on this topic.
1. How should the linker script and flash_placement.xml look like? Especially memory sections adresses and sizes. There are different linker scripts and files for multiprotocol and DFU for Thread examples
2. How should the app look like if I'm already using CoAP? Should I bind to the same or different UDP port?
3. thumb_crt0.s, there are also differences between DFU example and multiprotocol examples
Sorry for the late reply. I have been out traveling. I am back now, and will look into this as soon as possible.