I added FWINFO and APPLICATION_CRC regions to my IAR linker script and hardcoded in their start and end values. The code builds fine and everything is where it's supposed to be.
I have to make several linker scripts for different Synergy MCUs so instead of hardcoding the addresses, I defined some additional symbols for them. But when I did back-to-back builds (Clean, Rebuild All) with the hardcoded ICF and the one with defined symbols, the generated code was different. The code I pinned in FWINFO and APPLICATION_CRC was exactly where it was supposed to be in both builds, but I expected the images to be byte for byte identical, which they weren't. Before moving on, I'd just like to understand why they are different.
ORIGINAL HARDCODED:
define symbol MMF_Offset = 0x02000000;
//define symbol MMF_Offset = 0;
/*-Memory Regions-*/
define symbol region_VECT_start = MMF_Offset + 0x00000000;
define symbol region_VECT_end = MMF_Offset + 0x000003FF;
define symbol region_ROMREG_start = MMF_Offset + 0x00000400;
define symbol region_ROMREG_end = MMF_Offset + 0x000004FF;
define symbol region_FLASH_start = MMF_Offset + 0x00000500;
define symbol region_FLASH_end = MMF_Offset + 0x00077EFF;
define symbol region_FWINFO_start = MMF_Offset + 0x00077F00;
define symbol region_FWINFO_end = MMF_Offset + 0x00077FFB;
define symbol region_APPLICATION_CRC_start = MMF_Offset + 0x00077FFC;
define symbol region_APPLICATION_CRC_end = MMF_Offset + 0x00077FFF;
WITH DEFINED SYMBOLS:
define symbol MMF_Offset = 0x02000000;
//define symbol MMF_Offset = 0;
define symbol Avail_Flash_Start = 0x00000500;
define symbol Avail_Flash_End = 0x00077EFF;
define symbol Pinned_Fwinfo_Start = 0x00077F00;
define symbol Pinned_Fwinfo_End = 0x00077FFB;
define symbol Pinned_Crc_Start = 0x00077FFC;
define symbol Pinned_Crc_End = 0x00077FFF;
/*-Memory Regions-*/
define symbol region_VECT_start = MMF_Offset + 0x00000000;
define symbol region_VECT_end = MMF_Offset + 0x000003FF;
define symbol region_ROMREG_start = MMF_Offset + 0x00000400;
define symbol region_ROMREG_end = MMF_Offset + 0x000004FF;
define symbol region_FLASH_start = MMF_Offset + Avail_Flash_Start;
define symbol region_FLASH_end = MMF_Offset + Avail_Flash_End;
define symbol region_FWINFO_start = MMF_Offset + Pinned_Fwinfo_Start;
define symbol region_FWINFO_end = MMF_Offset + Pinned_Fwinfo_End;
define symbol region_APPLICATION_CRC_start = MMF_Offset + Pinned_Crc_Start;
define symbol region_APPLICATION_CRC_end = MMF_Offset + Pinned_Crc_End;
Thank you,
tom