Почему линкер при линковке требует больше места чем ему требуется на самом деле?
Смотрю map-файл или готовый бинарник, сгенеренный когда линкеру дается весь флеш и затем задаю это (даже немного большее) значение как ROMEND.
Код
-DBOOTSIZE=00008000
//-DAPPMAXSIZE=00010000
-DAPPMAXSIZE=0000AB0F
-DROMSTART=(00100000+BOOTSIZE)
-DROMEND=(00100000+BOOTSIZE+APPMAXSIZE)
Тогда линковщик начинает ругаться:
Код
Error[e16]: Segment DATA_C (size: 0x2e3c align: 0x2) is too long for segment definition. At least 0xc24 more bytes needed. The problem occurred while processing the segment placement
command "-Z(CONST)INITTAB,DATA_ID,DATA_C=ROMSTART-ROMEND", where at the moment of placement the available memory ranges were "CODE:1108f6-112b0f"
Reserved ranges relevant to this placement:
108000-1083a7 ICODE
1083a8-1108a5 CODE
1108a6-1108bf INITTAB
1108c0-112b0f DATA_ID
Если дать ему эти нехватающие 0xC24 байта, то линкуется нормально, но это выделенное пространство заполняет как пустое неиспользованное место.
Почему? На всяк случай приложил map и xcl файлы.
Прикрепленные файлы
pack.zip ( 2.65 килобайт )
Кол-во скачиваний: 23