Hex файл что это

Обновлено: 05.07.2024

Файл обычно имеет расширение HEX. Встречаются две модификации: intel-standart и intel-extended. Intel-standart поддерживает только 16 бит адрес (до 64 кБайт). Intel-extended имеет расширенный список типов записей и 32-бит адрес.

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

Содержание

Формат записи

Объяснение первое

Файл состоит из текстовых ASCII строк. Каждая строка представляет собой одну запись. Каждая запись начинается с двоеточия (:), после которого идет набор шестнадцатеричных цифр кратных байту:

Объяснение второе

Запись адреса сегмента

  • 02 Количество байт данных
  • 0000 В этом типе записи всегда равно 0000
  • 02 Тип записи 02 (запись адреса сегмента).
  • 1000 Номер параграфа (реальный адрес будет равен 0x10000).
  • EC Контрольная сумма

Запись расширенного адреса

Когда используется директива H167, файл формата Intel HEX возможно будет содержать записи расширенного линейного адреса. Этот тип записи определяет значения двух старших байт абсолютного адреса (биты 16-31). Эти два старших байта адреса будут применяться как смещение адреса для всех записей данных, следующих за этой записью. Пример записи:
: 0200000400FFFB
где:

  • 02 Количество байт данных
  • 0000 Всегда равно 0
  • 04 Тип записи 04 (запись расширенного линейного адреса)
  • 00FF Старшее слово смещения адреса (0x00FF0000)
  • FB Контрольная сумма

Запись конца файла

Файлы формата Intel HEX должны иметь запись Конца Файла (EOF). Пример записи:
:00000001FF где:

  • 00 Количество байт записи
  • 0000 Поле игнорируется. Не имеет значения, что там записано, но обычно всегда равно 0
  • 01 Тип записи 01 (Конец Файла)
  • FF Контрольная сумма, вычисленная как 01h + NOT(00h + 00h + 00h + 01h).

Примеры

Пример 1

Пример 2

Пример одной записи данных:
:10246200464C5549442050524F46494C4500464C33 где

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

Почесав репу над этими двумя недоразумениями, джедаи из Intel придумали формат hex или Intel-hex, ставший впоследствии стандартом де-факто для записи всяких разных прошивок. Мне больше нравится говорить Intel-hex, поскольку в этом случае не возникает путаницы и сразу понятно, что речь идёт об информации в файлах *.hex, а не просто о представлении данных в шестнадцатиричном виде. Ну ладно, вернёмся к проблемам Intel и к их решению.

Не на много сложнее оказалось и решение проблемы с пустыми местами. В *.hex файлы решили писать не всё подряд, а только полезные данные (т.е. пустые места бинарника решили не писать). Но в этом случае нужно было кроме самих данных ещё и как-то указывать адреса, по которым эти данные расположены. Окей, стали писать ещё и адреса.

Записи бывают следующих типов:

  • Data Record (данные); для всех форматов данных
  • End of File Record (конец файла); для всех форматов данных
  • Extended Segment Address Record (расширенный адрес сегмента); для 16- или 32-битного форматов данных
  • Start Segment Address Record (начальный адрес сегмента); для 16- или 32-битного форматов данных
  • Extended Linear Address Record (расширенный линейный адрес); только 32-битного формата данных
  • Start Linear Address Record (начальный линейный адрес); только для 32-битного формата данных

Все записи имеют следующий формат:

В данном случае:

А теперь о некоторых типах записей подробнее:

Эта запись используется в 32-битных прошивках для определения битов 16-31 линейного базового адреса (LBA), при этом биты 0-15 равны нулю. Сами биты 16-31 называются верхним базовым адресом (ULBA).

Абсолютное значение адреса байта данных в памяти получается добавлением LBA к смещению, вычисленному сложением поля LOAD OFFSET в последующих записях данных и индекса байта в поле DATA этих записей. Все суммирования делаются по модулю 4G, таким образом мы получаем циклический (от FFFFFFFFh происходит переход к 00000000h) 4-х гигабитный (4G=2 32 ) линейный адрес (Linear Address).

