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次号を期待して、。。。。

2 件のコメント:

  1. はじめまして、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番)に、プログラムの配置先頭アドレスを格納)をされると動いてくれるのではないかと思います。

    試していないので間違っていたらすみません。

    返信削除
  2. jujurouさん
    適確なコメントありがとうございました。

    Interface_Sample2/SH7262_LEDでvecttbl.cの修正を行い、バイナリ出力にして生成したユーザープログラムで試しました。
     結果はOKで あとは、32KB超えのプログラムサイズの検証を行いと思います。

    返信削除