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

Hello Oleksandr.

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

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

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

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

Alexey

Reply to
Alexey Boyko
Loading thread data ...

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

Reply to
Oleksandr Redchuk
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,

Reply to
Oleksandr Redchuk

Hello Oleksandr.

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

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

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

Alexey

Reply to
Alexey Boyko
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,

Reply to
Oleksandr Redchuk

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.