A method for booting a multi-boot microcontroller having a first boot image and a second boot image, the first boot image and the second boot image comprising booting instructions and application code, wherein the multi-boot microcontroller comprises a central processing unit coupled with a program memory storing the first and second boot image (116, 118), the method comprising: determining a first boot sequence number associated with the first boot image and stored within the program memory; determining a second boot sequence number associated with the second boot image and stored within the program memory, wherein the first and second boot sequence numbers (128, 126) signify the relative order of the boot images; identifying a selected boot image (116, 118) by comparing the first sequence number and the second boot sequence number wherein the comparison determines whether the first boot image or the second boot image is the selected boot image, wherein the selected boot image is identified by device hardware operations; mapping the address of the selected boot image (116, 118) to a primary boot memory within the program memory specified by a default boot vector; booting the microcontroller from the default boot vector, characterized in that the boot image (118; 116) not determined to be the selected boot image is a secondary boot image, wherein the contents of the secondary boot memory location can be updated without affecting device operations executing from the primary boot memory location; the method further comprising: mapping the address of the secondary boot image to a secondary boot memory location; processing a command directing the microcontroller to temporarily swap from the selected boot image to the boot image stored in the secondary boot memory location by interrupting execution of the selected boot image and executing a jump to the boot image stored in the secondary boot memory location, upon which jump the boot image stored in the secondary boot memory location is executed, wherein the temporary swap is made without resetting the microcontroller. determining a first boot sequence number associated with the first boot image and stored within the program memory; determining a second boot sequence number associated with the second boot image and stored within the program memory, wherein the first and second boot sequence numbers (128, 126) signify the relative order of the boot images; identifying a selected boot image (116, 118) by comparing the first sequence number and the second boot sequence number wherein the comparison determines whether the first boot image or the second boot image is the selected boot image, wherein the selected boot image is identified by device hardware operations; mapping the address of the selected boot image (116, 118) to a primary boot memory within the program memory specified by a default boot vector; booting the microcontroller from the default boot vector, characterized in that the boot image (118; 116) not determined to be the selected boot image is a secondary boot image, wherein the contents of the secondary boot memory location can be updated without affecting device operations executing from the primary boot memory location; the method further comprising: mapping the address of the secondary boot image to a secondary boot memory location; processing a command directing the microcontroller to temporarily swap from the selected boot image to the boot image stored in the secondary boot memory location by interrupting execution of the selected boot image and executing a jump to the boot image stored in the secondary boot memory location, upon which jump the boot image stored in the secondary boot memory location is executed, wherein the temporary swap is made without resetting the microcontroller. mapping the address of the secondary boot image to a secondary boot memory location; processing a command directing the microcontroller to temporarily swap from the selected boot image to the boot image stored in the secondary boot memory location by interrupting execution of the selected boot image and executing a jump to the boot image stored in the secondary boot memory location, upon which jump the boot image stored in the secondary boot memory location is executed, wherein the temporary swap is made without resetting the microcontroller.