2021-04-04 21:04:12 +01:00
|
|
|
#pragma once
|
|
|
|
|
|
|
|
|
|
#include <cstdint>
|
|
|
|
|
#include <optional>
|
|
|
|
|
|
|
|
|
|
#include "../TargetSignature.hpp"
|
|
|
|
|
#include "Family.hpp"
|
|
|
|
|
|
|
|
|
|
namespace Bloom::Targets::Microchip::Avr::Avr8Bit
|
|
|
|
|
{
|
2021-07-06 20:07:41 +01:00
|
|
|
/**
|
|
|
|
|
* Holds all parameters that would be required for configuring a debug tool, for an AVR8 target.
|
|
|
|
|
*
|
|
|
|
|
* This can usually be extracted from the AVR8 TDF.
|
|
|
|
|
* See Targets::Microchip::Avr::Avr8Bit::TargetDescription::TargetDescriptionFile::getTargetParameters();
|
|
|
|
|
*/
|
2021-04-04 21:04:12 +01:00
|
|
|
struct TargetParameters
|
|
|
|
|
{
|
2021-07-06 20:07:41 +01:00
|
|
|
std::optional<std::uint32_t> mappedIoSegmentStartAddress;
|
|
|
|
|
std::optional<std::uint16_t> mappedIoSegmentSize;
|
2021-04-04 21:04:12 +01:00
|
|
|
std::optional<std::uint32_t> bootSectionStartAddress;
|
|
|
|
|
std::optional<std::uint32_t> gpRegisterStartAddress;
|
|
|
|
|
std::optional<std::uint32_t> gpRegisterSize;
|
|
|
|
|
std::optional<std::uint16_t> flashPageSize;
|
|
|
|
|
std::optional<std::uint32_t> flashSize;
|
|
|
|
|
std::optional<std::uint32_t> flashStartAddress;
|
|
|
|
|
std::optional<std::uint16_t> ramStartAddress;
|
|
|
|
|
std::optional<std::uint32_t> ramSize;
|
2021-06-27 20:09:15 +01:00
|
|
|
std::optional<std::uint16_t> eepromStartAddress;
|
2021-04-04 21:04:12 +01:00
|
|
|
std::optional<std::uint16_t> eepromSize;
|
2021-07-04 00:29:43 +01:00
|
|
|
std::optional<std::uint8_t> eepromPageSize;
|
2021-04-04 21:04:12 +01:00
|
|
|
std::optional<std::uint8_t> eepromAddressRegisterHigh;
|
|
|
|
|
std::optional<std::uint8_t> eepromAddressRegisterLow;
|
|
|
|
|
std::optional<std::uint8_t> eepromDataRegisterAddress;
|
|
|
|
|
std::optional<std::uint8_t> eepromControlRegisterAddress;
|
|
|
|
|
std::optional<std::uint8_t> ocdRevision;
|
|
|
|
|
std::optional<std::uint8_t> ocdDataRegister;
|
|
|
|
|
std::optional<std::uint16_t> statusRegisterStartAddress;
|
|
|
|
|
std::optional<std::uint16_t> statusRegisterSize;
|
2021-07-02 01:34:17 +01:00
|
|
|
std::optional<std::uint16_t> stackPointerRegisterLowAddress;
|
2021-04-04 21:04:12 +01:00
|
|
|
std::optional<std::uint16_t> stackPointerRegisterSize;
|
2021-05-02 15:54:23 +01:00
|
|
|
std::optional<std::uint8_t> spmcRegisterStartAddress;
|
2021-04-04 21:04:12 +01:00
|
|
|
std::optional<std::uint8_t> osccalAddress;
|
|
|
|
|
|
2021-11-07 20:35:36 +00:00
|
|
|
// XMega/PDI/UPDI specific target params
|
2021-04-04 21:04:12 +01:00
|
|
|
std::optional<std::uint32_t> appSectionPdiOffset;
|
|
|
|
|
std::optional<std::uint16_t> bootSectionSize;
|
|
|
|
|
std::optional<std::uint32_t> bootSectionPdiOffset;
|
|
|
|
|
std::optional<std::uint32_t> eepromPdiOffset;
|
|
|
|
|
std::optional<std::uint32_t> ramPdiOffset;
|
|
|
|
|
std::optional<std::uint32_t> fuseRegistersPdiOffset;
|
|
|
|
|
std::optional<std::uint32_t> lockRegistersPdiOffset;
|
|
|
|
|
std::optional<std::uint32_t> userSignaturesPdiOffset;
|
|
|
|
|
std::optional<std::uint32_t> productSignaturesPdiOffset;
|
2021-04-06 23:21:37 +01:00
|
|
|
std::optional<std::uint16_t> nvmBaseAddress;
|
2021-04-04 21:04:12 +01:00
|
|
|
|
2021-06-27 20:09:15 +01:00
|
|
|
// UPDI specific target params
|
|
|
|
|
std::optional<std::uint16_t> ocdModuleAddress;
|
|
|
|
|
std::optional<std::uint32_t> programMemoryUpdiStartAddress;
|
|
|
|
|
std::optional<std::uint16_t> signatureSegmentStartAddress;
|
|
|
|
|
std::optional<std::uint16_t> signatureSegmentSize;
|
|
|
|
|
std::optional<std::uint16_t> fuseSegmentStartAddress;
|
|
|
|
|
std::optional<std::uint16_t> fuseSegmentSize;
|
|
|
|
|
std::optional<std::uint16_t> lockbitsSegmentStartAddress;
|
2021-04-04 21:04:12 +01:00
|
|
|
};
|
|
|
|
|
}
|