11.3.1.1.2 Logical Sections
- Boot Code (BOOT) - The code executed from the BOOT area has write access to all other Flash sections. Boot loader software must be placed in this section if used.
- Application Code (APPCODE) - The code executed from the APPCODE area has limited write access to other Flash sections. Executable application code is typically placed in this section.
- Application Data (APPDATA) - Flash section without write access. Parameters are usually placed in this section.
Section Sizes
The Boot Size (FUSE.BOOTSIZE) fuse and Code Size (FUSE.CODESIZE) fuse set the sizes of these sections. The fuses select section sizes in blocks of 512 bytes. The BOOT section stretches from FLASHSTART to BOOTEND, and the APPCODE section extends from BOOTEND to CODEEND. The remaining area is the APPDATA section.
If FUSE.BOOTSIZE is written to ‘0
’, the entire Flash is regarded as the
BOOT section. If FUSE.CODESIZE is written to ‘0
’ and FUSE.BOOTSIZE >
0, the APPCODE section runs from BOOTEND to the end of Flash (no APPDATA section).
BOOTSIZE | CODESIZE | BOOT Section | APPCODE Section | APPDATA Section |
---|---|---|---|---|
0 | - | 0 to FLASHEND | - | - |
> 0 | 0 | 0 to BOOTEND | BOOTEND to FLASHEND | - |
> 0 | ≤ BOOTSIZE | 0 to BOOTEND | - | BOOTEND to FLASHEND |
> 0 | > BOOTSIZE | 0 to BOOTEND | BOOTEND to CODEEND | CODEEND to FLASHEND |
Using the BOOT section for the application code is recommended if there is no boot loader software.
- After Reset, the default vector table location is at the start of the APPCODE section. The peripheral interrupts can be used in the code running in the BOOT section by relocating the interrupt vector table at the beginning of this section. That is done by setting the IVSEL bit in the CPUINT.CTRLA register. Refer to the CPUINT section for details.
- If BOOTEND/CODEEND, as determined by the BOOTSIZE/CODESIZE fuse settings, exceeds the device FLASHEND, the corresponding fuse setting is ignored, and the default value is used. Refer to Fuse in the Memories section for default values.
Size of Flash Sections Example
If FUSE.BOOTSIZE is written to 0x04
and FUSE.CODESIZE is written to
0x08
, the first 4*512
bytes will be BOOT, the next 4*512 bytes
will be APPCODE, and the remaining Flash will be APPDATA.