インテルHEX フォーマット

ROMライターなどで利用されている、HEXフォーマットです。



1バイトデータについて
すべてASCIIコードで示す。
1バイトデータ例
00 = 30h30h
FF = 46h46h



レコード構造
a,スタート・マーク b,バイト・カウント c,アドレス d,レコード・タイプ e,データ f,チェックサム
NN A3 A2 A1 A0 RR D0 D1 D2 ~ Dn S1 S2

レコード説明
a,スタート・マーク ”:” レコードの始まり
b,バイト・カウント 2文字
データバイト桁数を表す。(ビック・エンディアン)
容量は、0~255まで指定可能
(レコード桁数”00”でエンドコードと判断します。)
c,アドレス 4文字
データの先頭アドレスを示す。(ビック・エンディアン)
レコード・タイプによってアドレス計算が必要です。
d,レコード・タイプ 2文字
00:データ・レコード
書き込まれるべきデータ
01:エンド・レコード
HEXファイルの終了を示す。
b,バイト・カウントは、00になる。
02:拡張アドレス・レコード
e,データにセグメントアドレスが入る。
03:スタートセグメント・レコード
04:拡張リニアアドレス・レコード
05:スタートリニアアドレス
e,データ 2文字(1データ)
1バイトのデータを示す。
f,チェックサム 2文字
計算式: (NOT(b+c+d+e) AND 0xFF)+1
b+c+d+eの各バイトの2の補数
1.拡張アドレス・レコード レコード・タイプ[:02]
a,スタート・マーク b,バイト・カウント c,アドレス d,レコード・タイプ e,データ f,チェックサム
02 0000 02 A3 A2 A1 A0 S1 S2
インテルHEXのアドレス範囲を16ビットから20ビットに拡張します。
絶対アドレス=[拡張アドレス × 16] + [データレコードアドレス]

例: 23456 ~ 23459番地の内容出力
:020000022000DC ← 拡張レコード

:04345600FFFFFFFF76 ← データレコード
:00000001FF ← エンドデータ
絶対アドレス = 2000h + 3456h = 23456h


2.レコード・データ レコード・タイプ[:00]
a,スタート・マーク b,バイト・カウント c,アドレス d,レコードタイプ e,データ f,チェックサム
nn A3 A2 A1 A0 00 D0 D1 D2 D3 ~ Dn S1 S2

3.エンド・レコード レコード・タイプ[:01]
a,スタート・マーク b,バイト・カウント c,アドレス d,レコードタイプ
00 A3 A2 A1 A0 01

タグ:

+ タグ編集
  • タグ:

このサイトはreCAPTCHAによって保護されており、Googleの プライバシーポリシー利用規約 が適用されます。

最終更新:2007年09月21日 11:52
ツールボックス

下から選んでください:

新しいページを作成する
ヘルプ / FAQ もご覧ください。