8aa1721709356ec3b4050cf8850f5f49c9d0ceb2
The Chips footnote said "the slot's last word" against a table whose subject is the loader, where it means the *lower* slot's — the trampoline holding the application's relocated reset vector, and a staging copy's own last word during a self-update. The resident has all 512 bytes of the slot it runs in; 510 is what an image must fit so a copy staged one slot down leaves that word alone. And a section on entering from a running application, for the boards whose adapter does not drive reset and which therefore have no edge to open a window with. Deciding when to jump stays the application's business — a console command, a held pin, an idle timeout — so there is no knock detector and no header here, only the mechanics: the base as a --defsym symbol, and the three things that must be true first (interrupts off, WDRF clear, and any peripheral holding the link released, since a loader entered by a jump inherits the application's registers rather than reset values). Not the noipa indirect call run_app() uses, which is the obvious thing to copy and the wrong one: that is a position-independence measure belonging to a loader that runs the same image from either slot. An application is linked at a fixed base, so a plain call to the symbol comes out `call 0x7e00` in four bytes where the laundered form spends two ldi's and a helper call. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Description
No description provided
Languages
C++
100%