pureboot: correct the 1284P deployment profiles in the README

The deployment section claimed the 1284P has no standalone profile, runs
BOOTSZ = 512 words always, and self-updates with no fuse change, reset
landing at 0x1f800 — internally contradictory (a 512-word section starts
at 0x1fc00, and the section holding both 1 KiB slots is 1024 words) and
contradicted by update_preflight, which refuses a self-update unless the
boot section covers two slots. The text described a 512-byte-slot
geometry this chip's loader cannot have. In truth the 328P profile table
maps onto the 1284P doubled: standalone = 512 words (the smallest
section is exactly the 1 KiB slot, reset at the loader base), self-update
= 1024 words with the loader-first reset walking the staging slot.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
2026-07-21 16:48:46 +02:00
parent 65f8fdd537
commit b7d082ff11

View File

@@ -108,17 +108,16 @@ write `0xff` (per page for flash, per byte for EEPROM).
## Deployment ## Deployment
**Megas**: program the loader at `flash 512` with an external programmer. **Megas**: program the loader at `flash slot` with an external programmer.
Every mega's smallest-but-one BOOTSZ puts the boot-section start exactly at Every mega has a BOOTSZ step whose boot section is exactly the loader slot —
the loader base (512 B the m8/16/168A reach it at their second-smallest 512 B, the m8/16/168A's second-smallest step, the m32/328P's smallest; on
step, the m32/328P at their smallest), so the ATmega328P profiles below the m1284P that step is its smallest, 512 words, which is why its slot is
apply to all of them with their own addresses; the per-chip BOOTSZ ladders 1 KiB — so the ATmega328P profiles below apply to every mega with its own
live in the host tool (`BOOT_FUSE`). The **ATmega1284P** is the exception: addresses and slot size; the per-chip BOOTSZ ladders live in the host tool
its smallest boot section is 1 KB, so the standalone profile does not exist (`BOOT_FUSE`). The 1284P's numbers: standalone = BOOTSZ 512 words (reset at
— BOOTSZ = 512 words always, and with BOOTRST programmed reset lands at the loader base 0x1fc00); self-update = 1024 words, covering both 1 KiB
0x1f800, one erased slot below the loader (the loader-first walk behavior slots, the loader-first reset landing at 0x1f800 — the staging slot, walked
below, built in). Its staging slot sits inside that same 1 KB section, so across when erased.
self-update needs no fuse change.
ATmega328P profiles (addresses for its 32 KiB): ATmega328P profiles (addresses for its 32 KiB):