2010年5月15日土曜日
SH-2A基板 「ROM化ユーザ・プログラム書き込み用プログラム」を試しました。
先日、Interface誌 付属SH-2A基板特設ページ でリリースされた 「ROM化ユーザ・プログラム書き込み用プログラム(以降 SPIwreterUserDI)」を試しました。
早速、”だめもと”で、外付けシリアルフラッシュROM(M25P40)搭載の付属SH-2A基板で試しました。結果は、当然のことですが失敗しました。SPIwreterUserDI実行後は、HEWモニタプログラム等が消去されたようで、リセット後、SH-2A基板は沈黙。。。
以下に、SPIwreterUserDI の改造および、その際の顛末について述べます。
※改造後のプログラム概要
・M25P40 セクタ0 のクリア後、以前使った。「SPIシリアル接続フラッシュROM アップデート・ファイル」(SPIROM.BIN)の前半 32KB分 を書き込む。
・M25P40 セクタ0 の後半32KBから、ユーザープログラムを書き込む。
(セクタの消去は、セクタ1以降に行う。)
1.SPIwreterUserDIを外付けシリアルフラッシュROM(M25P40)に使う上での問題点。
・付属基板上のM25P05-Aの場合、ユーザープログラムはセクタ1に書き込まれるが、M25P40では、HEWモニタプログラムと同じ、セクタ0に書き込まれる。この時、セクタ0の消去が行われ、HEWモニタプログラム等が消去されてしまいます。
2.SPIwreterUserDIの改造
①SPIwreterUserDIの改造 その1
serial_flash.hのセクタサイズ、セクタ数を書き換える。(M25P40用に)
※プログラム書き込みサイズはまだそのまま。
②ビルド
③書き込み実行 ==>失敗
書き込み実行し、LEDの点滅までたどりつくが、付属基板リセットすると、HEWモニタ、およびLED点滅プログラムは作動しなくった。
④M25P40の復旧
モニタプログラムを書き込み、MP25P40を復旧させる。
⑤SPIwreterUserDIの改造 その2
a.SH-2Aマイコン基板実装SPIシリアル接続フラッシュROM アップデート・ファイル(2010年4月24日版)の 「SPIROM.BIN」をSPIwreterUserDIのフォルダに組み込み、Download modulesに追加する。
USERROM.BINのオフセットを 1C090000に変更
SPIROM.BINのオフセットを 1C080000で追加する。
b.main.cを修正
・SPIROM.BINを シリアルフラッシュROMのアドレス0x00000000 サイズ0x00008000で write_prog_dataを使って書き込む。
・write_prog_data_userをwrite_prog_dataを元に作成する。(セクタNo.0の場合 セクタの消去は行わないように改造)
・USERROM.BINを シリアルフラッシュROMのアドレス0x00008000 サイズ0x00008000で write_prog_data_userを使って書き込む。
c.ビルド/ダウンロード SPIwriterUser.abs、SPIROM.BIN、USERROM.BIN
d.実行
==>成功
⑥SPIwreterUserDIの改造 その3
・write_prog_data_userでの書き込みプログラムサイズを セクタサイズ(SECTOR_SIZE)× セクタ数(SECTOR_NUM) - 0x00008000 に変更
3.今後、
現時点で、SPIwreterUserDIでROM化するユーザープログラムの作成に失敗しています。付属SH-2A基板特設ページでダウンロードした、LED点滅プログラム(Interface_Sample/SH7262_LED)でも試すのですが、上手くいきません。SPIwreterUserDIに付随した LED点滅プログラム(USERROM.BIN)だけROM可できている状況です。
その辺の所は、Intarface次号を期待して、。。。。
登録:
コメントの投稿 (Atom)
はじめまして、jujurouです。
返信削除ROM化で使用されているLED点滅プログラムですが、改定版が出ていて(Interface_Sample/SH7262_LED)ではなく、(Interface_Sample2/SH7262_LED)でないとROM化した時に正しく動いてくれません。
http://www.kumikomi.net/interface/editors/2010/04/led.php
ソースコードを比較されると分りますが、レジスタバンクを有効にする処理が追加されています(さりげなくバグも修正されていますが…)。
これにROM化プログラムに対応するための修正(ベクタ領域のオフセット+20h(ベクタ番号では8番)に、プログラムの配置先頭アドレスを格納)をされると動いてくれるのではないかと思います。
試していないので間違っていたらすみません。
jujurouさん
返信削除適確なコメントありがとうございました。
Interface_Sample2/SH7262_LEDでvecttbl.cの修正を行い、バイナリ出力にして生成したユーザープログラムで試しました。
結果はOKで あとは、32KB超えのプログラムサイズの検証を行いと思います。