RX72M RSK での TCP/IPプロトコルスタック [M3S-T4-Tiny] を使用した ping 疎通確認

こんにちは、KATA_KANと申します。

RX72M RSK において、スマートコンフィグレータでFITのTCP/IPプロトコルスタック [M3S-T4-Tiny] を導入し、

RX72M RSK に実装されている2つのEthernetコネクタに対し、ping疎通を行いたいのですが、上手く行きません。

CH0(ECAT-IN)側に、IPアドレス:192.168.1.3

CH1(ECAT-OUT)側に、IPアドレス:192.168.1.10

PC(Windows10)側に、IPアドレス:192.168.1.100

を設定し、PC側から各CHにpingを送り、疎通を確認したいです。

スマートコンフィグレータで、r_t4_rx、r_ether_rx などを組み込み、コンフィグもそれらしく行ってみたのですが、

そもそも、LANケーブルを挿しているにも関わらず、Ethernet コネクタのLEDが点滅すらしていない為、

根本的に何か間違っているのではないかと感じています。

添付は、現状のソフトウェアコンポーネント設定のレポートと初期化を行っているmain関数(FreeRTOSから実行)なります。

report_20220303_110520.pdf

ビルド環境は、e2studio 7.8.0/CCRX v3.04.00 です。

大変恐縮ですが、ご助言を頂けますと幸いです。

