トップQs
タイムライン
チャット
視点

Intel HEX

ウィキペディアから

Remove ads

Intel HEXはバイナリ情報をASCIIテキスト形式で記載したファイル形式である。マイクロコントローラEPROMなどのプログラム可能なデバイスのプログラム書き込みのために広く用いられている。典型的な利用用途としてはコンパイラアセンブラプログラムC言語アセンブリ言語などのソースコード機械語に変換し、HEXファイルとして出力する。HEXファイルはROMにマシン語のコードを「焼く」ために書き込み機によって読み込まれたり、対象のシステムで読み込んだり実行したりするために転送されたりする[1]

5つのレコードを含むIntel HEXファイルの例。各行はそれぞれ1レコードから成る。

形式

要約
視点

Intel HEXは改行コードによって区切られた複数行のASCIIテキストからなる。各行は複数の2進数値をエンコードする16進数の文字を含む。2進数の値は行の位置や形式、長さによってデータ、メモリアドレスなどに相当する。各行はレコードと呼ばれる。

レコード構造

レコード(テキストの行)は左から順に並んだ6つのフィールド(部分)を有する:

  1. スタートコード、1文字、ASCIIのコロン':'。
  2. バイトカウント、16進数2桁、データフィールドに含まれるバイト(2桁の16進数)の数を示す。最大値は255(0xFF)。16(0x10)や32(0x20)が広く用いられている。
  3. アドレス、16進数4桁、データの16ビットの開始メモリアドレスオフセットを表す。データの物理アドレスはこのオフセットを前もって決められたベースアドレスに加算することで計算される。これにより、16ビットアドレスの64キロバイト制限を超えてメモリアドレスを指定することができる。ベースアドレスはデフォルトが0であるが、様々なタイプのレコードによって変更することができる。ベースアドレスとアドレスオフセットは常にビッグエンディアンで表記される。
  4. レコードタイプ (以下のレコードタイプを参照)、16進数2桁、00から05でありデータフィールドの意味を表す。.
  5. データ、2n桁の16進数で表記されたnバイトのデータの並び。一部のレコードではこのフィールドは省略される(nは0)。データの意味と表現は用途による。
  6. チェックサム、16進数2桁、レコードにエラーがないことを検証するために計算された値。

色凡例

視覚的な補助として、Intel HEXレコードのフィールドはこの記事において以下のように色分けされる。

  スタートコード   バイトカウント   アドレス   レコードタイプ   データ   チェックサム

チェックサム計算

チェックサムの値はレコード内のチェックサムの前のデコードされたバイト値全ての合計の最下位ビット(LSB)の2の補数である。

例えば、:0300300002337A1Eのようなレコードの場合、デコードされたバイト値の合計は03 + 00 + 30 + 00 + 02 + 33 + 7A = E2である。E2の2の補数は1Eであり、これがレコードの末尾に表れているチェックサムである。

レコードの妥当性はそのレコードのチェックサムを計算し、計算されたチェックサムがレコードに表れているチェックサムと一致するかを確認することで検証される。

行末記号

Intel HEXレコードは1行に1つのレコードが表記されるように1つまたは複数の改行コードによって区切られる。このことはレコードを視覚的に区切ることによって可読性を向上し、レコード間のパディングを提供することで機械による構文解析の効率を高めることを可能にしている。

HEXレコードを作成するプログラムは典型的にはそれらの動作するオペレーティングシステムの慣例に従うような改行コードを用いる。例えばLinux上のプログラムはLF(ラインフィード,16進数で0A)を単独で行末に用い、Windows上のプログラムはCR(キャリッジリターン,16進数で0D)とそれに続くLFを用いる。

レコードタイプ

Intel HEXは以下の6つの標準的なレコードタイプを持つ。

さらに見る 16進コード, レコードタイプ ...

名称のあるフォーマット

特定のレコードタイプのサブセットを用いるHEXファイルのフォーマットを示すために特別な名称が用いられることがある。以下がその例である。

  • I8HEXはレコードタイプ0001のみを用いる。(16ビットアドレッシング)
  • I16HEXはレコードタイプ00から03のみを用いる。(20ビットアドレッシング)
  • I32HEXはレコードタイプ00010405のみを用いる。(32ビットアドレッシング)
Remove ads

ファイル例

以下の例は4つのデータレコードとそれに続くEnd Of Fileレコードを含むファイルを示す。

:10010000214601360121470136007EFE09D2190140
:100110002146017E17C20001FF5F16002148011928
:10012000194E79234623965778239EDA3F01B2CAA7
:100130003F0156702B5E712B722B732146013421C7
:00000001FF

関連項目

記事
  • S-record (SREC) - モトローラによる16進数ファイルフォーマット
  • TekHex - テクトロニクスによる16進数ファイルフォーマット
その他
  • Template:Intel HEX - Intel HEXのレコードをWikipediaの記事上で示す際に有用である

参考文献

外部リンク

Loading related searches...

Wikiwand - on

Seamless Wikipedia browsing. On steroids.

Remove ads