Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей... |
05.05.2008, 16:58
|
|
Вид на жительство
Регистрация: 28.02.2008
Сообщений: 437
Сказал спасибо: 0
Сказали Спасибо 2 раз(а) в 2 сообщении(ях)
|
Как в HEX-файл добавить кусок другого HEX-а?
Который должен начинаться с заданного адреса
|
|
|
|
05.05.2008, 18:26
|
|
Почётный гражданин KAZUS.RU
Регистрация: 13.05.2006
Адрес: Москва
Сообщений: 3,559
Сказал спасибо: 76
Сказали Спасибо 326 раз(а) в 230 сообщении(ях)
|
Наверно вначале их нужно в BIN превратить.
__________________
Обучалка AVR PIC ARM начинающим программирование курс самоучитель шаг за шагом с нуля, CVAVR, PROTEUS, MPLAB, WinAVR, IAR, KEIL электроника - http://proavr.narod.ru
|
|
|
|
05.05.2008, 18:57
|
|
Супер-модератор
Регистрация: 13.03.2004
Адрес: Minsk
Сообщений: 2,378
Сказал спасибо: 1,948
Сказали Спасибо 1,327 раз(а) в 578 сообщении(ях)
|
Re: Как в HEX-файл добавить кусок другого HEX-а?
Сообщение от Don_Ambrosio
|
Который должен начинаться с заданного адреса
|
1) Почитать в инете про формат HEX файла
2) Взять тестовый редактор...
|
|
|
|
05.05.2008, 20:25
|
|
Вид на жительство
Регистрация: 28.02.2008
Сообщений: 437
Сказал спасибо: 0
Сказали Спасибо 2 раз(а) в 2 сообщении(ях)
|
Re: Как в HEX-файл добавить кусок другого HEX-а?
Сообщение от nml
|
Сообщение от Don_Ambrosio
|
Который должен начинаться с заданного адреса
|
1) Почитать в инете про формат HEX файла
2) Взять тестовый редактор...
|
Да знаю я что нужно конвертить адреса строк и контрольные суммы строк..
Нашёл утилиты командной строки, но чёта как-то ненаглядно всё - как бы не ошибиться работая "вслепую".. Мне бы утилитку какую с ГУЁвиной чтоб всё наглядно было.. А шоб не ошибиться случайно..
Пробал WinHEX... Чёта не получилось.. Глючит
|
|
|
|
05.05.2008, 20:29
|
|
Почётный гражданин KAZUS.RU
Регистрация: 22.06.2004
Адрес: Харьков
Сообщений: 1,488
Сказал спасибо: 3,207
Сказали Спасибо 3,010 раз(а) в 686 сообщении(ях)
|
Re: Как в HEX-файл добавить кусок другого HEX-а?
Почти любая оболочка для программатора может загружать файлы .BIN и .HEX; и сохранять файлы .BIN и .HEX
1)Загружаем исходный .HEX и сохраняем его как .BIN
2)Тоже для второго файла.
3)Копируем во втором .BIN нужные байты
4)Вставляем в текстовом редакторе с нужной позиции в исходном файле скопированные данные, сохраняем.
5)Открываем новый .BIN и пересохраняем его как .HEX
|
|
|
|
05.05.2008, 20:31
|
|
Временная регистрация
Регистрация: 11.12.2007
Сообщений: 79
Сказал спасибо: 0
Сказали Спасибо 1 раз в 1 сообщении
|
А на фига играться, извините ? Подсказали же - конвертни в бин, а там можно клеить как хошь, потом обратно в хекс.
|
|
|
|
05.05.2008, 21:20
|
|
Гражданин KAZUS.RU
Регистрация: 13.07.2005
Сообщений: 602
Сказал спасибо: 14
Сказали Спасибо 40 раз(а) в 19 сообщении(ях)
|
Re: Как в HEX-файл добавить кусок другого HEX-а?
Сообщение от lsa
|
Почти любая оболочка для программатора может...
|
Тогда уж как-то так:
1. Загружаем 1-й НЕХ
2. С нужного адреса подгружаем 2-й НЕХ
3. Сохраняем в виде файла.
PS А зачем вообще это надо?
|
|
|
|
05.05.2008, 21:27
|
|
Вид на жительство
Регистрация: 28.02.2008
Сообщений: 437
Сказал спасибо: 0
Сказали Спасибо 2 раз(а) в 2 сообщении(ях)
|
Сообщение от urry1
|
А на фига играться, извините ? Подсказали же - конвертни в бин, а там можно клеить как хошь, потом обратно в хекс.
|
Проблему решил без всяких утилит благодаря Антону
"Доделал пару "софт под Win32"-"софт под ATMega128" до того, что уже пишет во FLASH в количестве "скока хочешь" слов (по два байта) по адресу "куда следует". И ни разу не ошибается!
И вот, когда уже вроде бы "всё пучком", ещё раз нарываюсь на грабли: в формате iHex НЕТУ никакой возможности адресовывать свыше 64 килобайт!!!
Я даже три книги купил, но там всё честно про формат написано - уже по-русски, чтобы быть уверенным. На адресацию отводится ровно 4 символа в формате HEX.
Анализ файла от ImageCraft выявил наличие в на границе перехода через 64k некоторой неоднородности в файле iHex:
______cut here ___________
:14FFA0009924AA24BB2441D0C1F044D0B1F0E8E2000F111F6 3
:14FFB400221F331F771C881C991CAA1CBB1C88169906AA063 0
:14FFC800BB0628F0881A990AAA0ABB0A0395EA9559F726F40 D
:14FFDC00082D192D2A2D3B2D13C07A928A929A92AA92BA922 8
:10FFF000CA92EA938A939A93AA93BA938B859C8523
:020000021000EC
:14000000AD85BE85C32E0EF0CB260895C7FC17D0B991A991C C
:1400140099918991E991C990B990A99099908990799024963 A
:140028000895E02FE12BE22BE32B0895E82FE92BEA2BEB2BF E
:14003C00089500951095209530950F5F1F4F2F4F3F4F0895D A
:1400500080959095A095B0958F5F9F4FAF4FBF4F089568946 7
:1400640001C0E8942A93FA92EA92FF24EE2420E1000FFF1C2 6
______cut here ___________
Вот такая вот беда...
Видимо он куски памяти подсчитывает и закончив одину 64-килобайтную секцию начинает писать в другую.
Мне это не очень нравится, потому что может стать источником ошибки: а вдруг мне сразу во вторую часть писать нужно?
И вот ведь в чём прикол: я уже и программатор отстроил на максимальную гибкость, а тут...
В общем, я весь в расстройстве. Помогите, кто знает!
Спасибо.
……
Учитывая немаленькое число просмотров, дам ответ...
Ответ крылся в том самом неясном куске.
Если тип строки 00 - это данные. Если 01 - конец файла.
А если 02 - это команда изменения сегмента.
Сегменты дробятся с кратностью 16 байт. За командой идёт адрес сегмента - два байта, старший сначала(!).
При открытии файла, если сегмент не изменялся, пишем в нулевой сегмент. Поэтому в коротких программах эта строка "тип 02" вообще не встречается.
В начале каждой строки данных следует относительный адрес записи - адрес, куда эти данные писать.
Абсолютный адрес записи - нужно учесть текущий сегмент. Достаточно его умножить на 16 и прибавить к относительному адресу.
Всё!
Я записал 70% проца ATMega128 из iHex, считал и всё совпало. Да и прога - тоже работала как часы.
Всем спасибо. С форматом iH вопрос ясен.
Антон."(С)
Т.е. просто перед блоком данных вставляем директиву задания номера 16-ти байтного сегмента и вуаля. Ничего конвертить не надо . И смещения в добавленном блоке будут отсчитываться от начала заданного Вами сегмента, а не от начала памяти
|
|
|
|
05.05.2008, 21:56
|
|
Почётный гражданин KAZUS.RU
Регистрация: 22.06.2004
Адрес: Харьков
Сообщений: 1,488
Сказал спасибо: 3,207
Сказали Спасибо 3,010 раз(а) в 686 сообщении(ях)
|
Re: Как в HEX-файл добавить кусок другого HEX-а?
Сообщение от smg123
|
PS А зачем вообще это надо?
|
У меня например в мега32 прога занимает 10 килобайт.
А данные (килобайт 20) хранятся в конце адресного пространства.
Исходник откомпиллирован и уже есть HEX.
Я готовлю данные за пару минут и за пару минут объединяю в готовую прошивку.
|
|
|
|
05.05.2008, 22:02
|
|
Вид на жительство
Регистрация: 28.02.2008
Сообщений: 437
Сказал спасибо: 0
Сказали Спасибо 2 раз(а) в 2 сообщении(ях)
|
Re: Как в HEX-файл добавить кусок другого HEX-а?
Сообщение от lsa
|
Сообщение от smg123
|
PS А зачем вообще это надо?
|
У меня например в мега32 прога занимает 10 килобайт.
А данные (килобайт 20) хранятся в конце адресного пространства.
Исходник откомпиллирован и уже есть HEX.
Я готовлю данные за пару минут и за пару минут объединяю в готовую прошивку.
|
Во-во... А у меня в ATmega128 прога занимает 8 килобайт, а остальные 120 килобайт - это данные. Например прошивки для других микроконтроллеров сети
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 02:13.
|
|