PS. FreeRTOSカーネル側にも、IPアドレスの設定項目がある為、FreeRTOSとM3S-T4-Tinyを同時に使う場合は別途設定が必要だったりするのでしょうか?

  • KATA_KANさん

    シェルティです。こんにちは。

    T4は私が書いたソフトですね。本件支援できると思います。

    T4は20年近くメンテし続けてちょっとコードの構造が汚いですが、ベアメタルでも動くTCP/IPとしてちょっとした実験に使ったり量産製品に適用していただいたりなどの実績があります。

    本件RX72M RSKで動作可能になるまでのガイドを3/7を目途に作ってみようと思います。

    スマートコンフィグレータでピン設定周りがだいぶ改善できたのですが、ボード依存の設定がまだまだ自動化されておらず、たぶんボードに依存する設定(EtherドライバにあるMII/RMIIの設定、PHYチップのアドレス値、などなど)がRX72M RSKにあってないのだと思います。

    あと、FreeRTOSカーネルの設定ファイルにあるIPアドレスは気にしなくてOKです。FreeRTOSカーネルの上位にFreeRTOS+TCPを載せたりする際に使う値で、FreeRTOSカーネルのみを使う場合は特に使わない値です。

    以上です

  • >シェルティさん

    リアクションありがとうございます!3/7 頃にガイドを展開頂けるとのことで、大変期待しております!

    ちなみに、以下のEthernetモジュール(r_ether_rx)リファレンスを見ながら、ピン配置を見直したところ、

    一部不一致だった箇所があった為、訂正したところ、EthernetコネクタのLEDが点いていない状況からは脱しました。

    (ping疎通は相変わらず出来ないですが…)

    https://www.renesas.com/us/ja/document/apn/rx-family-ethernet-module-using-firmware-integration-technology

    ※ちなみに、上記リファレンスの P63「表 4.6 RSK+RX72M のチャネル 1 の端子設定例」の中の PMGI0_MDC、PMGI0_MDIO、ET0_MDC、ET0_MDIO は PMGI1_MDC、PMGI1_MDIO、ET1_MDC、ET1_MDIO の間違いでしょうか?

    >>あと、FreeRTOSカーネルの設定ファイルにあるIPアドレスは気にしなくてOKです。FreeRTOSカーネルの上位にFreeRTOS+TCPを載せたりする際に使う値で、FreeRTOSカーネルのみを使う場合は特に使わない値です。

    上記承知しました!一旦、r_t4_rx、r_ether_rx の設定確認に注力しようかと思います。

  • KATA_KANさん

    シェルティです、こんにちは。

    コメントありがとうございます。3/7まで少しお待ちいただくことになりすみません。RX72Mのボードが事務所にしかなくリモートワークしているので出社する必要がありますね。定型的なテストはGitLabを使って全自動でマイコンボードを制御して実行できるようにCI/CDを組んだり、リモートデスクトップにマイコンボードをたくさん繋いでおいて自宅でリモートでデバッグしたりする環境整備を進めたので、大概の開発や評価はリモートだけでできるようになったのですが、RX72Mボードは2個のLANポートがついていて両方LANケーブルを挿した状態のものをリモートで使えるようにはしてなかったので、出社してハードウェアを調整する必要があります。このあたりのマイコンシステムにおけるリモート対応のCI/CD環境の作り方などももしかすると最近の社会情勢を鑑みるに需要があるのかもしれないなあとアプリケーションノートにしてみようか考えています。

    話を戻しますと、2ch平行でping通信可能なことを以前確認したことがあるので設定がうまくいけばKATA_KANさんの環境でも問題なく2ch同時通信できると思います。チャネル数はT4としては可変になっておりまして、これも以前、RX72MのLANポート2chに加えRX72MのSDHIにSDIOタイプの無線LANモジュールを繋いで3チャネル同時でTCP/IP通信、なんていうものも作れます。

    あとXXX_MDC/MDIOですが、IICバスのようにプロトコル上でチャネル0か1を指定するタイプの通信線でして、物理的にはチャネル0側のコントローラにぶら下がっているので、リファレンスのP63の説明は合っています。

    以上です

  • KATA_KANさん

    シェルティです。こんにちは。

    ガイドですがもう2日お時間いただきたいです。3/9にまた回答します。

    以下のように私の環境では2ch同時動作OKでした。が、いくつかEtherドライバコード上のコメントが間違っており修正が必要に思います。このあたりどのように進めるべきか開発チームと相談してからガイドを提示いたします。

    以上です

  • KATA_KANさん

    シェルティです。こんにちは。RX72M RSKでLANポートを2ch同時に利用してpingで導通確認を行うためのガイド作成しました。

    1. e2 studioで新規プロジェクト作成

    2. Target Board に RSKRX72M を選ぶ -> Hardware Debugは持っているエミュレータを選択(RSKRX72M同梱なのはE2 Lite) -> 終了ボタン
    -> Target Board 選択時に "Download additional boards" を押して最新版のBDF(Board Description File)をダウンロードしておく
    -> 設定値を以下に示す

    3. スマートコンフィグレータの画面が出る(出ない場合は、プロジェクトエクスプローラで *.scfg をダブルクリックする)
     -> 初回起動時はRX Driver Packageのダウンロードが促されるので最新版をダウンロードしておく
     -> クロックタブでクロック設定値を確認。変更しなくてもOKだが念のため動作OKの状態の設定値を以下に示す

     -> コンポーネントタブで プラスマーク付きの青色キューブアイコンを押し、 r_t4_rx v210 を登録
      -> r_t4_rx の依存コンポーネント(Etherドライバ r_ether_rxも含む)が登録される
      -> r_t4_rx の "Channel number your system has" の値を 1 から 2 に変更 ※1
      -> r_ether_rx の設定を以下に合わせる ※1

    # Configurationsの各項目にカーソルを合わせるとボード毎の設定値が表示されるが、RSKRX72Mの値は間違っているので注意。改善予定。本ガイドのスクリーンショットでの値を使用すること。

      -> 端子タブで、ETHERC_MII0の端子設定を行う # ワーニングが出ているがOK。※1


      -> 端子タブで、ETHERC_MII1の端子設定を行う # ワーニングが出ているがOK。※1


      -> スマートコンフィグレータ上でコード生成ボタンを押す (e2 studio 2021-10以降はこの操作は不要。クリーンビルド時に必要に応じて自動でコード生成する)

    4. main() を 2ch 対応のRX64M用のサンプルで置き換え
    www.renesas.com/.../rx-family-tcpip-embedded-system-m3s-t4-tiny-introduction-guide-firmware-integration-technology
     以下3ファイルを作成中のプロジェクトの\srcフォルダにコピーする。
      \r20an0051xx0210-rx-t4-fit\FITDemos
      \rskrx65n_2mb_tcp_blocking.zip
      \rskrx65n_2mb_tcp_blocking\src\tcp_blocking
       ・main.c
       ・echo_srv_tcp_blocking.c
       ・echo_srv.h
    代わりに元からあったmain()を持っているファイルを削除する。プロジェクト名.c のファイルが存在するはず。

    5.デバッガ接続
     e2 studio 画面上部左側の虫アイコンを押す
     エミュレータから給電する設定になっているので、ボードにACアダプタから給電している場合はACアダプタを外す。
     e2 studio 画面上部メニューバーのRenesas Views -> デバッグ -> Renesas Debug Virtual Consol を開く
     ボードの2chのLANコネクタをDHCP有効なネットワークのハブまたはルータに接続
     e2 studio 画面上部の再開ボタンを2回押す
     Renesas Debug Virtual Consolに以下のようなログが出ればOK。
     同じネットワークに接続されたPCからDHCP.ipaddrにping送信することで導通確認可能

    ^^>>>user_cb<<< ch:1,eventID = ETHER_EV_LINK_ON
    ^^>>>user_cb<<< ch:0,eventID = ETHER_EV_LINK_ON
    ^^>>>user_cb<<< ch:1,eventID = DHCP_EV_INIT
    ^^>>>user_cb<<< ch:0,eventID = DHCP_EV_INIT
    ^^>>>user_cb<<< ch:1,eventID = DHCP_EV_LEASE_IP
    DHCP.ipaddr[4] 10.166.39.36
    DHCP.maskaddr[4] 255.255.252.0
    DHCP.gwaddr[4] 10.166.36.1
    DHCP.dnsaddr[4] 10.166.255.133
    DHCP.dnsaddr2[4] 10.200.33.1
    DHCP.macaddr[6] 74:90:50:00:79:79
    DHCP.domain[0]

    ^^>>>user_cb<<< ch:0,eventID = DHCP_EV_LEASE_IP
    DHCP.ipaddr[4] 10.166.38.161
    DHCP.maskaddr[4] 255.255.252.0
    DHCP.gwaddr[4] 10.166.36.1
    DHCP.dnsaddr[4] 10.166.255.133
    DHCP.dnsaddr2[4] 10.200.33.1
    DHCP.macaddr[6] 74:90:50:10:FE:77
    DHCP.domain[0]


    ※1: 将来ボードに合わせて自動設定されるよう改善予定。

    以上です

  • >シェルティさん

    ガイド作成ありがとうございます。

    ですが、こちらで使っているe2studioが、v7.8.0なのと、DHCPサーバをすぐに用意出来ず、一部実行出来ない箇所があった為、いくつか確認させてください。(e2studio 2022-01版をインストールしてを使おうとしましたが、ユーザ名が日本語の為かビルド時にエラーが発生してしまい、そちらの導入は一旦断念しました(会社PCでユーザ名変更が困難)。※v7.8.0でのビルドだと、同現象発生せず。HardwareDebugフォルダ内のmakefileはv7.8.0と2022-01版で同じようなのですが・・・別件なのでこちらは一旦保留します。)

    1. 手順2で Target Board を選択していますが、e2studio v7.8.0 では、CPUの選択しか出来ないようです。ここで、「R5F572MNDxBD」を選択すれば、同じ意味となりますでしょうか?

    2. DHCP設定の場合の例となっていますが、私の環境ではDHCPサーバが直ぐには用意出来ない為、それぞれに固定IPを設定して確認をしたいと考えているのですが、このサンプルプログラムで、固定IPを設定した上での疎通確認は可能でしょうか?(T4の設定を変えるだけでいけますでしょうか?)

  • KATA_KANさん

    シェルティです。こんにちは。

    >>e2studio 2022-01版をインストールしてを使おうとしましたが、ユーザ名が日本語の為かビルド時にエラーが発生してしまい

    なんと。そうなのですね。お手数おかけします。ちょっとできたらe2 studioチームをつついてみようと思いました。

    >>1. 手順2で Target Board を選択していますが、e2studio v7.8.0 では、CPUの選択しか出来ないようです。ここで、「R5F572MNDxBD」を選択すれば、同じ意味となりますでしょうか?

    はい。同じ意味になりますが、e2 studio v780だとスマートコンフィグレータで調整してくれる範囲が限定的になってしまいますね。どのくらい限定的か覚えてないので、少し私の方でv780をインストールして試してみます。おそらくですがガイド通りに手作業でスマートコンフィグレータの設定を施していけばプログラムコード自体は等価になり、動作確認も可能です。

    >>2. DHCP設定の場合の例となっていますが、私の環境ではDHCPサーバが直ぐには用意出来ない為、それぞれに固定IPを設定して確認をしたいと考えているのですが、このサンプルプログラムで、固定IPを設定した上での疎通確認は可能でしょうか?(T4の設定を変えるだけでいけますでしょうか?)

    はい。問題ないです。T4(r_t4_rx)の設定値でDHCPをON/OFFする項目が、スマートコンフィグレータ上のコンポーネントタブにありますので、それをOFFにすれば、固定IPアドレスにできます。OFFにしたときにそれまでグレーアウトされていたIPアドレスの設定項目がチャネル毎に出てくると思います。

    以上です

  • > シェルティさん

    ありがとうございます!

    上記ガイドを参考に、無事に上記サンプルプログラムを動作させ、固定IPでRX72M RSKの2ポートに対しping導通が確認出来るようになりました!

    これからFreeRTOS上に移植し、同様の作業が出来るか確認しようかと思っていますが、その際、何か気を付ける点などはありますでしょうか?

  • KATA_KANさん

    シェルティです。こんにちは。

    ご連絡ありがとうございます。うまく動いてよかったです!

    次の注意点ですが、e2 studio v780だと新規プロジェクト作成時にFreeRTOS(Kernel Only)が選べなかったように思います。なので、手作業でFreeRTOSのソースコードを1個ずつプロジェクトに登録していく必要があり少々面倒ですね。あとシステム起動時に最初からあるFreeRTOS用のタスクやセマフォはスマートコンフィグレータ上で設定できるようにしてあるのですがこのあたりの便利機能が使えません。

    以下スクリーンショットの左の方のプロジェクトツリーを参考に、必要なソースコードを手動で登録していけばe2 studio v780でもFreeRTOSは使えると思います。同じ手順でT4も組み込めます。もしなにか壁にあたったらまたガイド考えますのでご連絡ください。

    以上です

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

    > (e2studio 2022-01版をインストールしてを使おうとしましたが、ユーザ名が日本語の為かビルド時にエラーが発生してしまい、そちらの導入は一旦断念しました(会社PCでユーザ名変更が困難)。

    64ビット版e2studioの件ですが、以下を試されたことはありますか?もし無ければ試してみるとどうなりますか?(最近、他のスレッドで知ったFAQです。)

    英数字以外の文字(全角、記号など)を含むユーザ名でe² studioを動かすとビルドエラーが出たり、デバッガが動きません。
    ja-support.renesas.com/knowledgeBase/20359467