目次

HEXファイル生成(Python)

 マイコンのファームウエアやROMデータをライターに
 転送する場合、Intel HEXファイルフォーマットでの
 情報を集約することが多いです。

 手持ちのICがなく、ROMを利用して4ビットフルアダーの
 作成が必要になったとき、HEXファイルを生成するために
 スクリプト言語を利用しました。

 次のような回路をROMをデコーダに利用して作成します。
 (キャリー入力はなしとします。)



 2つの4ビット入力をもち、加算結果の4ビットと
 キャリーの1ビットを出力として持ちます。

 加算結果を求めるのは、2進数4ビットを用意して
 次のように計算すればよいでしょう。

for i in range(0,16) :
  tmp = ""
  for j in range(0,16):
    # address
    adr = i * 16 + j
    # add
    add = i + j
    # header
    if j == 0 :
      tmp += ": " +"{0:04X}".format(adr)
    # values
    tmp += " " + "{0:02X}".format(add)
  # show
  print tmp

 このスクリプトを実行すると、次のようになります。



 Intel HEXフォーマットを改めて見直すと以下です。

 チェックサムは、バイトカウンタからレコード情報の16進数を
 加算し、2の補数を求めます。2の補数は、16進数2桁として
 求めます。

 フォーマットに従って、フルアダーの回路情報を生成する
 スクリプトは、以下となります。

for i in range(0,16) :
  tmp = ""
  # recode size
  sum = 16
  for j in range(0,16):
    # address
    adr = i * 16 + j
    sum += adr
    # recode type
    sum += 0
    # add
    add = i + j
    #
    sum += add
    # header
    if j == 0 :
      tmp += ":10"+"{0:04X}".format(adr)+"00"
    # values
    tmp += "{0:02X}".format(add)
  # calculate check sum
  sum %= 256
  sum ^= 255
  sum += 1
  sum %= 256
  # concatenate
  tmp += "{0:02X}".format(sum)
  # show
  print tmp
# End Of File
print ":000001FF"

 実行すると、次のようになります。



 I/Oリダイレクトを利用し、テキストファイルにすると
 各種ライターを使いROMに焼きこめます。

 ROMライターは、次のような簡易タイプでも充分役立ちます。




目次

inserted by FC2 system