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:
@@ -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):
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user