File sever, firmware upload

Okay. I’ve looked at the code and couldn’t notice anything that could be obviously wrong. I hope I’m not missing anything important due to my inability to read your extensive comments in Italian :D. Can you please once again post two candumps: one of your successful exchange with another libcanard-based node, and the other unsuccessful exchange with Yakut? The ones you posted earlier differ in the uavcan.file.Read service version so not usable for diagnostics. Thanks.

I have verified that the dumps are the same. At this point I suspected reception problems that did not occur in yakut mon because of shorter messages (misled). My STM32 node worked because also the send procedure was a bit slower and in any case it improved by inserting delays between the various transfers … By decreasing the speed of the can I started to receive some complete frames (256 bytes).
So I improved the RX procedure by removing, inserted the interrupt management and now it is perfect at all speeds up to 1Mhz without any loss even with 250 Kb files.

I only have one question left, at the end of the transfer yakut remains in the transfer function without giving a message ad.es transfer complete … There is something to do, some command to tell yakut and report that the transfer is finished or not it is managed by? At the last message with incomplete buffer <256 I interpret save my file and that’s it.

Thanks for your time

Yakut is not driving the process so it cannot possibly determine whether the transfer is finished. It is entirely up to the client (your node) to manage the process. How to detect the end-of-file during the transfer is explained in the docs for uavcan.file.Read.

Your question makes me suspect that you did not read the documentation. Please do endeavor to do so to save time.