Homepage GitHub


(William Yang) #1

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!!

(Pavel Kirienko) #2

Please read this: https://uavcan.org/Specification/6._Application_level_functions/#firmware-update

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!)

(William Yang) #3

thank you

(William Yang) #4

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.

(Pavel Kirienko) #5

You might be losing frames to RX queue overrun. If you’re using STM32, this might be relevant:

(William Yang) #6

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.

(William Yang) #7

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.