2010年7月21日水曜日

付属SH-2A基板 SD/MMCカード対応ブート・ローダを試す。(その1:失敗の顛末)

SQ出版 Interface誌 Webサイト「付属SH-2A基板特設ページ」で SD/MMCカード対応ブート・ローダが先行公開されました。
 私、安直に、「これは、良い、今まで、外付けシリアルフラッシュで64(32)KByteオーバープログラムに対応していたのが、SDカードで置き換えられる。」と思い、早速試してみました。
 結論から言えば、現時点でまだ、この素晴らしい、ブート方式の検証は出来ていません。失敗事例とし今回、投稿します。ご容赦願います。

[概要]
1.SD/MMCカード対応ブート・ローダ ”ff_loader” 改造ポイント
 1)SDカードの端子変更
  CS: PG20(33)=> PG16(24)
  WP: PJ3(32) => PC6(27)
  CD: PJ1(31) => PC7(28)
 2)ff_loader.binの(ブート・ローダー)の扱い
  外付けシリアルフラッシュROMの先頭(0x00000000)に書き込む。
  =>外付けシリアルフラッシュROMの32KB以降(0x00008000)に書き込む。(訂正7/25)
2.稼動させたい、プログラム。
 過去に、シリアルフラッシュROMに書き込んだプログラム。「付属SH-2A基板 2Chオシロスコープ(弊ブログ)」を、PCでSDカードに、”app.bin”というファイル名で書き込む。
3.試行
  失敗
4.試行後
  既存のブート・ローダーおよびHEWモニターが潰れたため、付属基盤は不能に。
5.リカバリー
  「SH-2A基板用HEWモニタプログラムを外付けシリアル・フラッシュROMに書き込む。(弊ブログ)」で、元のブート・ローダーおよびHEWモニターを書き込み、復旧。


 以降、今回の失敗の詳細を述べます。


1.SD/MMCカード対応ブート・ローダ ”ff_loader” 改造
 1)SDカードの端子変更
  ①CS端子
   CN3 33はSPI Ch1のMISOで使いたいので、CN3 24 (PG16)に変更
   ・ソース:mmc.c のCS制御を
    #define CS_LOW() PORT.PGDR1.BIT.PG16DR = 0 /* MMC CS = L */
    #define CS_HIGH() PORT.PGDR1.BIT.PG16DR = 1 /* MMC CS = H */   
   に変更。
   ・ソース:mmc.c のpower_on()内のCS 設定を
    PORT.PGIOR1.WORD |= 0x0001; PORT.PGCR4.WORD &= 0xFFF0; /* MMC_CS */
   に変更。(7/23追記)
   


  ②WP端子、CD端子
   CN3 31,32は、LCD(モノクログラフィック)で使用のため、CN3 27,28 (PC6,PC7)に変更

   ・ソース:mmc.c のWP,CDのGPIOポート設定を
    #define SOCKPORT PORT.PCPR0.WORD /* ソケット状態入力(PC) */
    #define SOCKWP 0x0040 /* ライトプロテクト接点 (PC6) */
    #define SOCKINS 0x0080 /* カード検出接点 (PC7) */
   に変更
   ・ソース:mmc.c のpower_on()内のWP/CD 設定を
    if (_USE_CD) {PORT.PCIOR0.WORD &= 0xFF7F; PORT.PCCR0.WORD &= 0x0FFF;} /* MMC_CD */
    if (_USE_WP) {PORT.PCIOR0.WORD &= 0xFFBF; PORT.PCCR0.WORD &= 0xF0FF;} /* MMC_WP */
   に変更。(7/23追記)

 2)ff_loader.binの(ブート・ローダー)の扱い
  現在、シリアルフラッシュROM(SPI Ch0)に、プログラムを書き込むプログラムを改造し、シリアルフラッシュROMの先頭(0x00000000)にブート・ローダーのみを書き込みプログラムを作成し、改造後の”ff_loader.bin”を書き込みました。
 =>このブート・ローダーは、ユーザープログラムとして扱うようです。ユーザー・プログラムがさらに、別のユーザープログラムをロードすることで、SDカード上のプログラムを実行するようです。したがって、プログラム書き込み位置は、従来のユーザープログラムと同じ、シリアルフラッシュROMの32KB(0x00008000)以降になります。(7/25追記)


3.試行~5.リカバリー 上記のとおり、

6.疑問点
 SH7262のローダープログラムのサイズは8KBだった記憶があります。今回のブート・ローダーのプログラムサイズは12KB、少々疑問を持っています。=>この疑問無効(7/25追記)

※今回の失敗で、SDカードコネクタ周りの配線チェックを予定しています。チェックの方法として、以前試していた、SDカード関連のプログラムを元のSPI Ch0に戻し再度動作確認を行いたいと思います。

SDカードからのブートが実現できれば、結構快適に、付属SH-2A基板のプログラム開発が行えると期待してます。

7.状況
 7/23 I誌7月号第3章 「メモリカードとFATファイル・システムの実装」のプログラムの動作を実現し、SPI Ch0によるSDカードコネクタ周りの回路構成(配線等)を確認しました。
 7/25 I誌9月号を読みながら、GCC版、HEW版いずれも試すが、SDカードプログラムの稼動は確認出来ず。

0 件のコメント:

コメントを投稿