ByteAddr=(LBA+DRLO+DRI) mod 4G, где

Эта запись используется для определения битов 4-19 базового адреса сегмента (SBA), при этом биты 0-3 равны нулю. Сами биты 4-19 называются верхним адресом сегмента (USBA).

Абсолютное значение адреса байта данных в памяти получается добавлением SBA к смещению, вычисленному сложением поля LOAD OFFSET в последующих записях данных и индекса байта в поле DATA этих записей. Сложение LOAD OFFSET и индекса выполняется по модулю 64K, таким образом мы получаем циклический (от смещения FFFFh происходит переход к 0000h) 64-х килобитный (64K=2 16 ) адрес в заданном сегменте.

ByteAddr=SBA+[(DRLO+DRI) mod 64K], где

Эта запись используется для указания адреса, с которого начинается исполнение объектного файла. Значение поля EIP определяет адрес, который заносится в регистр EIP процессора. Отметим, что эта запись определяет только адрес точки старта кода в пределах 32-х битного линейного адресного пространства защищённого режима процессора 80386. В реальном режиме для определения точки старта должна использоваться запись Start Segment Address Record, поскольку она описывает содержимое пары регистров CS:IP, необходимое для реального режима.

Эта запись используется для указания адреса, с которого начинается исполнение объектного файла. Значение поля CS:IP определяет 20-ти битный адрес, заносимый в регистры CS:IP процессора. Отметим, что эта запись определяет только адрес входа в 20-ти битном сегментированном адресном пространстве процессоров 8086/80186.

К ак известно любая информация будь то текст, изображение или видео, по сути, является ничем иным как набором двоичного кода — последовательности нулей и единиц. Именно в таком виде на жёстком диске хранятся данные. Понятие двоичный код едва ли не абстрактное, это не запись в привычном понимании этого слова, двоичный или машинный код это скорее состояние микроскопических ячеек на магнитной поверхности жесткого диска. Положительный заряд такой ячейки имеет знак плюс или 1, отрицательный — минус или 0.

Логически объединенные последовательности нулей и единиц как раз и составляют то, что мы называем файлами. Но ведь мы знаем и то, что типов файлов очень много. Есть текстовые файлы, мультимедийные, архивные, системные, исполняемые и так далее. Каким же образом операционная система определяет как читать или обрабатывать тот или иной файл? Прикладные программы распознают тип файла по его расширению — набору символов следующих после имени файла и отделенных от него точкой.

Но что будет, если расширение удалить? Всё правильно, операционная система не сможет открыть такой файл, так как не будет знать какую программу для этого использовать. Однако ни логическая структура, ни содержимое переименованного файла от этого не изменится. Вы и сами в этом можете убедиться удалив расширение какого-нибудь файла, а затем попробовав его открыть соответствующей программой. Уверены, с этим у вас проблем не возникнет.

Следовательно, вовсе не расширение определяет тип файла. Тогда что же? Тип файла определяет его формат или иначе спецификация структуры данных. Расширение и формат очень часто путают, хотя на деле это совершенно разные понятия. Тут возникает вполне закономерный вопрос, а как определить формат файла, если его расширение по какой-то причине оказалось утрачено? Оказывается очень просто.

Грубо говоря, все файлы состоят из двух частей. Первая часть это заголовок, содержащий различную метаинформацию включая те данные, которые позволяют прикладным программам этот самый файл идентифицировать. Вторая часть это «тело» файла. Отвечающая за определение типа файла часть заголовка файла именуется дескриптором или описанием. Наиболее распространёнными типами дескрипторов являются HEX и ASCII. Первый тип заголовков можно просмотреть только с помощью специальных утилит — шестнадцатеричных редакторов.

