GR-ROSE+e2studio + FIT を使用したUSBサンプルプログラムが動作しない

お世話になっております。マイコン初心者のコミーです。

現在、GR-ROSE と e2studio + FIT を使用しPC(Teraterm)とUSB通信しようとチャレンジしています。

補足:E2Liteエミュレータを接続+GR-ROSEのUSBとPCを接続して使用しています。

手順書「 Renesas e2studio スマート・コンフィグレータ Application Examples:CMT,A/D,SCI,DMA,USB(アプリケーションノート)

R20AN0469JS0120 Rev.1.20

2019.06.20 」

をApplocation Example1~4までは順調に動作させることができましたが、USBのサンプル:Applocation Example5のみ動作させることができません。

*不具合動作1:COMポートは認識はするが(2分ほど)時間がかかる(デバック実行してから)

*不具合動作2:COMポート認識後、Teraterm で接続できるようになり、遅い反応ですが文字は打てます。

        ただし、GR-ROSEからのリアクションは一切なしです。

コードはそのまま(Applocation Example5)のPDFからコピーして使用しました。

変更したのはクロックの設定とデバックの設定だけです。(CTM0とLED点灯用のPORTは(Applocation Example1)にて設定)

原因に心当たりがありましたら、ご教示いただければと思います。

<クロック設定>

SCKCR2にチェック / 48(USBクロックUCLK)になるように設定

<デバック設定>

EXTAL周波数:12 / 動作周波数:120 / 接続タイプ:FINE / エミュレータから電源を供給する:いいえ

下記追加情報です。

<デバイス選択ウィンドウ>

