pureboot: the device — one pure C++ source, 512 bytes, every chip
No inline assembly, no global register variables; libavr does the datasheet work. The device speaks primitives — flash read/page-program, EEPROM read/write, fuse read, info block, EEPROM-resident activation timeout, hand-over — and verify, erase, reset-vector surgery, and timeout configuration live in the host tool. 490 B on the ATtiny13A, 510 B on the ATtiny85, 484 B on the ATmega328P, each linked into the top 512 bytes of flash; per-chip size tests gate all three. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
@@ -22,11 +22,35 @@
|
||||
"name": "atmega328p-reflect",
|
||||
"inherits": "base",
|
||||
"cacheVariables": { "LIBAVR_MCU": "atmega328p", "LIBAVR_REFLECT": "ON" }
|
||||
},
|
||||
{
|
||||
"name": "attiny85-generated",
|
||||
"inherits": "base",
|
||||
"cacheVariables": { "LIBAVR_MCU": "attiny85", "LIBAVR_REFLECT": "OFF" }
|
||||
},
|
||||
{
|
||||
"name": "attiny85-reflect",
|
||||
"inherits": "base",
|
||||
"cacheVariables": { "LIBAVR_MCU": "attiny85", "LIBAVR_REFLECT": "ON" }
|
||||
},
|
||||
{
|
||||
"name": "attiny13a-generated",
|
||||
"inherits": "base",
|
||||
"cacheVariables": { "LIBAVR_MCU": "attiny13a", "LIBAVR_REFLECT": "OFF" }
|
||||
},
|
||||
{
|
||||
"name": "attiny13a-reflect",
|
||||
"inherits": "base",
|
||||
"cacheVariables": { "LIBAVR_MCU": "attiny13a", "LIBAVR_REFLECT": "ON" }
|
||||
}
|
||||
],
|
||||
"buildPresets": [
|
||||
{ "name": "atmega328p-generated", "configurePreset": "atmega328p-generated" },
|
||||
{ "name": "atmega328p-reflect", "configurePreset": "atmega328p-reflect" }
|
||||
{ "name": "atmega328p-reflect", "configurePreset": "atmega328p-reflect" },
|
||||
{ "name": "attiny85-generated", "configurePreset": "attiny85-generated" },
|
||||
{ "name": "attiny85-reflect", "configurePreset": "attiny85-reflect" },
|
||||
{ "name": "attiny13a-generated", "configurePreset": "attiny13a-generated" },
|
||||
{ "name": "attiny13a-reflect", "configurePreset": "attiny13a-reflect" }
|
||||
],
|
||||
"workflowPresets": [
|
||||
{
|
||||
@@ -36,9 +60,27 @@
|
||||
{ "type": "build", "name": "atmega328p-generated" },
|
||||
{ "type": "test", "name": "atmega328p-generated" }
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "attiny85-generated",
|
||||
"steps": [
|
||||
{ "type": "configure", "name": "attiny85-generated" },
|
||||
{ "type": "build", "name": "attiny85-generated" },
|
||||
{ "type": "test", "name": "attiny85-generated" }
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "attiny13a-generated",
|
||||
"steps": [
|
||||
{ "type": "configure", "name": "attiny13a-generated" },
|
||||
{ "type": "build", "name": "attiny13a-generated" },
|
||||
{ "type": "test", "name": "attiny13a-generated" }
|
||||
]
|
||||
}
|
||||
],
|
||||
"testPresets": [
|
||||
{ "name": "atmega328p-generated", "configurePreset": "atmega328p-generated", "output": { "outputOnFailure": true } }
|
||||
{ "name": "atmega328p-generated", "configurePreset": "atmega328p-generated", "output": { "outputOnFailure": true } },
|
||||
{ "name": "attiny85-generated", "configurePreset": "attiny85-generated", "output": { "outputOnFailure": true } },
|
||||
{ "name": "attiny13a-generated", "configurePreset": "attiny13a-generated", "output": { "outputOnFailure": true } }
|
||||
]
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user