Included check for flash memory segments with name "PROGMEM", for the new AVR8 TDFs
This commit is contained in:
@@ -10,6 +10,7 @@ class Avr8TargetDescriptionFile extends TargetDescriptionFile
|
|||||||
const AVR8_FAMILY_MEGA = 'MEGA';
|
const AVR8_FAMILY_MEGA = 'MEGA';
|
||||||
const AVR8_FAMILY_TINY = 'TINY';
|
const AVR8_FAMILY_TINY = 'TINY';
|
||||||
const AVR8_FAMILY_XMEGA = 'XMEGA';
|
const AVR8_FAMILY_XMEGA = 'XMEGA';
|
||||||
|
const AVR8_FAMILY_OTHER = 'OTHER';
|
||||||
|
|
||||||
const AVR8_PHYSICAL_INTERFACE_JTAG = 'JTAG';
|
const AVR8_PHYSICAL_INTERFACE_JTAG = 'JTAG';
|
||||||
const AVR8_PHYSICAL_INTERFACE_PDI = 'PDI';
|
const AVR8_PHYSICAL_INTERFACE_PDI = 'PDI';
|
||||||
@@ -75,6 +76,9 @@ class Avr8TargetDescriptionFile extends TargetDescriptionFile
|
|||||||
|
|
||||||
} else if (stristr($deviceAttributes['family'], 'mega') !== false) {
|
} else if (stristr($deviceAttributes['family'], 'mega') !== false) {
|
||||||
$this->family = self::AVR8_FAMILY_MEGA;
|
$this->family = self::AVR8_FAMILY_MEGA;
|
||||||
|
|
||||||
|
} else {
|
||||||
|
$this->family = self::AVR8_FAMILY_OTHER;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -94,7 +98,8 @@ class Avr8TargetDescriptionFile extends TargetDescriptionFile
|
|||||||
$progAddressSpace = $this->addressSpacesById['prog'] ?? null;
|
$progAddressSpace = $this->addressSpacesById['prog'] ?? null;
|
||||||
if (!empty($progAddressSpace)) {
|
if (!empty($progAddressSpace)) {
|
||||||
$flashMemorySegment = $progAddressSpace->memorySegmentsByTypeAndName['flash']['flash']
|
$flashMemorySegment = $progAddressSpace->memorySegmentsByTypeAndName['flash']['flash']
|
||||||
?? $progAddressSpace->memorySegmentsByTypeAndName['flash']['app_section'] ?? null;
|
?? $progAddressSpace->memorySegmentsByTypeAndName['flash']['app_section']
|
||||||
|
?? $progAddressSpace->memorySegmentsByTypeAndName['flash']['progmem'] ?? null;
|
||||||
$bootSectionMemorySegment = $progAddressSpace->memorySegmentsByTypeAndName['flash']['boot_section_1']
|
$bootSectionMemorySegment = $progAddressSpace->memorySegmentsByTypeAndName['flash']['boot_section_1']
|
||||||
?? $progAddressSpace->memorySegmentsByTypeAndName['flash']['boot_section'] ?? null;
|
?? $progAddressSpace->memorySegmentsByTypeAndName['flash']['boot_section'] ?? null;
|
||||||
|
|
||||||
|
|||||||
@@ -369,11 +369,12 @@ std::optional<MemorySegment> TargetDescriptionFile::getFlashMemorySegment() cons
|
|||||||
auto& flashMemorySegments = programMemorySegments.find(MemorySegmentType::FLASH)->second;
|
auto& flashMemorySegments = programMemorySegments.find(MemorySegmentType::FLASH)->second;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Some target descriptions describe the flash memory segments in the "APP_SECTION" segment, whereas
|
* In AVR8 TDFs, flash memory segments are typically named "APP_SECTION", "PROGMEM" or "FLASH".
|
||||||
* others use the "FLASH" segment.
|
|
||||||
*/
|
*/
|
||||||
auto flashSegmentIt = flashMemorySegments.find("app_section") != flashMemorySegments.end() ?
|
auto flashSegmentIt = flashMemorySegments.find("app_section") != flashMemorySegments.end() ?
|
||||||
flashMemorySegments.find("app_section") : flashMemorySegments.find("flash");
|
flashMemorySegments.find("app_section")
|
||||||
|
: flashMemorySegments.find("progmem") != flashMemorySegments.end()
|
||||||
|
? flashMemorySegments.find("progmem") : flashMemorySegments.find("flash");
|
||||||
|
|
||||||
if (flashSegmentIt != flashMemorySegments.end()) {
|
if (flashSegmentIt != flashMemorySegments.end()) {
|
||||||
return flashSegmentIt->second;
|
return flashSegmentIt->second;
|
||||||
|
|||||||
Reference in New Issue
Block a user