GR-ROSE用ボード定義ファイル(BDF)も使用し選択しました。

  • コミーさん、こんにちは。NoMaYと申します。

    USB CDCは、昔、RX62N(通称CQ基板)とRX631(GR-CITRUS)で試したことがある程度で、GR-ROSEでは試したことが無い(というか、すみません、持っていません)のですが、パソコン(Windowsのバージョン?)によっては、もともと認識されるのに時間が掛かるようなケースがあったような記憶があります。

    また、PCとボードを接続したその瞬間からボードのファームウェアが動作するようになっていないと、Windows側が何かしら異常処理対応をしている気配があったような記憶もあります。(あったような記憶がありますが、記憶が定かではないという自覚もあります。すみません。)

    ● e2 studioでデバッグ中とのことですけれど、RFP(Renesas Flash Programmer)でMOTファイルを書き込んで、ボード単体で試してみても同様の現象になりますでしょうか?

    また、現状はkommyさん側の企業秘密のようなものはソース中には無いかと思うのですが、ドキュメント通りにやれば作れる筈のプロジェクト一式ではあるのでしょうけれども、そちらのプロジェクト一式をzipファイルに固めて(PDFファイルは取り除いておくと良いと思います)添付して投稿すると、どなたかGR-ROSEを持っている方が試してみてくれることもあるように思います。添付して投稿されてみてはどうでしょうか?

    [追記]

    あと、まったくの天下り的なことのなのですが、デバッグ中のプログラムが途中で暴走して、無限ループしていたり、リセットを繰り返していたり、そんなことが起きて、期待したようにTeraTermと通信出来ないという可能性も気になりました。たとえば、スタックサイズが小さいままであるとか(ふと思い浮かんだだけですが)、そんなことが気になりました。

  • コミーさん、こんにちは。NoMaYです。

    GR-ROSEということですので、もしかしたらコンパイラはGNURXでしょうか?(そのことから何かヒントがすぐに思い浮かぶわけでは無いですけれども。)

  • コミーさん、こんにちは。NoMaYです。

    この件は自己解決されたということで良いのでしょうかね?

  • NoMayさんアドバイスありがとうございます。(返信がおそくなりもうしわけありません)まだ解決しておりません・・・

    1)まずはプロジェクトをエクスポートしたZIPファイルを添付します。

    2)>コンパイラはGNURXでしょうか?

    Renesas CCRX v3.04.00 のことでしょうか。

    マイコンにもSNSにも不慣れですが何卒よろしくお願いします。

    GR_ROSE_USB_sample_NG.zip

  • NoMayさんアドバイスありがとうございます。(返信がおそくなりもうしわけありません)まだ解決しておりません・・・

    1)まずはプロジェクトをエクスポートしたZIPファイルを添付します。

    2)>コンパイラはGNURXでしょうか?

    Renesas CCRX v3.04.00 のことでしょうか。

    マイコンにもSNSにも不慣れですが何卒よろしくお願いします。

    GR_ROSE_USB_sample_NG.zip

  • 3)NoMayさんからの確認事項↓を実施してみました。

    >RFP(Renesas Flash Programmer)でMOTファイルを書き込んで、ボード単体で試してみても同様の現象になりますでし>ょうか?

    結論としては通信できませんでした。ただE2Liteでのデバック中の動作ではタイマーによるLED点灯していたのですが、

    USEB通信はもちろん、RFPで書きこむとLEDの点灯すらしなくなりました。状況の報告だけさせていただきます。

  • 追記です。

    デバック中に他事をしていましたら(5分から10分放置)

    ①文字化け

    さらに「放置」

    ②読み取れる文字がでてきました。

    「デバック停止ボタンを押す」と

    ③通常動作で表示される文字が最終列付近にでてきました。

    とりあえず情報をのせます。このことから通信自体は惜しいところまできているような感じがします。

  • コミーさん、こんにちは。NoMaYです。

    プロジェクト一式ありがとうございます。また、RFPでの確認もありがとうございます。それで、念の為の確認ですけれど、RFPでの確認時、E2Liteを接続したままだったりとかしてないでしょうか?RFPでの確認というと、書き込んだ後、装置全体の電源を切り、E2Liteを取り外し、装置全体の電源を再度入れる、というのが一般的操作なのですけれど、ちょっと気になりました。

    また、文字化けしたデータがTeraTermに表示された件は、ちょっと解釈出来ない現象であるように思います。PCからのUSBデータリード要求に対してマイコンがゴミデータを返していることになるのですが、UART受信とは異なり、データを返すというアクティブなアクションをする必要がある(マイコンがしている)わけですので、何が起きたのだろう、という感じです。

    思うに、この後、連休明け実働3~4日しても、他の人からドンピシャリなリプライがなければ、ガチでUSBのデバッグをしないといけない、のではないかなぁ、という気がします。かれこれ6時間ぐらいソースを見たり回路図を見たり資料を見たりしていますが、もともとはRSK-RX65N 2MBを対象にしたガイドですがGR-ROSEでも同じ筈だけど、と私も思うのです。(実際、頂いた画面コピーの2枚目と3枚目は、仰る通り、惜しいところまできているような感じ、なわけですので。)

    [メモ]

    (1) main()のスーパーループでどんなUSBイベントが検出されているのかBreakpoint設定/Run/Breakを繰り返して把握する
    (2) USBモジュールのソース上はUSB_DEBUG_ONをマクロ定義するとデバッグメッセージをprintf()するようなので試す
    (3) WiresharkでUSBプロトコルアナライズが出来るような話を見掛けた記憶があるので試す

    (*) デバッグ時はコンパイラの最適化をOFFにする

    [追記]

    画面コピーの2枚目と3枚目から推測すると、R_USB_GetEvent(&ctrl)が何らかの理由で何十回と即リターンしてしまっているのかな。本来なら、然るべきUSBイベントの発生に応じて、僅かな回数しかリターンしない筈、であるのに。

    [追記2]

    待て待て待て、自分よ、それではスーパーループにならないよね、、、何か変な気がするのだけれども、、、

    > 本来なら、然るべきUSBイベントの発生に応じて、僅かな回数しかリターンしない筈、であるのに。

    [追記3]

    ひょっとしたら、FIT PCDCジュールの挙動が昔とは違っているのかなぁ、、、

    昔(2019年) (推測)

    ・USB_STS_CONFIGUREDになるまでR_USB_GetEvent(&ctrl)は返ってこない?

    今(2022年) (推測)

    ・USB_STS_CONFIGUREDになる前にもR_USB_GetEvent(&ctrl)はUSB_STS_NONEで何度も何度も返ってくる?

  • NoMayさん、おはようございます。さまざまな検証・考察をしていただきありがとうございます。

    まずRFPの件、

    >RFPでの確認時、E2Liteを接続したままだったりとかしてないでしょうか?RFPでの確認というと、

    >書き込んだ後、装置全体の電源を切り、E2Liteを取り外し、装置全体の電源を再度入れる

    については

    1)PCとつないでいたUSBケーブルをはずす

    2)RFPでMOTファイルを書き込む

    3)E2Liteとの接続USBを外す

    4)GR-ROSEとPCをUSEケーブルで接続

    結果は前述どおり、LED点滅(タイマー制御による)もUSB通信もできていないもようです。

    (今朝再度実施してみました)

    ちなみにGR-ROSEと外部への接続は4)のケーブルのみですがよいのでしょうか?

  • FITモジュール [ r_usb_pcdc ] のサンプル(スマートコンフィグレータからインポート)

    したもの。

    ↑ ただのエコー動作

    (キーボードを打ち込んだものがそのまま帰ってくる。Teraterm の設定をローカルエコーにして)

    このサンプルは動作(E2Liteでのデバック動作)しましたので参考までに添付します。

    (添付写真:ABC と打つと AABBCCと表示)

    何かのきっかけになればと考えています。

    大変にお手数をおかけしていますがよろしくお願いします。


    GR_ROSE_USB_sample_OK.zip