An error occurs even when the section would fit to the desired memory range (at blocks > 0x40, an alignment to the next 0x40 address is made):
in code:
typedef struct
{
DT_U16 LiveCount;
DT_U16 Revision;
DT_U16 RevisionSWMajor;
DT_U16 RevisionSWMinor;
DT_U16 RevisionSWMaintenance;
DT_U16 CpuUsage;
DT_U16 ForFuture[58];
} CPU2_INFO_VALUES;
#pragma DATA_SECTION(MsgRamCpu2InfoValues,"cpu2_to_1_offs_info");
static volatile CPU2_INFO_VALUES MsgRamCpu2InfoValues;
Problems with linking with this:
CPU2_TO_1_MSGRAM_IM : origin = 0x0003F842, length = 0x40
->
error #10099-D: program will not fit into available memory. run placement with alignment/blocking fails for section "cpu2_to_1_offs_info" size 0x40 page 1. Available memory ranges:
CPU2_TO_1_MSGRAM_IM size: 0x40 unused: 0x40 max hole: 0x40
Problems with linking with this:
CPU2_TO_1_MSGRAM_IM : origin = 0x0003F842, length = 0x78
->
error #10099-D: program will not fit into available memory. run placement with alignment/blocking fails for section "cpu2_to_1_offs_info" size 0x40 page 1. Available memory ranges:
CPU2_TO_1_MSGRAM_IM size: 0x78 unused: 0x78 max hole: 0x78
it is ok when:
CPU2_TO_1_MSGRAM_IM : origin = 0x0003F840, length = 0x40
it builds when:
CPU2_TO_1_MSGRAM_IM : origin = 0x0003F842, length = 0x80
but it is mapped to address 0003f880 instead of 0003f840:
0003f880 00000040 main.obj (cpu2_to_1_offs_info)
why this alignment to a 0x40 address? I tried 3 different compiler versions (6.4.6, 6.4.9, 6.4.10), always the same problem