PAGE UNDER CONSTRUCTION
* Oak Flash memory breakdown
OakBoot Slot 0 Slot 1 Slot 2 (Find link on forum elaborating on this further - BELOW)
—-
I want to clarify part of this: An Oak has 3 rom slots, one holds your Config rom, one holds your User rom (what you upload), the other is empty. When you upload a new User rom or a new Config rom (due to an update), it goes to the empty slot and once confirmed complete and good the pointer to that rom is changed to point to that slot. https://digistump.com/board/index.php/topic,1957.msg9142.html#msg9142
I guess this gets a bit more complex than the 3 slots - we combine the updater and the setup roms into a single file and load them together into one of the three slots. The bootloader actually supports dividing each of the 3 into quarters, currently we only divide the system slot into halves though and user slots are left whole - probably best to dive into the bootloader code if you really want to understand it on that level as it is all abstracted away for the user experience (bootloader code: github.com/digistump/OakBoot) https://digistump.com/board/index.php/topic,2026.msg9152.html#msg9152
* Factory fresh Oak is looking for system firmware in slot 0 - Serial uploads always go to slot 0 - no matter what is in that slot. A factory Oak boots to 0 looking for the system firmware, which is why before uploading via serial I instruct people to do a factory restore, so that the Oak is booting to 0 which is where you are putting the code. Once your done using serial uploads for testing/debugging/etc you'd want to restore back to factory or at least put a system image on it over serial so that it is at slot 0.
https://digistump.com/board/index.php/topic,2068.msg9450.html#msg9450
* Oak Bootup process
OakBoot -> If P1 GND -> Config ROM -> Else -> User ROM (last successfully flashed)
* Link to another page about disaster recovery for Oaks, which will be heavily based on kh's notes https://digistump.com/board/index.php/topic,2381.msg11296.html#msg11296