モトローラ S レコードフォーマット


マイコンにプログラムを書き込む際にライターへ渡すデータフォーマットの1つである Sレコードフォーマットを記します。

以下のデータはH8/3052F用に作成した実際のファイルの中身です。
Sレコードフォーマットは書き込み先のアドレス、データ等をASCII文字で示してます。



S00F00006C65645F746573742E6D6F741E
S113000000000100000001000000010000000100E8
S113001000000100000001000000010000000100D8
S113002000000100000001000000010000000100C8
S113003000000100000001000000010000000100B8
S113004000000100000001000000010000000100A8
S11300500000010000000100000001000000010098
S11300600000010000000100000001000000010088
S11300700000010000000100000001000000010078
S11300800000010000000100000001000000010068
S11300900000010000000100000001000000010058
S11300A00000010000000100000001000000010048
S11300B00000010000000100000001000000010038
S11300C00000010000000100000001000000010028
S11300D00000010000000100000001000000010018
S11300E00000010000000100000001000000010008
S10700F00000010007
S11301007A07000FFF0E7A00000001627A01000FE7
S1130110DF107A02000FDF10690369930B800B81F3
S11301201FA145F45E00012A40D601006DF60FF6CA
S11301301B97FAFF3AD418AA3AD61AB32AD6170A42
S11301403AD601006FE3FFFC01006F62FFFC0DAAC9
S113015046EA01006F62FFFC0B0201006FE2FFFC44
S105016040E673
S9030100FB
			


詳細を下記します。


S0タイプ(ヘッダレコード)

コメントやファイル名を記述する為に使用します。
前記のデータでは「led_test.mot」が記載されています。



  (a) タイプフィールドで,ASCIIコードで"S0"の文字です。
  (b) (c)(d)(e)のバイト数を示します。実際には1byteのデータを2文字の16進数で表しているので2倍の文字数が後続します。
  (c) "0"が4つです。
  (d) コメントやファイル名をASCIIコードを1byte当たり2文字の16進数で示してます。
  (e) チェックサムです。
    (b)(c)(d)のASCIIで表された2バイトのデータを,1バイトの16進で表し,
    各バイトを符号なしでオーバフローを無視して加算します。
    その結果の1の補数を求め,2バイトのASCIIにして設定します。
  (f) 一般に制御コード(CR,LFなど)が付加されます。


S1タイプ(ヘッダレコード)

データの書き込み位置を2byteのアドレスで指定します。



  (a) タイプフィールドで,ASCIIコードで"S1"の文字です。
  (b) (c)(d)(e)のバイト数を示します。実際には1byteのデータを2文字の16進数で表しているので2倍の文字数が後続します。
  (c) (d)の最初のデータに割り当てられた2byteのアドレスです。
  (d) 実際に書き込むデータです。1byteのデータを2文字のASCII文字で表しています。
    d1,d2部分のデータ(1byte)が(c)に記載されているアドレスのデータで、以降のデータはアドレスが増える方向のデータとなります。
  (e) チェックサムです。
    (b)(c)(d)のASCIIで表された2バイトのデータを,1バイトの16進で表し,
    各バイトを符号なしでオーバフローを無視して加算します。
    その結果の1の補数を求め,2バイトのASCIIにして設定します。
  (f) 一般に制御コード(CR,LFなど)が付加されます。


S2タイプ(ヘッダレコード)

データの書き込み位置を3byteのアドレスで指定します。



  (a) タイプフィールドで,ASCIIコードで"S2"の文字です。
  (b) (c)(d)(e)のバイト数を示します。実際には1byteのデータを2文字の16進数で表しているので2倍の文字数が後続します。
  (c) (d)の最初のデータに割り当てられた3byteのアドレスです。
  (d) 実際に書き込むデータです。1byteのデータを2文字のASCII文字で表しています。
    d1,d2部分のデータ(1byte)が(c)に記載されているアドレスのデータで、以降のデータはアドレスが増える方向のデータとなります。
  (e) チェックサムです。
    (b)(c)(d)のASCIIで表された2バイトのデータを,1バイトの16進で表し,
    各バイトを符号なしでオーバフローを無視して加算します。
    その結果の1の補数を求め,2バイトのASCIIにして設定します。
  (f) 一般に制御コード(CR,LFなど)が付加されます。


