Hey Tinymovr Community,
One of the things we kept hearing was the need for a smoother, simpler way to upgrade the firmware on your Tinymovr. Up until our latest release, you had to rely on the UART interface and the proprietary app from Qorvo, ActiveFlashLight. Although functional, it wasn’t the most efficient way, especially when dealing with multiple devices, as it meant that you would have to use a USB to UART adapter, reconnect each Tinymovr to UART, perform the upgrade, and repeat each step backwards after the upgrade.
Firmware Upgrade through CAN Bus
Many of you have expressed a desire to upgrade firmware using the CAN bus, and we heard you loud and clear. We’re thrilled to announce that we’ve successfully implemented a DFU (Device Firmware Upgrade) mode that facilitates firmware upgrades through the CAN bus, and we utilized our own Avlos system for defining the comms protocol.
For those unfamiliar with Avlos, here's a brief introduction: Αυλός (Avlόs) translates to "flute" or "channel". Avlos simplifies the creation of protocol implementations that communicate with remote embedded devices. By taking an embedded device, a client wishing to communicate with it, and a YAML file representing the device structure (the spec), Avlos generates a protocol implementation based on the spec, both for the embedded device (currently supporting C), as well as the client (supporting Python and C++). And not just that, it produces documentation and more.
For us, this DFU mode is a demonstration of how compact an Avlos-based comms stack can be. The entire bootloader is impressively under 4kb. This includes the can stack, semantically-rich Avlos endpoints, flash manipulation, firmware upload and validation, and logic to verify and jump to the main application.
For those eager for the intricate details, we'll be releasing a more technical writeup about the bootloader soon. Stay tuned!
What does this mean for you?
- Ease of Upgrade: No more juggling between different interfaces or apps. The CAN bus upgrade is seamless and intuitive.
- Multi-device Upgrades: If you've got multiple devices on the same CAN network, you're in luck. The new system lets you upgrade all of them simultaneously. This means less hassle and more efficiency.
- No More Re-wiring: One of the significant advantages of this update is that you can leave your wiring untouched. No hardware changes needed, no unplugging and re-plugging devices.
- Safe Upgrades: The DFU mode we’ve implemented ensures stability during the upgrade process. By using the CAN protocol, which has built-in error handling, the upgrade process becomes less prone to interruptions or errors. In addition, we built-in an additional layer of validation to the DFU, to ensure that the updates are always flawless.
A Little Hiccup for Existing UsersThere's a slight snag to be aware of: The current ActiveFlashLight app doesn’t allow changes to the memory area where the bootloader resides. This means for our existing users:
- You can choose to continue with the current bootloader, and don't worry, the new firmware still plays nice with it.
- If you're keen on making the switch, you'd need to use a JLink adapter through SWD (Serial Wire Debug) to upgrade both the firmware and bootloader simultaneously.
For all the new folks joining our community, rest easy! All new devices will be shipped out with the new DFU bootloader and latest firmware onboard.
So go ahead and check out the new release, and don't forget to consult the docs to get all the details.
Our shift to CAN bus upgrades signifies our commitment to continually enhancing your experience with Tinymovr. As always, we're all ears for feedback. Let us know how the new upgrade process works for you, and if there's anything else we can do better. Or drop by our Discord server to join the community and ask us any questions.
Stay connected, and happy tinkering!
Tinymovr Servo Kit R5.2