Файл прошивки hex.
Файл прошивки hex.
Доброго времени суток!
Никогда не задумывался, но возник следующий вопрос: у меня есть hex прошивка формата intel 16.
Структура Hex:
RECORD MARK ':'
RECLEN 1 б
LOAD OFFSET 1 б
RECTYP 2 б
INFO или DATA n б
CHKSUM 1 б
/r/n
Когда прошивается контроллер, в ячейки Flash записываются только данные из DAT? или еще какие поля?
Никогда не задумывался, но возник следующий вопрос: у меня есть hex прошивка формата intel 16.
Структура Hex:
RECORD MARK ':'
RECLEN 1 б
LOAD OFFSET 1 б
RECTYP 2 б
INFO или DATA n б
CHKSUM 1 б
/r/n
Когда прошивается контроллер, в ячейки Flash записываются только данные из DAT? или еще какие поля?
- Реклама
- КРАМ
- Друг Кота
- Сообщения: 25291
- Зарегистрирован: Чт янв 10, 2008 22:01:02
- Откуда: Московская область, Фрязино
Re: Файл прошивки hex.
Естественно только данные.
Хекс формат содержит адресные поля и поля записываемых данных (не считая контрольных сумм и указаний на тип данных в строке). Да еще и в текстовом формате...
В МК пишется только исполняемый бинарный код, включая таблицы.
Хекс формат содержит адресные поля и поля записываемых данных (не считая контрольных сумм и указаний на тип данных в строке). Да еще и в текстовом формате...
В МК пишется только исполняемый бинарный код, включая таблицы.
Re: Файл прошивки hex.
Получается что бы из Hex записать в МК, небходимо взять только данные и перевести их в из текста в массив байтов?
Re: Файл прошивки hex.
Странно...
В большинстве современных или
INHX8 (INHX8M)
INHX32
16 разрядка или из эксклюзива или там не интел...
Как конвертируется интел хекс8 - вот в этом устройстве бутлоадер на такой основе построен
https://radiokot.ru/forum/viewtopic.php ... 1#p3435971
Там поток данных из ПК (RS232) после декодирования "на лету" напрямую загружается в ОЗУ
В принципе можно соответственно модернизировать.
и программатор на основе того способа для АТ89С2051
https://radiokot.ru/forum/viewtopic.php ... 1#p3472041
читает файл дампа с диска ПК и загружает в МК(согласно требуемого алгоритма)

В большинстве современных или
INHX8 (INHX8M)
INHX32
16 разрядка или из эксклюзива или там не интел...
Как конвертируется интел хекс8 - вот в этом устройстве бутлоадер на такой основе построен
https://radiokot.ru/forum/viewtopic.php ... 1#p3435971
Там поток данных из ПК (RS232) после декодирования "на лету" напрямую загружается в ОЗУ
В принципе можно соответственно модернизировать.
и программатор на основе того способа для АТ89С2051
https://radiokot.ru/forum/viewtopic.php ... 1#p3472041
читает файл дампа с диска ПК и загружает в МК(согласно требуемого алгоритма)
- КРАМ
- Друг Кота
- Сообщения: 25291
- Зарегистрирован: Чт янв 10, 2008 22:01:02
- Откуда: Московская область, Фрязино
Re: Файл прошивки hex.
[uquote="DarkWolf",url="/forum/viewtopic.php?p=3555165#p3555165"]небходимо взять только данные и перевести их в из текста в массив байтов?[/uquote]
В общем да. Только нужно поддерживать контроль целостности через контрольные байты строк и указатели адресов.
Прошивка может (и имеет) разрывы в адресации. Как минимум, у конфига. Поэтому без вычисления адресов - никуда.
В общем да. Только нужно поддерживать контроль целостности через контрольные байты строк и указатели адресов.
Прошивка может (и имеет) разрывы в адресации. Как минимум, у конфига. Поэтому без вычисления адресов - никуда.
- Реклама
Re: Файл прошивки hex.
Прошу прощения, да, прошивка INHX32.
Так же вы правы, делается для загрузчик, только прошивка будет загружаться из mmc карты.
Прикрепил файл с исходным хексом и файл дампа, разграничителем строк в дампе символ перехода на новую строку '\n'
прошивку писать я могу блоками по 64 байта, мне нужно полностью забивать эти 64 байта, или на каждый блок в 64 байта будет приходиться свое количество байт из дампа до '\n'?
Так же вы правы, делается для загрузчик, только прошивка будет загружаться из mmc карты.
А можно подробнее на вычислении адресов?Прошивка может (и имеет) разрывы в адресации. Как минимум, у конфига. Поэтому без вычисления адресов - никуда.
Прикрепил файл с исходным хексом и файл дампа, разграничителем строк в дампе символ перехода на новую строку '\n'
прошивку писать я могу блоками по 64 байта, мне нужно полностью забивать эти 64 байта, или на каждый блок в 64 байта будет приходиться свое количество байт из дампа до '\n'?
- Вложения
-
- Безымянный.png
- Дамп
- (144.88 КБ) 609 скачиваний
Последний раз редактировалось DarkWolf Чт янв 24, 2019 10:10:39, всего редактировалось 1 раз.
Re: Файл прошивки hex.
Я ж дал ссыль на готовый проект с открытым исходником.
Для хекс32 требуется только добавить необходимую часть по адресации.
Читать описание надо - там помнится дополнительно используется адрес сегмента...
Не вникал за ненадобностью "в глубину"...

