RL78/G1CのUSBサンプルコードについて

パソコンとRL78G1CでのUSB通信を行いたいので、スターターキットを購入して、サンプルコードとして an_r01an0555jj0215_usb を入手して、an_r01an0555jj0215_usb\workspace\RL78\CS+\RL78G1C\ にあるRL78G1C.mtpjからCS+を起動させて、端子割り当て設定のみを行ってコードの生成後にビルドを行ったのですが、

RA78K0R error E3404: Multiple symbol definition '_main' in file 'ECHO\r_cg_main.rel'. First defined in file 'ECHO\main.rel'
RA78K0R error E3404: Multiple symbol definition '_hdwinit' in file 'ECHO\r_cg_systeminit.rel'. First defined in file 'ECHO\rl78usbmcu.rel'

というメッセージが出てビルド出来ませんでした。「RL78/G1CのUSBポート使用について」の投稿を確認したのですが、それとは内容が異なる様です。なにか他に変更すべき箇所があれば御教授願えないでしょうか。

Parents
  • musashiさん、こんにちは。NoMaYと申します。

    以下のスレッドの時に見ていたソースが残っていましたので見てみました。結論としては、そもそも、そのサンプルコードはコード生成機能を使用して作成されたものではありませんでしたので、そこにコード生成機能で生成したソースを追加したことで幾つかの関数が重複してしまったことによります。

    RL78/G1CのUSBポート使用について
    japan.renesasrulz.com/cafe_rene/f/002-2095199602/4369/rl78-g1c-usb

    ざっと見た感じでは、対処方法は以下のようになるかな、と思いました。

    (1) workspace\RL78\CS+\RL78G1C\src\SmplMain\main.cのmain()の中身を、コード生成機能が生成したr_main.cのmain()のユーザ記述部へコピーして、もとのmain.cのmain()は削除する

    (2) workspace\RL78\CS+\RL78G1C\src\HwResource\src\rl78usbmcu.cのhdwinit()の中身を、コード生成機能が生成したr_main.cのR_MAIN_UserInit()のユーザ記述部へコピーして、もとのl78usbmcu.cのhdwinit()は削除する

    (3) きっとビルドするとインクルードファイルが足りないことに起因するコンパイルエラーが発生すると思いますので、エラーメッセージから足りないインクルードファイルを特定して、r_main.cにインクルードファイル関連のユーザ記述でインクルードしていく。

    それで、一応、サンプルコードそのままが動くことは確認しておいた方が良いと思います。

    [追記]

    当時調べたことを投稿した別スレッドがありましたので、今回の件とは関係が無いですが、リンクを載せさせて下さい。すみません。

    USB PCDCドライバのエコーバックサンプルプログラムソースを幾つか並べてみた
    japan.renesasrulz.com/cafe_rene/f/forum5/4381/usb-pcdc
     

  • NoMaYさん、解答ありがとうございます。
    なるほど、サンプルコード自体がコード生成に対応していなかったのですね。
    他サンプルコードを利用したときは、コード生成に対応していたので盲点でした。
    ご指摘頂いた箇所を修正して、ビルドが正常に通るようになりました。
    追記もありがとうございます。

    そして、その後に別の問題点が発生しました。
    usb_cpu_mcu_initialize() 内にある発振安定待ちの箇所で、OSTCの値が最初から0xffのままで判定不一致の無限ループとなってしまいます。
    まず、リスタートによって0x00になるのではないかと思うのですが・・・
    また、0xffのままでカウントアップもカウントダウンもされません。
    クロック設定のところはfHOCO+fPLLでUSB使用状態にしてコード生成してあります。

    この解決策の情報をどなたかお持ちでしょうか?

Reply
  • NoMaYさん、解答ありがとうございます。
    なるほど、サンプルコード自体がコード生成に対応していなかったのですね。
    他サンプルコードを利用したときは、コード生成に対応していたので盲点でした。
    ご指摘頂いた箇所を修正して、ビルドが正常に通るようになりました。
    追記もありがとうございます。

    そして、その後に別の問題点が発生しました。
    usb_cpu_mcu_initialize() 内にある発振安定待ちの箇所で、OSTCの値が最初から0xffのままで判定不一致の無限ループとなってしまいます。
    まず、リスタートによって0x00になるのではないかと思うのですが・・・
    また、0xffのままでカウントアップもカウントダウンもされません。
    クロック設定のところはfHOCO+fPLLでUSB使用状態にしてコード生成してあります。

    この解決策の情報をどなたかお持ちでしょうか?

Children
No Data