When complex embedded systems are used, it is often needed to upgrade an already shipped device’s firmware. The purpose of the upgrade can be for example function addition or error fixing. In many situations the dedicated tools which was used during the development and manufacturing of the product is not available for the upgrade and the application has to be able to upgrade itself, performing an in-application programming (IAP).
In the first part of this thesis I introduce the development of a bootloader which can assist in-application programming.The bootloader’s main purpose is to load the separate firmwares (applications) loacted in the microcontroller’s program memory, but it can also detect certain types of malfunctions and prevent the loading of the applications which are causing them.
If not only one, but many (even thousands of) networked devices have to be upgraded, certain processes must be parallelised. Multicast data transmission, which involves one transmitter and any number of receivers, is a technique of parallelisation.
In the second part of this paper I describe how I designed, implemented and tested a firmware transmission process which can utilize the benefits of multicast communication.