Hello, now my UAVCAN node received this message and implemented a jump to the bootloader. Now how should I handle the firmware upgrade? Is it possible to call uavcan.protocol.file.Read directly, but I think it is There should be no response information, I am not sure how the whole process is, ask for help. Thank you！！
Also this: https://uavcan.org/Implementations/Libuavcan/Tutorials/11._Firmware_update/ The tutorial is for libuavcan, not libcanard, but the general principles are the same so you can use it as a high-level reference.
The Kocherga protocol module implements the UAVCAN bootloader protocol: https://github.com/Zubax/kocherga/blob/master/kocherga_uavcan.hpp (and it is built on Libcanard!)
Continuing the discussion from uavcan.protocol.file.BeginFirmwareUpdate:
I have another problem now. When I receive a lot of data, I can’t enter onTransferReceived. For example, when I receive the information of the file, I can’t confirm what the problem is.
You might be losing frames to RX queue overrun. If you’re using STM32, this might be relevant:
Yes, it is this problem that has been resolved. I need to send a message to the file service after I get and update, or I can directly convert the state of the UAVCAN node from SOFTWARE_UPDATE to OPERATIONAL.
How to verify the uavcan protocol file transfer part, I have not found relevant information at present, I feel that the transmission process is prone to errors.