Для просмотра дескрипторов второго типа можно обойтись обычным текстовым редактором, тем же Блокнотом или Notepad++. Однако следует учитывать, что далеко не все последовательности байтов можно перевести в ASCII-код, поэтому для определения формата всё-таки лучше использовать HEX-редакторы. Открытый в HEX-редакторе файл отображается в виде матрицы из последовательности байтов. Каждая ячейка соответствует одному байту. Данные дескриптора содержатся как раз в первых трёх ячейках (реже двух или четырех), расположенных по горизонтали. Представляют они из себя шесть символов в шестнадцатеричном счислении, например 49 44 33 или ff d8 e0.

Открытый в HEX-редакторе файл

Open-file.ru поиск по HEX

С HEX-редакторами всё более или менее понятно, но как мы сказали для определения ASCII-заголовков также можно использовать редакторы текстовые. Принцип здесь тот же самый, открываем файл Блокнотом или Notepad++, копируем первые символы и вставляем их в поисковое поле того же open-file или другого сайта с поддержкой поиска по заголовкам.

Казалось бы всё очень просто, но есть в деле идентификации форматов и свои сложности. Иногда ASCII-заголовки совпадают с расширением файла (RAR и PDF), но может быть и такое, что заголовок оказывается принадлежащим сразу нескольким форматам. Это можно видеть на примере офисного формата DOCX (PK и 50 4b 03 04). В таких случаях точно определить формат проблематично.

ASCII

Но круг поиска можно сузить. Для этого рекомендуется просматривать первую, вторую и третью строку заголовка в текстовом редакторе, так как содержащиеся в них элементы также могут косвенно указывать на принадлежность к тому или иному типу файлов.

Файл является размеченным текстовым документом

Так, строка [Content_Types].xml в DOCX явно указывает на то, что исследуемый файл является размеченным текстовым документом.

Файлы с расширением HEX являются исходными файлами, используемыми для сохранения различных данных, хранящихся в шестнадцатеричной системе. Они могут включать настройки, конфигурации или другую информацию.

Файлы HEX могут встречаться в текстовом или двоичном виде. Текстовые файлы HEX можно легко открыть с помощью стандартной программы редактирования текста, но для отображения содержимого двоичных файлов требуется специальный шестнадцатеричный редактор. HEX-файл является результатом преобразования исходного кода в машинный код.

Где используются HEX файлы?

Данные, содержащиеся в файлах HEX, используются компиляторами и ассемблерами в процессе написания кода, управляющего микроэлементами, такими как встроенные системы, память EEPROM или флэш-память. Микроэлементы устанавливаются во многих обычно используемых устройствах, как менее, так и более продвинутых, например: пульты дистанционного управления или системы, управляющие двигателем автомобиля.

Структура данных в файлах HEX

Шестнадцатеричные данные в HEX-файле хранятся в строках текста, и каждый из них состоит из шести элементов:

  1. Стартовый тег - двоеточие;
  2. Количество приманок - две цифры в шестнадцатеричной системе, которые определяют длину записи данных;
  3. Адрес - четыре цифры в шестнадцатеричной системе, которые позволяют адресовать до 64 КБ памяти на один сегмент;
  4. Тип записи - две цифры в шестнадцатеричной системе, от 00 до 05;
  5. Данные - конфигурация данных, которая хранит приманку в шестнадцатеричной текстовой форме;
  6. Контрольная сумма - две цифры в шестнадцатеричной системе, которые составляют контрольную сумму записи без двоеточия.

Программы, которые поддерживают HEX расширение файла

В следующем списке перечислены программы, совместимые с файлами HEX, которые разделены на категории 3 в зависимости от операционной системы, в которой они доступны. Файлы с суффиксом HEX могут быть скопированы на любое мобильное устройство или системную платформу, но может быть невозможно открыть их должным образом в целевой системе.

Программы, обслуживающие файл HEX

Updated: 11/05/2021

Как открыть файл HEX?

Отсутствие возможности открывать файлы с расширением HEX может иметь различное происхождение. Что важно, все распространенные проблемы, связанные с файлами с расширением HEX, могут решать сами пользователи. Процесс быстрый и не требует участия ИТ-специалиста. Мы подготовили список, который поможет вам решить ваши проблемы с файлами HEX.

Шаг 1. Скачайте и установите FlexHex

Install software to open HEX file

