Intel Hex
Intel Hex — формат текстового файла, содержащего символы в кодировке шестнадцатеричной системе счисления.
Формат записи
Каждую строку в файле называют записью. Она состоит из следующих элементов:
- Начало записи (:).
- Счётчик байт данных, содержащихся в этой записи. Занимает один байт (две шестнадцатеричных цифры), что соответствует 0…255 в десятичной системе.
- Начальный адрес блока записываемых данных — 2 байта. Этот адрес определяет абсолютное местоположение блока в EPROM.
- Один байт, обозначающий тип записи. Если значение этого байта равно 00h (0), то следующие байты являются фактическими данными, которые будут сохранены в EPROM. Значение 01h (1) указывает на конец файла.
- Байты данных, которые требуется сохранить в EPROM (их число указывается в поле 2).
- Последний байт в записи является контрольной суммой. Если сумма всех байтов в строке (без учёта переноса) равняется 00, строка считана правильно.
- Строка заканчивается стандартной парой CR/LF (0Dh 0Ah).
Файл завершается записью «:00000001FF».
Пример файла
:10010000214601360121470136007EFE09D2190140 :100110002146017EB7C20001FF5F16002148011988 :10012000194E79234623965778239EDA3F01B2CAA7 :100130003F0156702B5E712B722B732146013421C7 :00000001FF
Начало записи Счётчик байт Адрес Тип записи Данные Контрольная сумма
Файл формата Intel HEX может состоять из любого количества записей. Каждая запись представляет собой LLAAAATTDD. CC
Каждая группа букв (LL, AAAA, TT и т. д.) представляет собой отдельное поле. Каждая буква — отдельную 16-ричную цифру (4 бита). Каждое поле состоит, как минимум, из двух 16-ричных цифр (байт). Ниже представлена расшифровка полей записи:
Каждая запись в файле Intel HEX должна начинаться с двоеточия.
LL Поле длины – показывает количество байт данных (DD) в записи. AAAA Поле адреса – представляет начальный адрес записи. TT Поле типа. Оно может принимать следующие значения: 00 запись содержит данные 01 запись представляет код конца файла 02 запись представляет адрес сегмента для i8086 04 запись расширения линейного адреса DD Поде данных. Запись может содержать несколько байт данных. Количество байт данных должно соответствовать полю LL. CC Поле контрольной суммы. Поле контрольной суммы вычисляется путем сложения значений всех байт (пар 16-ричных цифр) записи по модулю 256 с последующим переводом в дополнительный формат.
Запись данных
Пример одной записи данных:
где 10 Количество байт данных (16 байт) 2462 Адрес памяти, куда будет помещена запись. 00 Тип записи — данные. 464C. 464C Данные 33 Контрольная сумма записи
Запись адреса сегмента
Файл формата Intel HEХможет содержать записи для процессоров i8086, которые определяют адрес сегмента (иначе говоря — номер параграфа, один параграф — это 16 байт). Если используется директива H167, то этот тип записи заменяет запись расширенного линейного адреса. Номер параграфа используется как смещение адреса для всех записей данных, следующих за этой записью. Смещение представляет собой сдвиг адреса на четыре бита влево. Например, смещение равное 0x1234 даст реальный адрес 0x12340. Пример записи:
где: 02 Количество байт данных 0000 В этом типе записи всегда равно 0000 02 Тип записи 02 (запись расширенного линейного адреса). 1000 Номер параграфа (реальный адрес будет равен 0x10000). EC Контрольная сумма
Запись расширенного адреса
Когда используется директива H167, файл формата Intel HEX возможно будет содержать записи расширенного линейного адреса. Этот тип записи определяет значения двух старших байт абсолютного адреса (биты 16-31). Эти два старших байта адреса будут применяться как смещение адреса для всех записей данных, следующих за этой записью. Пример записи:
где: 02 Количество байт данных 0000 Всегда равно 0 04 Тип записи 04 (запись расширенного линейного адреса) 00FF Старшее слово смещения адреса (0x00FF0000) FB Контрольная сумма Запись Конец Файла (EOF) Файлы формата Intel HEX должны иметь запись Конца Файла (EOF). Пример записи:
где: 00 Количество байт записи 0000 Поле игнорируется. Не имеет значения, что там записано, но обычно всегда равно 0 01 Тип записи 01 (Конец Файла) FF Контрольная сумма, вычисленная как 01h + NOT(00h + 00h + 00h + 01h). Пример файла формата Intel HEX
020000021000EC 10C20000E0A5E6F6FDFFE0AEE00FE6FCFDFFE6FD93 10C21000FFFFF6F50EFE4B66F2FA0CFEF2F40EFE90 10C22000F04EF05FF06CF07DCA0050C2F086F097DF 10C23000F04AF054BCF5204830592D02E018BB03F9 020000020000FC 04000000FA00000200 00000001FF
На основе описаний Keil Software, Inc. and and Keil Elektronik GmbH (С) Жевак Александр, 2007
Смотрите также
SREC — формат файла используемый ф.Motorola
Wikimedia Foundation . 2010 .
Что представляет собой спорный проект HEX?