Для хекс32 требуется только добавить необходимую часть по адресации.
Читать описание надо - там помнится дополнительно используется адрес сегмента...
Не вникал за ненадобностью "в глубину"...
Re: Файл прошивки hex.
[uquote="BOB51",url="/forum/viewtopic.php?p=3555626#p3555626"]Я ж дал ссыль на готовый проект с открытым исходником.
Для хекс32 требуется только добавить необходимую часть по адресации.
Читать описание надо - там помнится дополнительно используется адрес сегмента...
Не вникал за ненадобностью "в глубину"...
[/uquote]
К сожалению там все на асемблере(( который для меня, как язык богов
Для хекс32 требуется только добавить необходимую часть по адресации.
Читать описание надо - там помнится дополнительно используется адрес сегмента...
Не вникал за ненадобностью "в глубину"...
К сожалению там все на асемблере(( который для меня, как язык богов
Re: Файл прошивки hex.
УВЫ... Для меня Си изжогу с тошнотиками вызывает...
Разве что поискать в архивах доки на описание того формата как первоисточник...
Помимо прочего там необходимо учесть, что каждый двоичный байт представляется как два символа ASCII.
Т.е. сначала делается свертка символов ASCII в байты , а затем их стоответствующая стандартному описанию обработка (включая и КС).

Да... еще в конце каждой строки исходного символьного файла помнится есть два служебных символа возврата каретки и перевода строки (или наоборот следуют - подзабыл) по которым также можно дополнительно проверять правильность принятых данных.

Разве что поискать в архивах доки на описание того формата как первоисточник...
Т.е. сначала делается свертка символов ASCII в байты , а затем их стоответствующая стандартному описанию обработка (включая и КС).
Да... еще в конце каждой строки исходного символьного файла помнится есть два служебных символа возврата каретки и перевода строки (или наоборот следуют - подзабыл) по которым также можно дополнительно проверять правильность принятых данных.
Re: Файл прошивки hex.
Спасибо!
[uquote="BOB51",url="/forum/viewtopic.php?p=3555647#p3555647"]Да... еще в конце каждой строки исходного символьного файла помнится есть два служебных символа возврата каретки и перевода строки (или наоборот следуют - подзабыл) по которым также можно дополнительно проверять правильность принятых данных.
[/uquote]
Да, это я знаю) в конце \r\n символы. Я на компе все обрезаю и делаю дамп только данные + символ \n. Этот файл будет храниться на SD карте. и из него будет прошиваться контрлеллер
[uquote="BOB51",url="/forum/viewtopic.php?p=3555647#p3555647"]Да... еще в конце каждой строки исходного символьного файла помнится есть два служебных символа возврата каретки и перевода строки (или наоборот следуют - подзабыл) по которым также можно дополнительно проверять правильность принятых данных.
Да, это я знаю) в конце \r\n символы. Я на компе все обрезаю и делаю дамп только данные + символ \n. Этот файл будет храниться на SD карте. и из него будет прошиваться контрлеллер
Re: Файл прошивки hex.
ЗАЧЕМ???
Проще же напрямую преобразование делать да и про защиту от ошибок забывать нельзя - если не КС в символьной строке, то придется громадный массив бинарной копии CRC соответствующей разрядности защищать...
В моем варианте СЧИТЫВАЕТСЯ именно символьный файл, а уже потом проводится соответствующее размещение в промежуточном ОЗУ (а не во флешке) - возможность перезаписи без ограничения количества циклов. При том, что ОЗУ при каждом запуске системы проходит предварительный контрольный тест.
Да и время прямой записи в ОЗУ и записи в ЕЕПРОМ несоизмеримо...
Разве что "переносной програматор"... Дак и то...Получаем экономию в количестве байт весьма относительную.
Ни спецфузы/байты конфигурации ни "дырки" в стандартном поле адресов особой экономии не дадут.
ДАМП будет обязательно размером в флеш МК плюс отдельно байты конфигурации.
Хорошо ежли структура памяти соответствует - иначе на каждый код по два байта, да еще и размещение - какой идет первым, какой вторым - но то больше задача утилит прошивалки...
Ну и CRC "прицепом" - ведь при включении после всяческих перемещений требуется контроль целостности данных.
А CD/microCD вобщем-то фонарственно какой объем данных записан - или bin образ (кстати его спецконверторы из hex делают) или тот "полновесный" hex...
Это разве что на 24ю ЕЕПРОМку запись образа делать - тогда смысл какой-то имеется...

Проще же напрямую преобразование делать да и про защиту от ошибок забывать нельзя - если не КС в символьной строке, то придется громадный массив бинарной копии CRC соответствующей разрядности защищать...
В моем варианте СЧИТЫВАЕТСЯ именно символьный файл, а уже потом проводится соответствующее размещение в промежуточном ОЗУ (а не во флешке) - возможность перезаписи без ограничения количества циклов. При том, что ОЗУ при каждом запуске системы проходит предварительный контрольный тест.
Да и время прямой записи в ОЗУ и записи в ЕЕПРОМ несоизмеримо...
Разве что "переносной програматор"... Дак и то...Получаем экономию в количестве байт весьма относительную.
Ни спецфузы/байты конфигурации ни "дырки" в стандартном поле адресов особой экономии не дадут.
ДАМП будет обязательно размером в флеш МК плюс отдельно байты конфигурации.
Хорошо ежли структура памяти соответствует - иначе на каждый код по два байта, да еще и размещение - какой идет первым, какой вторым - но то больше задача утилит прошивалки...
Ну и CRC "прицепом" - ведь при включении после всяческих перемещений требуется контроль целостности данных.
А CD/microCD вобщем-то фонарственно какой объем данных записан - или bin образ (кстати его спецконверторы из hex делают) или тот "полновесный" hex...
Это разве что на 24ю ЕЕПРОМку запись образа делать - тогда смысл какой-то имеется...
Re: Файл прошивки hex.
Для меня эта тема новая.. поэтому и делаю так как приходит в голову. На SD карте будет храниться дамп не всей памяти МК, а только содержащей данные.
Бутлоадер будет прошивать МК только когда появиться новая версия прошивки.
У меня в МК нету ЕЕПРОМ только память программ PIC18F47J53
В любом случае спасибо за советы.
Бутлоадер будет прошивать МК только когда появиться новая версия прошивки.
У меня в МК нету ЕЕПРОМ только память программ PIC18F47J53
В любом случае спасибо за советы.
- КРАМ
- Друг Кота
- Сообщения: 25291
- Зарегистрирован: Чт янв 10, 2008 22:01:02
- Откуда: Московская область, Фрязино
Re: Файл прошивки hex.
перезапись флеша возможна только страницами стирания. Произвольная перезапись невозможна.


