BIN Файл - набор байтов.
HEX Файл - текстовый файл определённой структуры
Этот формат был разработан для хранения программ на перфоленте ( еще во
времена популярности 8080 ).
Файл состоит из текстовых строк следущеюго формата. Все числа в HEX
Hачинается с ':'. Далее 2 символа - число байт данных.
4 символа - начальный адрес данных( адрес первого байта строки ).
2 символа - если последняя строка здесь '01' иначе '00'
Далее байты данных по 2 символа на байт. В конце 2 символа - контрольная
сумма - дополнение до 2 суммы байтов данных
Вот пример данных в hex-формате:
:100AF00022AB12E1C9F5D56FE60F677DE6F01F1F47
А вот разбивка по полям:
:LLOOOOSSD0D1D2D3D4D5D6D7D8D9DaDbDcDdDeDfCS
Здесь (все числа - шестнадцатеричные):
LL - число байт, упакованных в данной строке
OOOO - смещение байта D0 в двоичном образе
SS - тип записи (00 - данные, 01 - конец файла)
D0-Df - шестнадцатеричное представление очередных LL байт данных.
СS - контрольная сумма - сумма всех байт в строке должна быть равна 0.
Так отмечается конец файла:
:00000001FF
Интересно, что этим кодом можно передавать двоичные данные даже по телеграфу.
В HEX-файлах для PIC-ов данные распределены следующим образом:
0000h - 3FFFh: Program memory - память програм
4000h - 400Fh: Config memory - область памяти в которой содержится
4000h - 400Dh: идентификатор пользователя (любая информация)
400Eh: идентификатор производителя (для каждого чипа свой) - поле "ID"
4000F: конфигурационное слово (тип генератора, защита от записи и др.) - поле "Config"
4200h - 43FFh: Data memory - память данных