Yes. I have that completely covered. I use "memory models" for each ROM definition. For example, here the ROM metadata "wrxbase" references the memory model 68HC16Y5 for a WRX:
- Code: Select all
<rom>
<romid>
<xmlid>wrxbase</xmlid>
<internalidaddress>200</internalidaddress>
<internalidstring>--------</internalidstring>
<memmodel>68HC16Y5</memmodel>
</romid>
.
.
.
</rom>
And the memory model itself looks like this:
- Code: Select all
<ecumemmodels>
<ecumemmodel version="1.0" model="68HC16Y5">
<memsegment name="FB01" type="FLASH" start="00000000" length="4000" />
<memsegment name="FB02" type="FLASH" start="00004000" length="4000" />
<memsegment name="FB03" type="FLASH" start="00008000" length="4000" />
<memsegment name="FB04" type="FLASH" start="0000C000" length="4000" />
<memsegment name="FB05" type="FLASH" start="00010000" length="4000" />
<memsegment name="FB06" type="FLASH" start="00014000" length="4000" />
<memsegment name="FB07" type="FLASH" start="00018000" length="4000" />
<memsegment name="FB08" type="FLASH" start="0001C000" length="4000" />
<memsegment name="RAM" type="RAM" start="00020000" length="2000" />
<memsegment name="FB09" type="FLASH" start="00028000" length="4000" />
<memsegment name="FB10" type="FLASH" start="0002C000" length="4000" />
</ecumemmodel>
.
.
.
<ecumemmodels>
This allows my code to deal with sparse memory spaces, know which areas are modifiable in what ways (e.g. FLASH, ROM, RAM), and also know how the flash blocks are sized for erasing.