|
Рзмер скомпиленного образа в переменную, Автоматом, средствами ИАР. |
|
|
|
Aug 14 2009, 07:02
|
Участник

Группа: Свой
Сообщений: 73
Регистрация: 25-10-07
Из: Тольятти
Пользователь №: 31 723

|
Добрый день. Вот пишу вторичный загрузчик LPC2368, возникла необходимость подставлять размер образа в код программы. Естественно заранее он не известен, но после линковки выводится в сообщении: X bytes of readonly code memory Y bytes of readonly data memory Z bytes of readwrite data memory
Вот этими X Y Z надо инициализировать какие нибудь переменные в коде (получается, что уже после линковки).
В некоторых компиляторах это вроде работает (видел строки наподобие "U32 Size = Image$$ER_IROM$$RO$$Length"), а вот как в ИАР это сделать?
|
|
|
|
|
 |
Ответов
|
Aug 20 2009, 07:48
|
Участник

Группа: Свой
Сообщений: 73
Регистрация: 25-10-07
Из: Тольятти
Пользователь №: 31 723

|
В общем получилось вычислить размер всех секций, но как их не складываю, с размером бинарика не сходится.
CSTACK 0x0 (0) IRQ_STACK 0x200 (512) SVC_STACK 0x200 (512) .vectors 0x40 (64) .cstartup 0xFC (252) HEAP 0x1000 (4096) .text 0x827C (33404) .rodata 0x3287 (12935) ICODE 0xE0 (224) .iar.init_table 0x0 (0) .bss 0x574 (1396) .data 0x1B4 (436) .iar.dynexit 0x300 (768)
В .map - файле: 33944 bytes of readonly code memory 13189 bytes of readonly data memory 7 721 bytes of readwrite data memory
33944 +13189 = 47133, а сам бинарик весит 47134 байт - то есть даже с .map расхождение. Из каких же секций он складывается?
|
|
|
|
|
Aug 20 2009, 08:41
|
Участник

Группа: Свой
Сообщений: 73
Регистрация: 25-10-07
Из: Тольятти
Пользователь №: 31 723

|
Цитата(zltigo @ Aug 20 2009, 11:56)  1.Секции располагаются в памяти соответствии с заданными Вами же требованиями по их выравниваю. 2.Ума не приложу, зачем нужно знать из размер, а не просто конечный результат. И как же узнать конечный результат (я так понимаю, Вы имели ввиду размер бинарика)?
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|