Hello,
I am working on an application that requires that a firmware update is possible. The procedure in terms of UAVCAN messages is roughly:
-
Updater (GUI) requests update (uavcan.protocol.file.BeginFirmwareUpdate) from updatee (MCU), updatee responds and saves path.
-
Updatee requests file info (uavcan.protocol.file.GetInfo) with the path as attribute, updater responds and updatee checks if the file fits in its memory.
-
Update reads file (uavcan.protocol.file.Read) into memory.
In the first part the path length seems to be missing. path.len is always 0. To work around this temporarily I have hardcoded the filename. This gets me to step 2.
In step 3 the data.len is always 0 as well. This I can work around by calculating the number of packages required for the file size given by step 2. The offset in the request does not get higher than 1 unless I edit file_Read.c which was generated by the dsdl compiler and change the saturation macro or skip it all together.
Any ideas on what might be going on here?
Best regards,
Sturla