2011年8月5日金曜日

plan B

RXのUSB Boot modeでのROMの書込みだが、256バイトデータ書込みの段階までは到達できたがそこで引っかかってしまっている。
256バイトデータ書込み終了コマンドではどうなるのか試してみた。

      - ログ -
      Device Found!!
      send 0x55
      rxbuf=e6.00
      1.サポートデバイス問い合わせ
      -- response --
      code=30, size=18, devnum=1
      chars=16,devcode=36793035,devname=RX600 Serie
      sum=ce
      2.デバイス選択
      response=06
      3.クロックモード問い合わせ
      -- response --
      code=31, size=1
      00
      sum=ce
      4.クロックモード選択
      response=06
      5.逓倍比問い合わせ
      -- response --
      code=32, size=11, clocknum=2
      type=4,01 02 04 08
      type=4,01 02 04 08
      sum=9b
      6.動作周波数問い合わせ
      -- response --
      code=33, size=9, clocknum=2
      min=03.20 (8MHz),max=27.10 (100MHz)
      min=03.20 (8MHz),max=13.88 (50MHz)
      sum=aa
      13.書込みプログラムステータス問い合わせ
      -- response --
      code=5f, size=2, status=13, error=00
      8.ユーザマット情報問い合わせ
      -- response --
      code=35, size=9, areanum=1
      begin=ff.ff.ff.ff, end=00.00.f8.ff
      sum=ce
      9.消去ブロック情報問い合わせ
      -- response --
      code=36, size=1, blknum=177
      sum=c6
      10.書込みサイズ問い合わせ
      -- response --
      code=37, size=2, writesize=0400, sum=c3
      11.書込みプログラムステータス問い合わせ
      -- response --
      code=5f, size=2, status=13, error=00
      7.新ビットレート選択
      response=06.02
      12.書込み/消去ステータス遷移コマンド
      rxbuf=06.02
      13.書込みプログラムステータス問い合わせ
      -- response --
      code=5f, size=2, status=1f, error=00
      14.書込み/消去ステータス遷移コマンド
      rxbuf=06.02
      15.書込みプログラムステータス問い合わせ
      -- response --
      code=5f, size=2, status=3f, error=00
      21.ユーザーマット書込み選択
      response = 06.02
      22.書込みプログラムステータス問い合わせ
      -- response --
      code=5f, size=2, status=4f, error=00
      24.256バイトデータ書込み END   <--- 終了コマンドを送る
      txbuf =50 ff ff ff ff b4
      response = 06.02        <--- 受け入れられた。
      25.書込みプログラムステータス問い合わせ
      -- response --
      code=5f, size=2, status=3f, error=00  <--- statusは3f (書き込み消去ホストコマンド待ち)に遷移した(戻った)

ということで、終了コマンドは受け入れるようだ。
そこで、今度はワザとチェックサム値を間違えて、エラー(チェックサムエラー)になるか見てみた。

      - ログ -
      Device Found!!
      send 0x55
      rxbuf=e6.00
      1.サポートデバイス問い合わせ
      -- response --
      code=30, size=18, devnum=1
      chars=16,devcode=36793035,devname=RX600 Serie
      sum=ce
      2.デバイス選択
      response=06
      3.クロックモード問い合わせ
      -- response --
      code=31, size=1
      00  
      sum=ce
      4.クロックモード選択
      response=06
      5.逓倍比問い合わせ
      -- response --
      code=32, size=11, clocknum=2
      type=4,01 02 04 08  
      type=4,01 02 04 08  
      sum=9b
      6.動作周波数問い合わせ
      -- response --
      code=33, size=9, clocknum=2
      min=03.20 (8MHz),max=27.10 (100MHz)
      min=03.20 (8MHz),max=13.88 (50MHz)
      sum=aa
      13.書込みプログラムステータス問い合わせ
      -- response --
      code=5f, size=2, status=13, error=00
      8.ユーザマット情報問い合わせ
      -- response --
      code=35, size=9, areanum=1
      begin=ff.ff.ff.ff, end=00.00.f8.ff
      sum=ce
      9.消去ブロック情報問い合わせ
      -- response --
      code=36, size=1, blknum=177
      sum=c6
      10.書込みサイズ問い合わせ
      -- response --
      code=37, size=2, writesize=0400, sum=c3
      11.書込みプログラムステータス問い合わせ
      -- response --
      code=5f, size=2, status=13, error=00
      7.新ビットレート選択
      response=06.02
      12.書込み/消去ステータス遷移コマンド
      rxbuf=06.02
      13.書込みプログラムステータス問い合わせ
      -- response --
      code=5f, size=2, status=1f, error=00
      14.書込み/消去ステータス遷移コマンド
      rxbuf=06.02
      15.書込みプログラムステータス問い合わせ
      -- response --
      code=5f, size=2, status=3f, error=00
      21.ユーザーマット書込み選択
      response = 06.02
      22.書込みプログラムステータス問い合わせ
      -- response --
      code=5f, size=2, status=4f, error=00
      24.256バイトデータ書込み END
      txbuf =50 ff ff ff ff 00     <-------------- チェックサム値を0にした。
      usb_bulk_read Error. (No error)  <-- 応答なし、タイムアウトエラー !!!!

エラーレスポンスは返らずに固まってしまった。(タイムアウトエラー)
ユーザーズマニュアルでは256バイト書込みのエラーレスポンスとしてチェックサムエラーも記載されているが、何故エラーを返さない???   どうも私のRX62NのUSB Boot mode用のファームウェアはユーザーズマニュアル記載の仕様とは違う仕様で実装されているような気がする。。。
Renesasのサイトを確認したところ Rev.1.20 2011.05 版のユーザーズマニュアルがあったが、USB Boot modeの箇所は更新されていないようだった。

これ以上試行錯誤しても仕方ないしRX62Nの使い方の習熟が目的ではないのでRX62Nを使う案は止めて別の手段(plan B)でいくことにした。

plan Bとは、Spartan3Eに組み込んだ回路をもう一つ用意して両者で通信を行うということだ。
これだと厳密にはInteroperabilityの確認にはならないが、まぁしゃーないわな。
手持ち部品の関係で、今回はデジタル・デザイン・テクノロジー誌 No.1に付属していたLattice XP2基板を使うことにした。 XP2のEBR容量の制約からzumi32の命令用メモリの容量を2Kx32bitにせざるをえなかったが、回路は何とかXP2に収まった。


下の写真はpwm出力でLEDを制御するようにして動作確認しているところだ。


次のようなプログラムを書いて動作確認を行った。


pwm1タイマーを周期20msecで動作させており、dutyはpwm1の割込み処理ルーチンで
データメモリの0番地の値で更新している。 このデータメモリはUART経由でPCからも読み
書き出来るようになっているので、動作させながらdutyを任意の値に変更することができる。
一応、意図した通りの動作はしているが最終的にやりたいのは、
Spartan3Eの方からCAN I/F経由でduty値等を設定したいということだ。
ここまできたのでもう一息といったところだ。

0 件のコメント:

コメントを投稿

自作CPUで遊ぶ 25

まだ制御ソフトが完成していないので今まではスピンドルを移動するために一々簡単なプログラムを書いて移動させていたのだが、非常に面倒なのでCNCペンダント的なものを作ることにした。 右側の縦に2つ並んでいるスイッチ...