[2/2] Внимание! баг в IAR-овском postlink?

Jul 29, 2004 Last reply: 21 years ago 4 Replies

Hello Oleksandr.

29 Jul 04 18:17, you wrote to all:

OR> Atmel winavr тоже (как минимум был) любитель не там, где надо OR> поставить запись расширенной адресации в hex, подобное длинное OR> письмо было от меня пару лет назад.

Hда. А objcopy не проверял? Как он работает?

Кстати, а что этот postlink.exe делает?

Alexey

Hi, All!



Продолжаем. Но ведь интересно же, где они умудрились наколотся? "Закат солнца вручную", смотрим на 1.a90 и 1.hex ========= 1.a90 :020000020000FC Стартовый адрес сегмента 0, за ним явно таблица векторов. :100000000C94EC7F189518951895189518951895D7 :100010001895189518951895189518951895189578 :100020001895189518951895189518951895189568 :100030001895189518951895189518951895189558 :100040001895189518951895189518951895189548 :100050001895189518951895189518951895189538 :100060001895189518951895189518951895189528 :100070001895189518951895189518951895189518 :100080001895189518951895189518950000000062 :100090000000000000000000000000000000000060 это пошёл foo1[]



:10FF70000000000000000000000000000000000081 За ним - стартап и main() :10FF8000000000000000000000000000792F682F32 :10FF900080E090E01AC021E030E0A9010E940480D6 :10FFA000102FECE8F0E0E80FF91F2491E2E3F0E015 :10FFB00031E0E80FF91F3BBF0691020F010F21E06E :10FFC00030E0A9010E941080019680300FEF900769 :10FFD00010F3862F972F08950FE30DBF01E00EBF9A :10FFE000C0E2D1E00E9414800E94C67F0E94168069 :10FFF0000C941680E199FECF08954F5F5F4FFADFB2 немного не влезли в первые 64К, переваливаем



:020000021000EC сегментный адрес 1000, это к последующим адресам добавлять



0x00010000

:100000004EBB5FBBE09A0895FADF0DB308954F5FD2 :100010005F4F4EBB5FBBF894E29AE19A0FBE089522 :100020000FB6E8DF0DBBF5CF01E00895000088951D :10003000FECF0000000000000000000000000000F3 :1000400000000000000000000000000000000000B0 foo2[]



:10FF100000000000000000000000000000000000E1 :10FF200000000000000000000000000000000000D1 :02FF30000000CF :00000001FF Всё, конец. Никаких претензий. Теперь берём постлиноквский.



========= 1.hex :020000040000FA Стартовый линейный адрес 0x00000000



:040000000C94EC7FF1 Это был jmp на запускалку А где же вектора? Впрочем, в hex-файле записи не обязаны быть отсортированными.



:10008C000000000000000000000000000000000064 foo1[]



:10FF7C000000000000000000000000000000000075 запускалка и код



:10FF8C00792F682F80E090E01AC021E030E0A901C1 :10FF9C000E940480102FECE8F0E0E80FF91F249188 :10FFAC00E2E3F0E031E0E80FF91F3BBF0691020FEE :10FFBC00010F21E030E0A9010E94108001968030F1 :10FFCC000FEF900710F3862F972F08950FE30DBFB7 :10FFDC0001E00EBFC0E2D1E00E9414800E94C67FF7 :10FFEC000E9416800C941680E199FECF08954F5F05 :04FFFC005F4FFADF7A Аналогично, не влезло :020000040001F9 Внимание! К адресам ВСЕХ записей после этого приписывается старшие 16 бит как 0x0001 (т.е. добавляется 0x00010000).



:100000004EBB5FBBE09A0895FADF0DB308954F5FD2 :100010005F4F4EBB5FBBF894E29AE19A0FBE089522 :100020000FB6E8DF0DBBF5CF01E00895000088951D :02003000FECF01



:020000040001F9 Опять то же самое, не нужно, но и не мешает. Так было удобно, перед началом новой секции просто поставить запись её стартового адреса (я только за такие байторасточительные подходы :-)



:1000320000000000000000000000000000000000BE :1000420000000000000000000000000000000000AE



foo2[]



:10FF020000000000000000000000000000000000EF :10FF120000000000000000000000000000000000DF :10FF220000000000000000000000000000000000CF



Опаньки! Пошла таблица векторов, но БЕЗ именно ЕЁ стартового адреса. Итого вместо адресов 0x00000004 и далее она легла в



0x00010004 и далее! Именно это показал fc/b с бинарниками и на это выругался avreal.

:100004001895189518951895189518951895189584 :100014001895189518951895189518951895189574 :100024001895189518951895189518951895189564 :100034001895189518951895189518951895189554 :100044001895189518951895189518951895189544 :100054001895189518951895189518951895189534 :100064001895189518951895189518951895189524 :100074001895189518951895189518951895189514 :080084001895189518951895C0 :00000001FF



Перед векторами очень нехватает записи ":020000040000FA", но её там нет.



Остаётся накатать баг-репорт и отправить в IAR.



Atmel winavr тоже (как минимум был) любитель не там, где надо поставить запись расширенной адресации в hex, подобное длинное письмо было от меня пару лет назад.



wbr, p.s.

formatting link


29-Jul-04 16:56 Alexey Boyko wrote to Oleksandr Redchuk:

OR>> Atmel winavr тоже (как минимум был) любитель не там, где надо OR>> поставить запись расширенной адресации в hex, подобное длинное OR>> письмо было от меня пару лет назад.

AB> Hда. А objcopy не проверял? Как он работает? Я когда мерял скорость записи в мегу128, генерил дутый файл, несколько пустых массивов. Выходило под 110кб, avreal не обижался.

AB> Кстати, а что этот postlink.exe делает? А это такой ихний objcopy, разваливает на hex-ы для flash и eeprom.

wbr,

Hello Oleksandr.

30 Jul 04 06:19, you wrote to me:

AB>> Кстати, а что этот postlink.exe делает? OR> А это такой ихний objcopy, разваливает на hex-ы для flash и eeprom.

Вот бы было хорошо, если бы avreal elf'ы кушал. Хотя, можно написать скриптик, который разбивает elf в два временных хекса, скармливает их avreal'у, а потом удаляет.

Alexey

9-Aug-04 08:10 Alexey Boyko wrote to Oleksandr Redchuk:

AB>>> Кстати, а что этот postlink.exe делает? OR>> А это такой ихний objcopy, разваливает на hex-ы для flash и eeprom.

AB> Вот бы было хорошо, если бы avreal elf'ы кушал. Мммм.... Была уже мысля... Заодно с секцией .fuses... Но как-то всё за пределы "была мысля" не выходит.

AB> Хотя, можно написать AB> скриптик, который разбивает elf в два временных хекса, скармливает их AB> avreal'у, а потом удаляет. У меня не вызывает неудобств болтание рядом с .elf-ом уже выкорчёванных из него .hex и .eep.

wbr,

Join the Discussion

Have something to add? Share your thoughts — no account required.

Didn't find your answer?

Ask the community — no account required