Argon (24.11.2007 18:44, просмотров: 2591)
Интересная особенность IAR-овского линкера. Есть необходимость засунуть программу в один сектор LPC2103, т.е. в 4096 байт. Ее размер уже подходит к пределу, на что IAR при линковке выдает сообщение о недостаточности размера заданного сегмента CODE.
Error[e16]: Segment CODE (size: 0xe20 align: 0x2) is too long for segment definition. At least 0x20 more bytes needed. The problem occurred while
processing the segment placement command "-Z(CODE)CODE=ROMSTART-ROMEND", where at the moment of placement the available memory
ranges were "CODE:1c0-1fb,CODE:200-fff"
Объем программы еще не вышел за пределы сектора. Очевидно, что он просто не может раскидать функции по сегменту.
Если задать сегмент CODE больше, чем один сектор, хотя бы на 100 байт. Линкуется все на ура, причем, судя по содержимому памяти в окне Memory дебаггера, программа не лезет в следующий сегмент. Да и судя по линкерному *.map файлу слинкованный код остается в пределах одного сегмента.