・インテルHEXフォーマットの例
:02000004CAFE32
:1001000055AA55AA55AA55AA55AA55AA55AA55AAF7
:10011000000102030405060708090A0B0C0D0E0F67
:100120000AA55AA55AA55AA55AA55AA55AA55AA55D7
:1001300000000000000000000000000000000000BF
:1001400055AA55AA55AA55AA55AA55AA55AA55AAB7
:10015000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAF
:00000001FF
・インテルHEXレコードの構造
①レコードマーク ":" (1文字)
②データ長(1バイト/2文字)
③オフセットアドレス(16ビット/4文字)
④レコードタイプ(2文字)
⑤データ(nバイト/2n文字)
⑥チェックサム (1バイト/2文字)
①インテルHEXフォーマットでは先頭一文字は必ず":"の文字
②データ長:データフィールドに格納されているデータ数(バイト単位)を2文字で示す。
モトローラSレコードと異なり、データレコードに記されているデータ長であることに
注意が必要。
③オフセットアドレス:データレコードの時は先頭バイトが格納されるアドレスを16ビット
(4文字)で指定する。その他のレコードタイプでは通常 "0000" となる。
④レコードタイプ
00 | データレコード: データフィールドに、2文字で1バイトのデータを表す。 |
01 | エンドレコード: HEXファイルの終了を示す。データフィールドは無いので、データ長フィールドは "00"になる。 |
02 | セグメントアドレス・レコード(ESA): データレコードに20ビットのオフセットを与えるレコードである。元々オブジェクトレコードが16ビットアドレスを20ビットアドレスに拡張するために作られたものなので、これを使っているものを拡張IntelHEXフォーマットと呼ぶこともある。 |
03 | スタートセグメント・アドレスレコード: プログラムをダウンロードして使うような場合に、実行開始アドレスを指定するのに使用される。 レコードのデータ(16bit)の値を4ビット左にシフトした値となる。 (このレコードは通常ROMライタでは使用する事はない。) |
04 |
拡張リニアアドレス・レコード(ELA): :0A0200004E4554494D5052455353EA というデータレコードがあれば、これは 0200H番地から格納されるが、 :02000004E0100A が前にある場合には、E0100200H 番地から格納されることになる。 |
05 |
スタートリニアアドレス: 例 |
⑤データ:2文字で1バイトのデータを表す。
⑥チェックサム:2文字(1バイト)データ。レコード長、データ長フィールド、オフセットアドレスフィールド、データフィールドの各バイト値の合計の2の補数。