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!!
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.
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.
The updatee can just switch its published mode to OPERATIONAL, no additional steps are required.
Unrelated: you can’t send a “message” to a service, these are opposite concepts. You can send either a service request or a service response, there is no such thing as “service message”.
Either:
Embed a CRC into your file and check it. This works if the file is a firmware image (you probably need a CRC there anyway regardless of UAVCAN).
Use a separate hash file as described here (the linked definition is for UAVCAN v1 but it is istill applicable to v0):