Datasheet
SAM9G20
DS60001516A-page 68 2017 Microchip Technology Inc.
12. Boot Program
12.1 Overview
The Boot Program integrates different programs that manage download and/or upload into the different memories of the product.
First, it initializes the Debug Unit serial port (DBGU) and the USB High Speed Device Port.
The Boot program tries to detect SPI flash memories. The Serial Flash Boot program and DataFlash Boot program are executed. It looks
for a sequence of seven valid Arm exception vectors in a Serial Flash or DataFlash connected to the SPI. All these vectors must be B-
branch or LDR load register instructions except for the sixth vector. This vector is used to store the size of the image to download.
If a valid sequence is found, code is downloaded into the internal SRAM. This is followed by a remap and a jump to the first address of
the SRAM.
If no valid Arm vector sequence is found, NAND Flash Boot program is then executed. The NAND Flash Boot program looks for a
sequence of seven valid Arm exception vectors. If such a sequence is found, code is downloaded into the internal SRAM. This is followed
by a remap and a jump to the first address of the SRAM.
If no valid Arm exception vector is found, the SDCard Boot program is then executed. It looks for a boot.bin file in the root directory of a
FAT12/16/32 formatted SDCard on Slot A. If such a file is found, code is downloaded into the internal SRAM. This is followed by a remap
and a jump to the first address of the SRAM.
If the SDCard is not formatted or if boot.bin file is not found, TWI Boot program is then executed. The TWI Boot program searches for a
valid application in an EEPROM memory. If such a file is found, code is downloaded into the internal SRAM. This is followed by a remap
and a jump to the first address of the SRAM.
If no valid application is found, SAM-BA Boot is then executed. It waits for transactions either on the USB device, or on the DBGU serial
port.
12.2 Flow Diagram
The Boot Program implements the algorithm in Figure 12-1.