Поклонники продукции Microchip Technology Inc тусуются тут.
Ответить

Файл прошивки hex.

Ср янв 23, 2019 10:05:26

Доброго времени суток!

Никогда не задумывался, но возник следующий вопрос: у меня есть hex прошивка формата intel 16.

Структура Hex:

RECORD MARK ':'
RECLEN 1 б
LOAD OFFSET 1 б
RECTYP 2 б
INFO или DATA n б
CHKSUM 1 б
/r/n

Когда прошивается контроллер, в ячейки Flash записываются только данные из DAT? или еще какие поля?

Re: Файл прошивки hex.

Ср янв 23, 2019 12:12:31

Естественно только данные.
Хекс формат содержит адресные поля и поля записываемых данных (не считая контрольных сумм и указаний на тип данных в строке). Да еще и в текстовом формате...
В МК пишется только исполняемый бинарный код, включая таблицы.

Re: Файл прошивки hex.

Ср янв 23, 2019 12:22:54

Получается что бы из Hex записать в МК, небходимо взять только данные и перевести их в из текста в массив байтов?

Re: Файл прошивки hex.

Ср янв 23, 2019 12:38:27

Странно...
В большинстве современных или
INHX8 (INHX8M)
INHX32
16 разрядка или из эксклюзива или там не интел...
:dont_know:
Как конвертируется интел хекс8 - вот в этом устройстве бутлоадер на такой основе построен
https://radiokot.ru/forum/viewtopic.php ... 1#p3435971
Там поток данных из ПК (RS232) после декодирования "на лету" напрямую загружается в ОЗУ
В принципе можно соответственно модернизировать.
и программатор на основе того способа для АТ89С2051
https://radiokot.ru/forum/viewtopic.php ... 1#p3472041
читает файл дампа с диска ПК и загружает в МК(согласно требуемого алгоритма)
8)

Re: Файл прошивки hex.

Ср янв 23, 2019 18:22:33

небходимо взять только данные и перевести их в из текста в массив байтов?

В общем да. Только нужно поддерживать контроль целостности через контрольные байты строк и указатели адресов.
Прошивка может (и имеет) разрывы в адресации. Как минимум, у конфига. Поэтому без вычисления адресов - никуда.

Re: Файл прошивки hex.

Чт янв 24, 2019 09:09:41

Прошу прощения, да, прошивка INHX32.

Так же вы правы, делается для загрузчик, только прошивка будет загружаться из mmc карты.

Прошивка может (и имеет) разрывы в адресации. Как минимум, у конфига. Поэтому без вычисления адресов - никуда.


А можно подробнее на вычислении адресов?
Прикрепил файл с исходным хексом и файл дампа, разграничителем строк в дампе символ перехода на новую строку '\n'

прошивку писать я могу блоками по 64 байта, мне нужно полностью забивать эти 64 байта, или на каждый блок в 64 байта будет приходиться свое количество байт из дампа до '\n'?
Вложения
Безымянный.png
Дамп
(144.88 KiB) Скачиваний: 588
Последний раз редактировалось DarkWolf Чт янв 24, 2019 10:10:39, всего редактировалось 1 раз.

Re: Файл прошивки hex.

Чт янв 24, 2019 09:27:20

Я ж дал ссыль на готовый проект с открытым исходником.
Для хекс32 требуется только добавить необходимую часть по адресации.
Читать описание надо - там помнится дополнительно используется адрес сегмента...
Не вникал за ненадобностью "в глубину"...
8)

Re: Файл прошивки hex.

Чт янв 24, 2019 09:49:33

Я ж дал ссыль на готовый проект с открытым исходником.
Для хекс32 требуется только добавить необходимую часть по адресации.
Читать описание надо - там помнится дополнительно используется адрес сегмента...
Не вникал за ненадобностью "в глубину"...
8)


К сожалению там все на асемблере(( который для меня, как язык богов :cry:

Re: Файл прошивки hex.

Чт янв 24, 2019 10:11:14

УВЫ... Для меня Си изжогу с тошнотиками вызывает...
:?
Разве что поискать в архивах доки на описание того формата как первоисточник...
:roll:
HexFormat.pdf
(19.84 KiB) Скачиваний: 202

Помимо прочего там необходимо учесть, что каждый двоичный байт представляется как два символа ASCII.
Т.е. сначала делается свертка символов ASCII в байты , а затем их стоответствующая стандартному описанию обработка (включая и КС).
8)
Да... еще в конце каждой строки исходного символьного файла помнится есть два служебных символа возврата каретки и перевода строки (или наоборот следуют - подзабыл) по которым также можно дополнительно проверять правильность принятых данных.
:beer:

Re: Файл прошивки hex.

Чт янв 24, 2019 10:40:00

Спасибо!

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


Да, это я знаю) в конце \r\n символы. Я на компе все обрезаю и делаю дамп только данные + символ \n. Этот файл будет храниться на SD карте. и из него будет прошиваться контрлеллер

Re: Файл прошивки hex.

Чт янв 24, 2019 11:07:28

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

Re: Файл прошивки hex.

Чт янв 24, 2019 11:59:15

Для меня эта тема новая.. поэтому и делаю так как приходит в голову. На SD карте будет храниться дамп не всей памяти МК, а только содержащей данные.
Бутлоадер будет прошивать МК только когда появиться новая версия прошивки.
У меня в МК нету ЕЕПРОМ только память программ PIC18F47J53

В любом случае спасибо за советы.

Re: Файл прошивки hex.

Чт янв 24, 2019 12:53:00

перезапись флеша возможна только страницами стирания. Произвольная перезапись невозможна.
Ответить