RFC: Switch between firmwares / product "personalities"
Posted: Mon Jan 29, 2024 8:17 pm
I'm working on an ESP32S3-based CAN-Bus adapter that will be sold with (at least) three functions:
What's the best way to technically tackle this? The most simple approach is to have a big firmware which contains all the personalities and upon using the button to choose the personality, a special key gets written in NVS and the device gets rebooted and after boot configures itself to do the right thing.
This means I can't update one firmware incrementally though. Would it perhaps be better to use three partitions with different app firmwares and then leverage the bootloader to choose which partition to boot from?
Or is there another good option which I have overlooked?
- ECU reprogramming firmware
- OBD2 diagnosis firmware
- CAN-logger firmware
What's the best way to technically tackle this? The most simple approach is to have a big firmware which contains all the personalities and upon using the button to choose the personality, a special key gets written in NVS and the device gets rebooted and after boot configures itself to do the right thing.
This means I can't update one firmware incrementally though. Would it perhaps be better to use three partitions with different app firmwares and then leverage the bootloader to choose which partition to boot from?
Or is there another good option which I have overlooked?