NET IMPRESSサポートセンタユーザログイン
よくあるご質問
質問:インテルHEXフォーマットの書式を知りたい。
・インテル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): データレコードに32ビットのオフセットを与えるレコードである。 セグメントアドレスレコードの形式では20ビットアドレスまでしか表現できないので、32ビット アドレスが必要になったときにこの形式が追加された。このレコードでは32ビットアドレスのうち 上位16ビットを与える。(下位16ビットはデータレコードのオフセットフィールドの値が用いられる) 例 :0A0200004E4554494D5052455353EA というデータレコードがあれば、これは 0200H番地から格納されるが:02000004E0100A が前にある場合には、 E0100200H 番地から格納されることになる。 |
05 | スタートリニアアドレス: スタートセグメントアドレスレコードでは、20ビットの範囲しか指定できないため、これを32ビット表現 できるように拡張したのが、スタートリニアアドレスレコード。 (データ長 4バイト、スタートセグメント・アドレスレコードと同様に通常ROMライタでは使用する事はない。) 例 :04000005FF000123D4 となっていれば、FF000123h番地がスタートアドレスになる。 |
⑤データ:2文字で1バイトのデータを表す。
⑥チェックサム:2文字(1バイト)データ。レコード長、データ長フィールド、オフセットアドレスフィールド、
データフィールドの各バイト値の合計の2の補数。
アンケートにご協力お願いします
この解答はお客様のお役に立てましたでしょうか?