Проблемы с открытием и работой с файлами HEX, скорее всего, связаны с отсутствием надлежащего программного обеспечения, совместимого с файлами HEX на вашем компьютере. Этот легкий. Выберите FlexHex или одну из рекомендованных программ (например, Hex Editor, Windows Notepad, NotePad++ text editor) и загрузите ее из соответствующего источника и установите в своей системе. Полный список программ, сгруппированных по операционным системам, можно найти выше. Если вы хотите загрузить установщик FlexHex наиболее безопасным способом, мы рекомендуем вам посетить сайт и загрузить его из официальных репозиториев.

Шаг 2. Убедитесь, что у вас установлена последняя версия FlexHex

Update software that support file extension HEX

Вы по-прежнему не можете получить доступ к файлам HEX, хотя FlexHex установлен в вашей системе? Убедитесь, что программное обеспечение обновлено. Разработчики программного обеспечения могут реализовать поддержку более современных форматов файлов в обновленных версиях своих продуктов. Если у вас установлена более старая версия FlexHex, она может не поддерживать формат HEX. Последняя версия FlexHex должна поддерживать все форматы файлов, которые совместимы со старыми версиями программного обеспечения.

Шаг 3. Настройте приложение по умолчанию для открытия HEX файлов на FlexHex

После установки FlexHex (самой последней версии) убедитесь, что он установлен в качестве приложения по умолчанию для открытия HEX файлов. Следующий шаг не должен создавать проблем. Процедура проста и в значительной степени не зависит от системы

Associate software with HEX file on Windows

Изменить приложение по умолчанию в Windows

  • Щелкните правой кнопкой мыши на файле HEX и выберите « Открыть с помощью опцией».
  • Далее выберите опцию Выбрать другое приложение а затем с помощью Еще приложения откройте список доступных приложений.
  • Наконец, выберите Найти другое приложение на этом. , укажите папку, в которой установлен FlexHex, установите флажок Всегда использовать это приложение для открытия HEX файлы свой выбор, нажав кнопку ОК

Изменить приложение по умолчанию в Mac OS

Шаг 4. Убедитесь, что HEX не неисправен

Вы внимательно следили за шагами, перечисленными в пунктах 1-3, но проблема все еще присутствует? Вы должны проверить, является ли файл правильным HEX файлом. Проблемы с открытием файла могут возникнуть по разным причинам.

Check HEX file for viruses

1. Проверьте HEX файл на наличие вирусов или вредоносных программ.

Если HEX действительно заражен, возможно, вредоносное ПО блокирует его открытие. Немедленно просканируйте файл с помощью антивирусного инструмента или просмотрите всю систему, чтобы убедиться, что вся система безопасна. Если сканер обнаружил, что файл HEX небезопасен, действуйте в соответствии с инструкциями антивирусной программы для нейтрализации угрозы.

2. Убедитесь, что структура файла HEX не повреждена
3. Проверьте, есть ли у пользователя, вошедшего в систему, права администратора.

Некоторые файлы требуют повышенных прав доступа для их открытия. Переключитесь на учетную запись с необходимыми привилегиями и попробуйте снова открыть файл Hexadecimal Source Format.

4. Убедитесь, что в системе достаточно ресурсов для запуска FlexHex

Если в системе недостаточно ресурсов для открытия файлов HEX, попробуйте закрыть все запущенные в данный момент приложения и повторите попытку.

5. Проверьте, есть ли у вас последние обновления операционной системы и драйверов

Последние версии программ и драйверов могут помочь вам решить проблемы с файлами Hexadecimal Source Format и обеспечить безопасность вашего устройства и операционной системы. Возможно, файлы HEX работают правильно с обновленным программным обеспечением, которое устраняет некоторые системные ошибки.

Вы хотите помочь?

Если у Вас есть дополнительная информация о расширение файла HEX мы будем признательны, если Вы поделитесь ею с пользователями нашего сайта. Воспользуйтесь формуляром, находящимся здесь и отправьте нам свою информацию о файле HEX.

Читайте также: