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の補数。

 

アンケートにご協力お願いします

この解答はお客様のお役に立てましたでしょうか?

 

           

検索に戻る