SH/Tiny FLASH Writer Program Using Python

SH/TinyのFLASHへシリアルポート経由でUSARTを使ってデータを書き込むプログラムを作った. 書き込むデータはモトローラS形式ファイル(.mot)でなければならない. わざわざ自作したのはLinuxからROM書き込みを行うためである.

プログラム言語には,ほとんどOSに依存しないコードにするためにpythonを使った. また,シリアルポートを操作するために,pyserialモジュールを使っている.

プログラム本体

shtiny_writer_yymmdd ディレクトリの中身が書き込みプログラム(pythonスクリプト)であり, write_yymmdd.py は便利に使うためのスクリプトである.

対応素子

SH-71253に対応させることしか考えていない. とはいえ,shtiny_writer.pyの先頭のパラメータを変更することで 他のSH/Tinyシリーズに対応できると思われる.

使用環境構築

python環境とpyserialモジュールがインストールされている必要がある. Linuxにおいては標準でインストールされていることが多い. Windowsの場合,以下の手順でセットアップする.

  1. pythonをインストールする.
  2. pyserialをインストールする.

使用方法1

基本的な使い方は,オプションと書き込むファイル(filename.mot)をコマンドライン引数にして "shtiny_writer_yymmdd/shtiny_writer.py" を実行すればよい. 例えば,次のように使う.

$ shtiny_writer.py --port=/dev/ttyUSB0 --baudrate=57600 --checksum --time filename.mot
各オプションの意味は以下の通りである.

オプション 説明
--port=(PORT) シリアルポートを指定(Windowsの場合com1など)
--baudrate=(RATE) ボーレートを指定
--compare 書き込み後,読み込んで元データと比較する
--checksum 書き込み後,書き込みデータとFLASHの内容のchecksumを比較する
--time デバイスとの接続がとれた瞬間からの経過時間を表示する

'--compare' オプションは書き込んだデータを再度読み込んで比較するため時間がかかる. '--checksum' は和の比較だけであるが,高速である.

使用方法2

上記「使用方法1」が基本ではあるが, 毎回オプションを指定するのはあまりに面倒なので, 各オプションをあらかじめ設定したpythonスクリプト(write_yymmdd.py)を準備した. 書き込み後TeraTermなどの通信ソフトを起動するようにしている. 不要であれば削除かコメントアウトすればよい.

環境と目的にあわせてスクリプト内のいくつかの項目を書き換える必要がある.

使い方は以下の通りである.

  1. motファイルパスを設定したとき,
    write_yymmdd.pyを実行する.
  2. 任意の.motファイルを書き込むとき,
    書き込むファイルを引数として "write_yymmdd.py" を実行する. ([Windows] 書き込むファイルを "write_yymmdd.py" にドラッグ&ドロップする.)

参考にした情報

本プログラムを作成するにあたって下記ドキュメントを参照した.

  1. SH7125 グループ、SH7124 グループハードウェアマニュアル Rev.5.00