S3タイプ(ヘッダレコード)

データの書き込み位置を4byteのアドレスで指定します。



  (a) タイプフィールドで,ASCIIコードで"S3"の文字です。
  (b) (c)(d)(e)のバイト数を示します。実際には1byteのデータを2文字の16進数で表しているので2倍の文字数が後続します。
  (c) (d)の最初のデータに割り当てられた4byteのアドレスです。
  (d) 実際に書き込むデータです。1byteのデータを2文字のASCII文字で表しています。
    d1,d2部分のデータ(1byte)が(c)に記載されているアドレスのデータで、以降のデータはアドレスが増える方向のデータとなります。
  (e) チェックサムです。
    (b)(c)(d)のASCIIで表された2バイトのデータを,1バイトの16進で表し,
    各バイトを符号なしでオーバフローを無視して加算します。
    その結果の1の補数を求め,2バイトのASCIIにして設定します。
  (f) 一般に制御コード(CR,LFなど)が付加されます。


S4タイプ(ヘッダレコード)

シンボルレコード(LSI拡張)らしいのだが、詳細は不明。



S5タイプ(ヘッダレコード)

ファイル中に含まれるレコードの数を設定します。



  (a) タイプフィールドで,ASCIIコードで"S5"の文字です。
  (b) (c)(e)のバイト数を示します。実際には1byteのデータを2文字の16進数で表しているので2倍の文字数が後続します。
  (c) ファイル中のデータレコード(S1,S2,S3)の数を示します。
  (e) チェックサムです。
    (b)(c)のASCIIで表された2バイトのデータを,1バイトの16進で表し,
    各バイトを符号なしでオーバフローを無視して加算します。
    その結果の1の補数を求め,2バイトのASCIIにして設定します。
  (f) 一般に制御コード(CR,LFなど)が付加されます。


S6タイプ(ヘッダレコード)

未使用



S7タイプ(ヘッダレコード)

4byteのアドレス指定の終了を表すコード
通常、ファイルの最後に置かれます



  (a) タイプフィールドで,ASCIIコードで"S7"の文字です。
  (b) (c)(e)のバイト数を示します。"05"の固定値です。
  (c) プログラムの実行開始アドレスを示します。単に"00000000"の場合もあります。
  (e) チェックサムです。
    (b)(c)のASCIIで表された2バイトのデータを,1バイトの16進で表し,
    各バイトを符号なしでオーバフローを無視して加算します。
    その結果の1の補数を求め,2バイトのASCIIにして設定します。
  (f) 一般に制御コード(CR,LFなど)が付加されます。


S8タイプ(ヘッダレコード)

3byteのアドレス指定の終了を表すコード
通常、ファイルの最後に置かれます



  (a) タイプフィールドで,ASCIIコードで"S8"の文字です。
  (b) (c)(e)のバイト数を示します。"04"の固定値です。
  (c) プログラムの実行開始アドレスを示します。単に"000000"の場合もあります。
  (e) チェックサムです。
    (b)(c)のASCIIで表された2バイトのデータを,1バイトの16進で表し,
    各バイトを符号なしでオーバフローを無視して加算します。
    その結果の1の補数を求め,2バイトのASCIIにして設定します。
  (f) 一般に制御コード(CR,LFなど)が付加されます。


2byteのアドレス指定の終了を表すコード
通常、ファイルの最後に置かれます

S9タイプ(ヘッダレコード)



  (a) タイプフィールドで,ASCIIコードで"S9"の文字です。
  (b) (c)(e)のバイト数を示します。"03"の固定値です。
  (c) プログラムの実行開始アドレスを示します。単に"0000"の場合もあります。
  (e) チェックサムです。
    (b)(c)のASCIIで表された2バイトのデータを,1バイトの16進で表し,
    各バイトを符号なしでオーバフローを無視して加算します。
    その結果の1の補数を求め,2バイトのASCIIにして設定します。
  (f) 一般に制御コード(CR,LFなど)が付加されます。



【参考資料】
PastelMagicのTips
http://www.pastelmagic.com/tips/hexform/hexform.html

富士通マイコンのリンケージキットマニュアルの付録に記載されています。
http://edevice.fujitsu.com/jp/manual/MANUALp/ja-pdf/CM81-00302-3.pdf


<-Back
管理者: 宝 寿々郎(TAKARA Jujurou)