Firmware update via GUI tool


I am testing the performance during firmware download between GUI tool and node, using different bus speeds.
On node side , I am using the Updatee code snippet and testing multiple timer intervals of the periodic timer.

Even if I reduce the file.Read periodic timer on node side to very short, I notice that the bus load only reached ~30% @ 1Mbps. When investigating GUI tool server response time I see that it is ~12ms delay between file.Read client command and GUI response. I have a feeling that this is the reason that bus load is so low.
My target is to make use of a larger bandwidth usage (~80%) during firmare update.

For comparison I did the test using 125kbps and then the bus load reached 85%, hence the longer bit time.

So my question is if the GUI tool can be faster or if it is a constraint in pyuavcan or somewhere else?
Do I have to implement my own file server for firmware update, perhaps in C++, to be able to make use of all bandwidth?


Sounds reasonable. Consider profiling the pyuavcan server; it might be that your system is a bit slow when reading from the disk (if that’s the case, rewriting things in C++ is unlikely to help). Also, consider emitting several requests concurrently.

1 Like

Did not think about multiple requests… I want to try that. But do I not need to wait for hasPendingCalls() to return 0 before firing a new request via same node?

No, because that behavior would essentially serialize your requests.

Ok. so it is just a matter of keeping track of the image offsets in the multiple ongoing requests. Sounds like a no brainer. :sunglasses: