#pragma once #include #include #include "../TargetSignature.hpp" #include "Family.hpp" namespace Bloom::Targets::Microchip::Avr::Avr8Bit { struct TargetParameters { std::optional bootSectionStartAddress; std::optional gpRegisterStartAddress; std::optional gpRegisterSize; std::optional flashPageSize; std::optional flashSize; std::optional flashStartAddress; std::optional ramStartAddress; std::optional ramSize; std::optional eepromSize; std::optional eepromPageSize; std::optional eepromAddressRegisterHigh; std::optional eepromAddressRegisterLow; std::optional eepromDataRegisterAddress; std::optional eepromControlRegisterAddress; std::optional ocdRevision; std::optional ocdDataRegister; std::optional statusRegisterStartAddress; std::optional statusRegisterSize; std::optional stackPointerRegisterStartAddress; std::optional stackPointerRegisterSize; std::optional spmcRegisterStartAddress; std::optional osccalAddress; // XMega/PDI specific target params std::optional appSectionPdiOffset; std::optional bootSectionSize; std::optional bootSectionPdiOffset; std::optional eepromPdiOffset; std::optional ramPdiOffset; std::optional fuseRegistersPdiOffset; std::optional lockRegistersPdiOffset; std::optional userSignaturesPdiOffset; std::optional productSignaturesPdiOffset; std::optional nvmBaseAddress; std::optional ioPortAddressRangeStart; std::optional ioPortAddressRangeEnd; }; }