Go Down

Topic: Dual Boot (Read 3348 times) previous topic - next topic


Hello everybody.

I found a very interesting information about SAM3X8E and would like to share it:

The data sheet says (Page 41):

9.1.4 Boot Strategies
The system always boots at address 0x0. To ensure maximum boot possibilities, the memory
layout can be changed via GPNVM.
A general-purpose NVM (GPNVM1) bit is used to boot either on the ROM (default) or from the
The GPNVM bit can be cleared or set respectively through the "Clear General-purpose NVM Bit"
and "Set General-purpose NVM Bit" commands of the EEFC User Interface.
Setting GPNVM Bit 1 selects the boot from the Flash, clearing it selects the boot from the ROM.
Asserting ERASE clears GPNVM Bit 1 and thus selects the boot from the ROM by default.
GPNVM2 enables to select if Flash 0 or Flash 1 is used for the boot.
Setting GPNVM bit 2 selects the boot from Flash 1, clearing it selects the boot from Flash 0.

If this is true maybe could be possible to have a firmware in Flash 0 that programs Flash 1 or vice versa.
That means that this firmware could interface potentially to any peripheral (Uart, CAN, USB Mass storage, Ethernet, etc)  to program new firmware, then write proper value in the GPNVM and restart booting from the flash area where the new firmware resides.
In this way it could be possible to program Arduino Due from any peripheral.

Thank everyone.


so now can i put Android on an outer storage(memory card) and then change the boot, to make my kit boot from memory card and install Android?? is it possible?


Be careful spiceice, I said that maybe could be possible that Arduino due can perform In Application Programming (IAP) like your DSL router, not boot from a device.

I found something about flash programming on the Atmel Software Frameworkhttp://asf.atmel.com/docs/latest/search.html?board=Arduino%20Due/X, but I still don't know how to integrate in Arduino IDE.

Have a nice day.


I know this is an old post, but wanted to share a link that may be helpful to others who come across this thread that I am using to implement dual-boot: If you want to do it via a wire, you can use this as a jumping off point: https://github.com/collin80/FirmwareReceiver



Heh, it's kind of funny that I just saw this pop up. Yes, I ended up doing exactly what this Mamo person thought might be possible. It is indeed possible to store a bootloader in one of the flash sections and use it to flash the other section with a sketch. It halves the space your sketch can take up but not too many sketches are over 256k anyway.

Go Up