Device: boot-section detection probes SPMCR beside SPMCSR, the link picks any hardware USART through the instance-aware lookups (URSEL chips included), WDRF reads MCUSR-or-MCUCSR, and the >64 KiB shape lands — word-addressed wire flash (info flag bit 1, page byte 0 means 256, base as a word address), far reads through flash_load_far, a single 32-bit byte-cursor page walk (the 256-byte page wraps its low byte exactly), and slot arithmetic in words (the return address already is one). Host: addresses stay bytes internally and scale at the wire, the boot-fuse decode becomes a per-signature table (byte index + BOOTSZ ladder — the m168A's lives in EXTENDED), and the planner tests pin every chip's ladder plus the word-addressed info decode. Tests: the device runner serves every mega over the USART pty, pbapp banners over the right link, the update rehearsal synthesizes its assumed fuses from the tool's own table, and the PI lint tracks the renamed info symbol. All six classic-mega/168A targets pass the full suite (size, PI, planner, protocol, reloc, self-update) at 466–504 B; the 1284P builds await a libavr far-path slimming to make its 512. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
518 lines
9.0 KiB
JSON
518 lines
9.0 KiB
JSON
{
|
|
"version": 8,
|
|
"configurePresets": [
|
|
{
|
|
"name": "base",
|
|
"hidden": true,
|
|
"generator": "Ninja",
|
|
"binaryDir": "${sourceDir}/build/${presetName}",
|
|
"toolchainFile": "$env{LIBAVR_ROOT}/cmake/avr-toolchain.cmake",
|
|
"cacheVariables": {
|
|
"CMAKE_BUILD_TYPE": "Release",
|
|
"CMAKE_EXPORT_COMPILE_COMMANDS": "ON",
|
|
"CMAKE_COLOR_DIAGNOSTICS": "ON"
|
|
}
|
|
},
|
|
{
|
|
"name": "atmega328p-generated",
|
|
"inherits": "base",
|
|
"cacheVariables": {
|
|
"LIBAVR_MCU": "atmega328p",
|
|
"LIBAVR_REFLECT": "OFF"
|
|
}
|
|
},
|
|
{
|
|
"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"
|
|
}
|
|
},
|
|
{
|
|
"name": "atmega8-generated",
|
|
"inherits": "base",
|
|
"cacheVariables": {
|
|
"LIBAVR_MCU": "atmega8",
|
|
"LIBAVR_REFLECT": "OFF"
|
|
}
|
|
},
|
|
{
|
|
"name": "atmega8-reflect",
|
|
"inherits": "base",
|
|
"cacheVariables": {
|
|
"LIBAVR_MCU": "atmega8",
|
|
"LIBAVR_REFLECT": "ON"
|
|
}
|
|
},
|
|
{
|
|
"name": "atmega8a-generated",
|
|
"inherits": "base",
|
|
"cacheVariables": {
|
|
"LIBAVR_MCU": "atmega8a",
|
|
"LIBAVR_REFLECT": "OFF"
|
|
}
|
|
},
|
|
{
|
|
"name": "atmega8a-reflect",
|
|
"inherits": "base",
|
|
"cacheVariables": {
|
|
"LIBAVR_MCU": "atmega8a",
|
|
"LIBAVR_REFLECT": "ON"
|
|
}
|
|
},
|
|
{
|
|
"name": "atmega16-generated",
|
|
"inherits": "base",
|
|
"cacheVariables": {
|
|
"LIBAVR_MCU": "atmega16",
|
|
"LIBAVR_REFLECT": "OFF"
|
|
}
|
|
},
|
|
{
|
|
"name": "atmega16-reflect",
|
|
"inherits": "base",
|
|
"cacheVariables": {
|
|
"LIBAVR_MCU": "atmega16",
|
|
"LIBAVR_REFLECT": "ON"
|
|
}
|
|
},
|
|
{
|
|
"name": "atmega32-generated",
|
|
"inherits": "base",
|
|
"cacheVariables": {
|
|
"LIBAVR_MCU": "atmega32",
|
|
"LIBAVR_REFLECT": "OFF"
|
|
}
|
|
},
|
|
{
|
|
"name": "atmega32-reflect",
|
|
"inherits": "base",
|
|
"cacheVariables": {
|
|
"LIBAVR_MCU": "atmega32",
|
|
"LIBAVR_REFLECT": "ON"
|
|
}
|
|
},
|
|
{
|
|
"name": "atmega32a-generated",
|
|
"inherits": "base",
|
|
"cacheVariables": {
|
|
"LIBAVR_MCU": "atmega32a",
|
|
"LIBAVR_REFLECT": "OFF"
|
|
}
|
|
},
|
|
{
|
|
"name": "atmega32a-reflect",
|
|
"inherits": "base",
|
|
"cacheVariables": {
|
|
"LIBAVR_MCU": "atmega32a",
|
|
"LIBAVR_REFLECT": "ON"
|
|
}
|
|
},
|
|
{
|
|
"name": "atmega168a-generated",
|
|
"inherits": "base",
|
|
"cacheVariables": {
|
|
"LIBAVR_MCU": "atmega168a",
|
|
"LIBAVR_REFLECT": "OFF"
|
|
}
|
|
},
|
|
{
|
|
"name": "atmega168a-reflect",
|
|
"inherits": "base",
|
|
"cacheVariables": {
|
|
"LIBAVR_MCU": "atmega168a",
|
|
"LIBAVR_REFLECT": "ON"
|
|
}
|
|
},
|
|
{
|
|
"name": "atmega1284p-generated",
|
|
"inherits": "base",
|
|
"cacheVariables": {
|
|
"LIBAVR_MCU": "atmega1284p",
|
|
"LIBAVR_REFLECT": "OFF"
|
|
}
|
|
},
|
|
{
|
|
"name": "atmega1284p-reflect",
|
|
"inherits": "base",
|
|
"cacheVariables": {
|
|
"LIBAVR_MCU": "atmega1284p",
|
|
"LIBAVR_REFLECT": "ON"
|
|
}
|
|
}
|
|
],
|
|
"buildPresets": [
|
|
{
|
|
"name": "atmega328p-generated",
|
|
"configurePreset": "atmega328p-generated"
|
|
},
|
|
{
|
|
"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"
|
|
},
|
|
{
|
|
"name": "atmega8-generated",
|
|
"configurePreset": "atmega8-generated"
|
|
},
|
|
{
|
|
"name": "atmega8-reflect",
|
|
"configurePreset": "atmega8-reflect"
|
|
},
|
|
{
|
|
"name": "atmega8a-generated",
|
|
"configurePreset": "atmega8a-generated"
|
|
},
|
|
{
|
|
"name": "atmega8a-reflect",
|
|
"configurePreset": "atmega8a-reflect"
|
|
},
|
|
{
|
|
"name": "atmega16-generated",
|
|
"configurePreset": "atmega16-generated"
|
|
},
|
|
{
|
|
"name": "atmega16-reflect",
|
|
"configurePreset": "atmega16-reflect"
|
|
},
|
|
{
|
|
"name": "atmega32-generated",
|
|
"configurePreset": "atmega32-generated"
|
|
},
|
|
{
|
|
"name": "atmega32-reflect",
|
|
"configurePreset": "atmega32-reflect"
|
|
},
|
|
{
|
|
"name": "atmega32a-generated",
|
|
"configurePreset": "atmega32a-generated"
|
|
},
|
|
{
|
|
"name": "atmega32a-reflect",
|
|
"configurePreset": "atmega32a-reflect"
|
|
},
|
|
{
|
|
"name": "atmega168a-generated",
|
|
"configurePreset": "atmega168a-generated"
|
|
},
|
|
{
|
|
"name": "atmega168a-reflect",
|
|
"configurePreset": "atmega168a-reflect"
|
|
},
|
|
{
|
|
"name": "atmega1284p-generated",
|
|
"configurePreset": "atmega1284p-generated"
|
|
},
|
|
{
|
|
"name": "atmega1284p-reflect",
|
|
"configurePreset": "atmega1284p-reflect"
|
|
}
|
|
],
|
|
"workflowPresets": [
|
|
{
|
|
"name": "atmega328p-generated",
|
|
"steps": [
|
|
{
|
|
"type": "configure",
|
|
"name": "atmega328p-generated"
|
|
},
|
|
{
|
|
"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"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name": "atmega8-generated",
|
|
"steps": [
|
|
{
|
|
"type": "configure",
|
|
"name": "atmega8-generated"
|
|
},
|
|
{
|
|
"type": "build",
|
|
"name": "atmega8-generated"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name": "atmega8-reflect",
|
|
"steps": [
|
|
{
|
|
"type": "configure",
|
|
"name": "atmega8-reflect"
|
|
},
|
|
{
|
|
"type": "build",
|
|
"name": "atmega8-reflect"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name": "atmega8a-generated",
|
|
"steps": [
|
|
{
|
|
"type": "configure",
|
|
"name": "atmega8a-generated"
|
|
},
|
|
{
|
|
"type": "build",
|
|
"name": "atmega8a-generated"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name": "atmega8a-reflect",
|
|
"steps": [
|
|
{
|
|
"type": "configure",
|
|
"name": "atmega8a-reflect"
|
|
},
|
|
{
|
|
"type": "build",
|
|
"name": "atmega8a-reflect"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name": "atmega16-generated",
|
|
"steps": [
|
|
{
|
|
"type": "configure",
|
|
"name": "atmega16-generated"
|
|
},
|
|
{
|
|
"type": "build",
|
|
"name": "atmega16-generated"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name": "atmega16-reflect",
|
|
"steps": [
|
|
{
|
|
"type": "configure",
|
|
"name": "atmega16-reflect"
|
|
},
|
|
{
|
|
"type": "build",
|
|
"name": "atmega16-reflect"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name": "atmega32-generated",
|
|
"steps": [
|
|
{
|
|
"type": "configure",
|
|
"name": "atmega32-generated"
|
|
},
|
|
{
|
|
"type": "build",
|
|
"name": "atmega32-generated"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name": "atmega32-reflect",
|
|
"steps": [
|
|
{
|
|
"type": "configure",
|
|
"name": "atmega32-reflect"
|
|
},
|
|
{
|
|
"type": "build",
|
|
"name": "atmega32-reflect"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name": "atmega32a-generated",
|
|
"steps": [
|
|
{
|
|
"type": "configure",
|
|
"name": "atmega32a-generated"
|
|
},
|
|
{
|
|
"type": "build",
|
|
"name": "atmega32a-generated"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name": "atmega32a-reflect",
|
|
"steps": [
|
|
{
|
|
"type": "configure",
|
|
"name": "atmega32a-reflect"
|
|
},
|
|
{
|
|
"type": "build",
|
|
"name": "atmega32a-reflect"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name": "atmega168a-generated",
|
|
"steps": [
|
|
{
|
|
"type": "configure",
|
|
"name": "atmega168a-generated"
|
|
},
|
|
{
|
|
"type": "build",
|
|
"name": "atmega168a-generated"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name": "atmega168a-reflect",
|
|
"steps": [
|
|
{
|
|
"type": "configure",
|
|
"name": "atmega168a-reflect"
|
|
},
|
|
{
|
|
"type": "build",
|
|
"name": "atmega168a-reflect"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name": "atmega1284p-generated",
|
|
"steps": [
|
|
{
|
|
"type": "configure",
|
|
"name": "atmega1284p-generated"
|
|
},
|
|
{
|
|
"type": "build",
|
|
"name": "atmega1284p-generated"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name": "atmega1284p-reflect",
|
|
"steps": [
|
|
{
|
|
"type": "configure",
|
|
"name": "atmega1284p-reflect"
|
|
},
|
|
{
|
|
"type": "build",
|
|
"name": "atmega1284p-reflect"
|
|
}
|
|
]
|
|
}
|
|
],
|
|
"testPresets": [
|
|
{
|
|
"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
|
|
}
|
|
}
|
|
]
|
|
}
|