Removed fuse type restriction when extracting fuse bit descriptors from AVR8 TDFs

This commit is contained in:
Nav
2023-05-26 22:42:11 +01:00
parent df51da4479
commit f3f0b504f3
3 changed files with 7 additions and 8 deletions

View File

@@ -53,6 +53,9 @@ namespace Bloom::DebugToolDrivers::Protocols::CmsisDap::Edbg::Avr::CommandFrames
this->payload[3] = 0x00;
break;
}
default: {
throw Exceptions::Exception("Unsupported fuse type");
}
}
}
};

View File

@@ -685,20 +685,15 @@ namespace Bloom::Targets::Microchip::Avr::Avr8Bit::TargetDescription
{"extended", FuseType::EXTENDED},
});
for (const auto& [fuseTypeName, fuse] : fuseRegisterGroup.registersMappedByName) {
const auto fuseTypeIt = fuseTypesByName.find(fuseTypeName);
if (fuseTypeIt == fuseTypesByName.end()) {
// Unknown fuse type name
continue;
}
const auto fuseBitFieldIt = fuse.bitFieldsMappedByName.find(fuseBitName);
if (fuseBitFieldIt != fuse.bitFieldsMappedByName.end()) {
const auto fuseTypeIt = fuseTypesByName.find(fuseTypeName);
return FuseBitsDescriptor(
fuseAddressOffset + fuse.offset,
fuseTypeIt->second,
fuseTypeIt != fuseTypesByName.end() ? fuseTypeIt->second : FuseType::OTHER,
fuseBitFieldIt->second.mask
);
}

View File

@@ -11,6 +11,7 @@ namespace Bloom::Targets::Microchip::Avr
LOW,
HIGH,
EXTENDED,
OTHER,
};
enum class FuseEnableStrategy: std::uint8_t