Renesas Synergy™

FAQ 1006464 : ROMコード発注時にINTEL HEXフォーマットを使うが、INTEL HEXフォーマットとはどのようなものか。

INTEL HEXフォーマットはオブジェクト(機械語)をやり取りするためのフォーマットのひとつで、1バイトをASCIIコードで2桁の16進数(HEX)に変換して表現したものです。
1行(レコード)で最大255バイト分のデータを表現でき、これを必要な回数繰り返します。
具体的なフォーマット例を以下に示します。

① ":"がレコ-ドの開始を示します
② 次の16進数2桁(10)がレコードのデータ数を示します
③ 次の16進数4桁(0000)がデータのアドレスを示します
④ 次の16進数2桁(00)がレコ-ドタイプで、データレコードであることを示します
(00はデータレコ-ド、01はエンドレコ-ド、02はセグメントレコ-ド等)
⑤ ここがデータそのもので、データは"00","01","02",・・・,"0E","0F"です
⑥ 最後がチェクサムでデータ数からチェックサムまでを加算すると下位8ビットは00になるようになっていて、エラー・チェックに使用します。

以上の情報に改行がついて1行が1つのレコ-ドとなります。
2行目がエンドレコ-ドで、データ数が00、レコードタイプが01になります。



これだけではアドレスは16ビット(64Kバイト)しか表せません。
それ以上を指定できるようにセグメントレコード(レコードタイプ02)を使用します。
下記の例は上の例の前にセグメントレコードを追加したものです。
セグメントレコードで指定したセグメントの値を16倍した値が以降のレコードのアドレスに加算されます。
ここではの1000Hがセグメントとして指定されているので、以降のデータは10000H~1000FHに格納されることを示しています。

他にご質問がございましたら、リクエストを送信してください