The first thing to think of is the firmware upgrade strategy of an electronic device with embedded software.
There are a multitude of bootloader out there for different microcontrollers, physical communication links and features.
I know it's difficult, but is there a somewhat standard firmware upgrade procedure/strategy/protocol? Some open approach that is followed by different vendors/software.
In my case, I need a firmware upgrade strategy for AVR and SAM devices (from Atmel/Microchip) over UART half-duplex master/slave bus: the master should manage the firmware upgrade of all the devices. The devices could be different, so the upgrade should be done for a device at a time, keeping the other device in an inactive state.
There are some issues:
- the protocol should use an address, so the bootloader should share the address with the application (in a shared memory zone?);
- the master should sends a signal to force entering the bootloader (I think a shared reset line is the simplest way to achieve this);
- all the devices on the bus should implement the same upgrade protocol and this could by a challenge if the MCUs are very different (from small 8-bit devices to big 32-bits devices);
Is there an open bootloader project that can be used in my application?