В этом месяце был запущен новый криптопроект под названием HEX. Правда, отношение сообщества к нему весьма неоднозначное. Проект HEX представляет собой платформу смарт-контрактов на базе Ethereum, которые продаются в форме депозитного сертификата на блокчейне. В этой статье мы расскажем о проекте HEX и рассмотрим причины негативного отношения к нему.
В традиционной финансовой индустрии депозитные сертификаты (ДС) предлагают розничные банки. Обычно они предполагают более высокую процентную ставку, нежели у обычного банковского депозита. Чтобы получить более высокий процент, вкладчики не должны снимать средства в течение одного, трёх или шести месяцев, максимум — до пяти лет. Гарантом выступает государство, так что ДС — это простой способ без риска заработать дополнительные проценты на замороженных средствах. За пределами США ДС обычно называют «срочными» или «временными» депозитами.
Разработчики HEX пытаются создать децентрализованную версию традиционных ДС на основе блокчейна. Очевидно, HEX предназначен для выплаты процентов участникам, которые блокируют свои монеты через стейкинг. Те, кто блокирует их на более длительный период, получают более высокие вознаграждения, выплачиваемые в токенах HEX.
Процентные ставки варьируются от 3,69% до 369%, в зависимости от доли токенов HEX, отведённых под стейкинг. HEX включает в себя большие реферальные бонусы для пользователей, которые привлекают новых участников. Рефереры имеют право на дополнительные бонусы, поскольку они приводят в проект новых людей.
Прочитайте дисклеймер. Нет, действительно — ПРОЧИТАЙТЕ
У HEX есть страница с условиями отказа от ответственности.
Суть этого текста заключается в том, что у вас не должно быть абсолютно никаких претензий, даже если что-то пойдёт не так. Вы не должны требовать возмещение, потому что, по условиям, вы должны согласиться с тем, что ничего не получите. Когда вы отправляете ETH в контракт, вы не получаете их обратно, потому что это добровольное пожертвование. Их можно направить непосредственно в контракт без запуска функции joinXfLobby. Программное обеспечение — это в принципе вещь сложная, а ПО, работающее на базе блокчейна, ещё сложнее. Нам повезло, что всё это вообще работает.
Основатель проекта — Ричард Харт, известный человек в криптосегменте Твиттера и YouTube.
Когда Харт и его команда анонсировали проект, они столкнулись с серьёзной критикой. Изначально они использовали название «Bitcoin Hex». Харт заявил, что одна из главных целей проекта — перераспределить капитал экосистемы биткоина.
Неудивительно, что критика проекта и мотивации его создателя распространена широко, а при тщательном анализе криптоэкономики экосистемы HEX возникает больше вопросов, чем ответов.
1. The Adoption Amplifier
The Adoption Amplifier — это один из способов, с помощью которых создаются и запускаются в оборот токены HEX. Первый способ — сделать это через Free Claim. Владельцы BTC могли получить свои токены HEX по ставке 10 000 HEX за биткоин, при этом разработчики проекта уверяют, что это не эйрдроп.
Те, кто рассчитывает получить HEX таким образом, теряют конфиденциальность. Дело в том, что участники должны будут публично раскрыть данные о своих BTC-кошельках.
Основная критика направлена на сам механизм, который состоит в том, что участники могут отправить ETH на определённый адрес, а затем обменять их на токены HEX. Проект доказывает сообществу, что это не торговля. Пожертвованные ETH «трансформируются» в новые токены HEX, то есть The Adoption Amplifier «преобразует ETH в HEX».
Является ли это продажей в традиционном смысле или это ICO — вопрос к регулирующим органам. С момента запуска на адрес проекта поступило 35 452 ETH (около $ 5 000 000). The Adoption Amplifier будет работать в течение 353 дней.
Это вызвало тревогу в криптосообществе. Популярный комментатор Гай Суонн озвучил опасения в своём подкасте Cryptoconomy:
«Чтобы получить HEX, вы используете The Adoption Amplifier, который отправляет ETH в «пул». По факту они уходят непосредственно к Ричарду. Все в этом нелепом проекте напоминает азартную игру. Ричард становится богаче, а вы получаете бесполезный токен, который ему ничего не стоит».
2. Начальный адрес
Самой большой проблемой для критиков является использование функции «адреса отправителя» (Origin Address, далее по тексту Адрес), встроенной в экосистему HEX. Про него написал Кайл Бахр в документе на Hex.win (вкладка «Технические характеристики»). Документ называется «HEX контракт в Условиях Леймана».
Бахр пишет: «В договоре ETH-адрес указан как «адрес отправителя», куда токены HEX попадают несколькими способами»:
- На Адрес поступает половина всех HEX, уплачиваемых в качестве штрафов (другая половина выплачивается пулу);
- Адрес получает копию всех бонусных выплат, включая бонус за преждевременный отзыв токенов, реферальный бонус, прибавку «Мы все Сатоши», бонусы критической массы/распространения.
Похоже, что разработчики HEX создали систему, в которой на Адресе будет наибольшее количество HEX. После первого этапа запуска проекта этот адрес будет контролировать большой процент предложения токена в обороте. Из-за особенностей механизма работы смарт-контракта невозможно узнать, сколько токенов HEX будет создано. Тем не менее, некоторые критики считают, что на этом Адресе будет более 45% эмиссии HEX.
3. Штрафы — это боль!
Несмотря на обещания огромных выплат и бонусов за стейкинг HEX, существуют и большие штрафы для тех, кто не завершит сроки стейкинга.
Если пользователь решает применить опцию «Emergency Unstaking», то штраф будет равен половине токенов HEX, которые должны были быть начислены за полный период хранения. Однако из-за множества процентов и бонусов, встроенных в экосистему, штрафы могут быть настолько большими, что полностью уничтожат всю прибыль пользователя.
Половина всех HEX, изъятых в качестве штрафов, отправляется на Адрес. Это означает, что он разработан для того, чтобы постоянно увеличивать свои активы за счёт бонусов и штрафов.
На Medium анонимный критик описывает схему Харта следующим образом:
«На самом деле Ричард создал океан, где он является единственным китом, гораздо большим, чем любой другой кит в любом другом проекте. Одинокий, неубиваемый Моби Дик с HEX. Даже если Ричард избавится от всех своих HEX и самого проекта, через какое-то время Адрес постепенно пополнится другими HEX — и он станет китом-зомби, восставшим из мёртвых».
В заключении ещё раз процитируем дисклеймер HEX:
«Вы не должны иметь абсолютно никаких ожиданий в отношении чего-либо… Когда вы отправляете ETH, вы не получаете ETH обратно».
Звучит исчерпывающе, не правда ли?
Структура HEX-файла
После успешной сборки проекта будет сгенерирован 16-тиричный файл FirstProject.hex, содержащий в символьном виде машинный код программы:
:020000020000FC :100000001FC0FECFFDCFFCCFFBCFFACFF9CFF8CF8B :10001000F7CFF6CFF5CFF4CFF3CFF2CFF1CFF0CFCC :06002000EFCFEECFEDCFA3 :100040000FE50DBF04E00EBFC298BA9A04E018B3E2 :10005000102718BB01D0FBCFB3ECA0E51197F1F747 :02006000089501 :00000001FF
Рассмотрим формат данных hex-файл на примере второй строки текста (маркером начала строки всегда является символ “:”):
NN AAAA CC DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD SS : 10 0000 00 1FC0FECFFDCFFCCFFBCFFACFF9CFF8CF 8B
Поле NN определяет количество байтов данных в строке (в нашем случае 16 байтов). Поле AAAA – это начальный адрес, с которого данные будут записаны в память микроконтроллера. За адресом следует поле команды CC. Программатор, ориентируясь на поле CC, распознает функциональное назначения строки. Ассемблер и другие компиляторы языков высокого уровня для AVR могут установить следующие значения данного параметра:
00 – в строке находятся данные для записи в память,
01 – последняя строка в файле,
02 – строка содержит начальный адрес сегмента памяти,
04 – строка содержит адрес в пределах сегмента памяти. В данной строке CC=00 (т.е. строка предназначена для записи данных). За полем CC (кроме команды 01) идут непосредственно данные в количестве, определяемом параметром NN. Последнее поле SS – контрольная сумма. Сумма всех байтов в неповрежденной строке без учета переполнения всегда нулевая: 10 + 00 + 00 + 00 + 1F + … + CF + F8 + CF + 8B = 0. Каждый hex-файл должен завершаться строкой :00000001FF. Перейти к следующей части: Программирование математических операций — Беззнаковые целые числа — Сложение
Теги:
Котов Игорь Юрьевич
Опубликована: 2012 г.
0
0
Вознаградить Я собрал 0 0
Оценить статью
- Техническая грамотность
Intel HEX
Intel HEX — формат файла, предназначенного для представления произвольных двоичных данных в текстовом виде. По историческим причинам является стандартом де-факто при прошивке разнообразных микросхем с памятью (микроконтроллеров, ПЗУ, EEPROM и т. п.). Соответственно большинство инструментов подготовки образов прошивки (компиляторы, редакторы, просмотрщики и т. п.) умеют работать с этим форматом.
Файл обычно имеет расширение HEX. Встречаются две модификации: intel-standart и intel-extended. Intel-standart поддерживает только 16 бит адрес (до 64 кБайт). Intel-extended имеет расширенный список типов записей и 32-бит адрес.
Достоинством формата (в отличие от простого двоичного) является возможность указывать только определенные области адресов (с точностью до байта). Многие микроконтроллерные архитектуры имеют несколько областей программирования с обширными пустотами в адресации между ними.
Формат записи
Объяснение первое
Файл состоит из текстовых ASCII строк. Каждая строка представляет собой одну запись. Каждая запись начинается с двоеточия (:), после которого идет набор шестнадцатеричных цифр кратных байту:
- Начало записи (:).
- Количество байт данных, содержащихся в этой записи. Занимает один байт (две шестнадцатеричных цифры), что соответствует 0…255 в десятичной системе.
- Начальный адрес блока записываемых данных — 2 байта. Этот адрес определяет абсолютное местоположение данных этой записи в двоичном файле.
- Один байт, обозначающий тип записи. Определены следующие типы записей:
- 0 — запись содержит данные двоичного файла.
- 1 — запись обозначает конец файла, данных не содержит. Имеет характерный вид «:00000001FF».
- 2 — запись адреса сегмента (подробнее см.ниже).
- 4 — запись расширенного адреса (подробнее см.ниже).
Объяснение второе
Файл формата Intel HEX может состоять из любого количества записей. Каждая запись представляет собой ASCII-строку состоящую из нескольких пар 16-ричных цифр. Строка должна начинаться с символа двоеточия и оканчиваться парой символов CR и LF. Запись состоит из пяти полей следующего формата:
:LLAAAATTDD. CC
Каждая группа букв (LL, AAAA, TT и т. д.) представляет собой отдельное поле. Каждая буква — отдельную 16-ричную цифру (4 бита). Каждое поле состоит, как минимум, из двух 16-ричных цифр (байт). Ниже представлена расшифровка полей записи:- : Каждая запись в файле Intel HEX должна начинаться с двоеточия.
- LL Поле длины — показывает количество байт данных (DD) в записи.
- AAAA Поле адреса — представляет начальный адрес записи.
- TT Поле типа. Оно может принимать следующие значения:
- 00 запись содержит данные двоичного файла.
- 01 запись является концом файла.
- 02 запись адреса сегмента (подробнее см. ниже).
- 03 Start Segment Address Record.
- 04 запись расширенного адреса (подробнее см. ниже).
- 05 Start Linear Address Record.
Запись адреса сегмента
Файл формата Intel HEХ может содержать записи для процессоров i8086, которые определяют адрес сегмента (иначе говоря — номер параграфа, один параграф — это 16 байт). Если используется директива H167, то этот тип записи заменяет запись расширенного линейного адреса. Номер параграфа используется как смещение адреса для всех записей данных, следующих за этой записью. Смещение представляет собой сдвиг адреса на четыре бита влево. Например, смещение равное 0x1234 даст реальный адрес 0x12340. Пример записи:
:020000021000EC где:- 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
:10010000214601360121470136007EFE09D2190140 :100110002146017EB7C20001FF5F16002148011988 :10012000194E79234623965778239EDA3F01B2CAA7 :100130003F0156702B5E712B722B732146013421C7 :00000001FF
Начало записи Счётчик байт Адрес Тип записи Данные Контрольная сумма
Пример 2
Пример одной записи данных:
:10246200464C5549442050524F46494C4500464C33 где- 10 Количество байт данных (16 байт)
- 2462 Адрес памяти, куда будет помещена запись.
- 00 Тип записи — данные.
- 464C. 464C Данные
- 33 Контрольная сумма записи
Пример 3
: 020000021000EC : 10C20000E0A5E6F6FDFFE0AEE00FE6FCFDFFE6FD93 : 10C21000FFFFF6F50EFE4B66F2FA0CFEF2F40EFE90 : 10C22000F04EF05FF06CF07DCA0050C2F086F097DF : 10C23000F04AF054BCF5204830592D02E018BB03F9 : 020000020000FC : 04000000FA00000200 : 00000001FF
См. также
SREC — формат файла используемый ф.Motorola
Ссылки
- Intel HEX File Format Specification (англ.)
- Intel HEX-record Format (англ.)
Форматы исполняемых файлов Windows, DOS и OS/2 .COM • .EXE (MZ / NE / LE / LX / PE / W3) Unix a.out • COFF • ECOFF • ELF • Mach-O • SOM • XCOFF Прочие Intel HEX • PEF • SREC - Форматы файлов