RX63N イーサネット通信のサンプルプログラムでpingが返ってこない

こんにちは。

HSBRX63NBを使用して、イーサネット通信がしたいのです。

こちらの方の質問(https://japan.renesasrulz.com/cafe_rene/f/forum5/3760/rx63n-ethernet )と似ている内容になってしまうのですが、

現在イーサネット通信のサンプルプロブログラム(https://github.com/renesas-rx/gr-sakura)のtcp_nonblocking_sampleをHEWにて実装しています

サンプルの以下の部分を修正して実行したのですが、PCから「ping 192.168.1.3」をしても応答がありません。(PC-ハブ-ボードをイーサネットで接続)

プログラムは正常動作しているようには見えますが、pingの応答はありません。

EtherコントローラーのLEDはACTIVITYが点灯し、他のLEDは定期的にチカチカしています。ケーブルを外すとチカチカしなくなりますが、ACTIVITYは点灯したままです。

 

【修正】

・r_ether_rx_config_reference.h

ETHER_CFG_CH0_PHY_ADDRESS 0→31  

ETHER_CFG_CH0_PHY_ACCESS 1→0 

 

・r_bsp_config.h

BSP_CFG_MCU_PART_PACKAGE(0x5)→(0x3)// FB = 0x3 = LQFP / 144 / 0.50

BSP_CFG_MCU_PART_MEMORY_SIZE(0xB)→(0xE)// E = 0xE = 2MB / 128KB / 32KB

 

・config_tcpip.c

_t4_dhcp_enable = 1→0 // DHCPサーバは使用していないので

MY_IP_ADDR0 192,168,0,3→193,168,1,3 //ちなみにPCのIPアドレスは「192.168.1.1」に設定

 

・r_pinset.h

以下を追加

PORTC.PMR.BIT.B4 = 0; //汎用
PORTC.PDR.BIT.B4 = 1; //出力使用
PORTC.PODR.BIT.B4 = 1; // NRST信号をHigh(取扱説明書に「NRST信号をHighにした後、ご使用下さい」とあったので)


MPC.PA6PFS.BYTE = 0x11U; // EXPORT
PORTA.PMR.BIT.B6 = 1U;
MPC.PA7PFS.BYTE = 0x11U; // WOL
PORTA.PMR.BIT.B7 = 1U;

 

 

 

似ている質問ではr_pinset.cを修正していましたので、ハードウェアマニュアルで確認しましたが、ここは合ってそうです。

また、ETHER_CFG_CH0_PHY_ADDRESSに関してもデータシート(LAN8700IC)を確認しました。

デフォルトで31らしいのですが、データシートを見る限り18かとも思ったので試してみましたが、動作に変わりはありませんでした。

 

何をしたら良いのかがわからず、悩んでいます。

何かお分かりになる方がいればご教授いただきたいです。

 

[追記]

・r_ether_rx_config.h の ETHER_CFG_USE_LINKSTA を1から0に修正

・r_pinset.c の MPC 設定を修正

・現状のイーサネット用LEDは「SPEED100」「LINK」「FDUPLEX」が点灯、「ACTIVITY」が消灯状態。ケーブルを外すと全て消灯する。

・ether_callback.c の callback_ether 関数が呼び出されない。

Parents
  • shinaさん

    こんにちは、モッチーです。

    何点に気になる箇所がありました。

    r_ether_rx_config_reference.cは、r_ether_rx_config.hのことでしょうか?

    その場合、ご使用されているボードでは、マイコンのET_LINKSTA端子がPHY-LSI(LAN8700IC)と接続されていますか?

    接続されていない場合は、r_ether_rx_config.h内のETHER_CFG_USE_LINKSTAを'0'に設定しないと正常に動作しないと思います。

    ETHER_CFG_USE_LINKSTAが'1'の場合は、ET_LINKSTA端子を使用してリンクステータスの変化を確認します。

    ETHER_CFG_USE_LINKSTAが'0'の場合は、PHY-LSIのレジスタを読み出してリンクステータスの変化を確認します。

    なので、マイコンのET_LINKSTA端子がPHY-LSIと接続されていない場合は、ETHER_CFG_USE_LINKSTAを'0'に設定して使用すべきだと思います。

     

    あと、config_tcpip.cの_t4_channel_numは'1'の気がします。

    また、NRST信号をHighにした後にウェイト処理は入れていますか?

  • マイコンのET_LINKSTA端子がPHY-LSI(LAN8700IC)と接続されているかどうかですが、おそらく接続されていないので、
    ETHER_CFG_USE_LINKSTA を0に変更しました。

    しかし、動作は変わりませんでした。



    ちなみに r_ether_rx_config_reference.h と r_ether_rx_config.h は同じことが書かれていたのでr_ether_rx_config_reference.hを削除しました。
  • shinaさん

    こんにちは、モッチーです。

    動作は変化しませんでしたか…ちなみに、GitHubのソースコードのMPCの設定と、使用されているボードのMPCの設定は確認されましたか?

    Ethernet用に使用されている端子が違う場合はサンプルコードが正常に動作しません。

    以上よろしくお願いします。

  • モッチーさん。
    返信ありがとうございます

    r_pinset.cは合ってそうと書いておきながら、なんと間違っていました。お恥ずかしい。

    MPCの設定をボードの端子に修正したところ、イーサネット用LEDの「SPEED100」「リンク」「FDUPLEX」が点灯し、「ACTIVITY」が消灯した状態になりました。

    しかし、pingは返ってきません…

     

     

    ちなみに、GitHubのソースコードのMPCの設定は

    REF50CK0
    RMII0_TXD_EN
    RMII0_TXD1
    RMII0_TXD0
    RMII0_RXD1
    RMII0_RXD0
    RMII0_RX_ER
    RMII0_CRS_DV
    ET0_MDC
    ET0_MDIO

    この10個の設定を行っているのですが、ボードの取扱説明書のイーサネットコントローラー(36P)信号表にはREF50CKがなかったのでそれ以外を修正しました。

  • shinaさん

    こんにちは、モッチーです。

    おそらく、信号表のピン番号69(P76)がREF50CK0として使用されていると思います。

    ここのMPCの設定を変更してpingが返ってくるか確かめてもらえますか。

    以上よろしくお願いします。

  • モッチーさん。
    返信ありがとうございます。

    REF50CK0 の設定を P76 に変更しましたが、ping は返ってきませんでした。
  • Shinaさん

    こんにちは、モッチーです。

    むむ…そうでしたか…ちなみに、HEW上のデバッグコンソールには何か文字列が出力されていますか?

    "ETHER_EV_LINK_ON"のような文字列が出力されていませんか?

    以上よろしくお願いします

  • モッチーさん。
    返信ありがとうございます。

    HEW上のデバッグコンソールには
    Reset CPU
    Flash memory writing ...
    Flash memory writing ... OK
    と、あるだけですね・・・
  • Shinaさん

    こんにちは、モッチーです。

    なるほど…では、r_t4_driver_rxのether_callback.c内のcallback_link_on関数にブレークポイントを貼って、プログラムを動かしてみてその関数でプログラムが止まるかどうか確認することってできますか?

    以上よろしくお願いします

  • おはようございます。モッチーさん。
    返信ありがとうございます。返信が遅くなりました。

    callback_link_on関数にブレークポイントをはって、動かしてみましたが、この関数でプログラムは止まりませんでした・・・
Reply
  • おはようございます。モッチーさん。
    返信ありがとうございます。返信が遅くなりました。

    callback_link_on関数にブレークポイントをはって、動かしてみましたが、この関数でプログラムは止まりませんでした・・・
Children
  • shinaさん、はじめまして。Hosです。

    gr-sakuraのサンプルプログラムではないですが、こちらのスレッドがRX63Nでpingを通そうとしているものがあります。
    残念ながら最後は技術サポートに問い合わせとなってしまっていますが、参考にならないでしょうか。
    japan.renesasrulz.com/.../16170
  • Hosさん。返信ありがとうございます。

    確認してみます。

     

    [追記]

    確認してみましたが、プログラムの修正はほぼ同じことをしていると思われます。

  • shinaさん

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

    RXマイコン用のTCP/IP(T4)の設計者です。
    過去このボード(HSBRX63NB)向けに作ったサンプルの動作確認してみたところ
    正しく動きましたので配布します。内蔵のソフトがそれぞれ少し古いと思いますが、shinaさんの
    手元にあるプロジェクトとソースコードを比較していくことでその差分から原因が割り出せるのではと思います。

    github.com/.../HSBRX63NB_TCPIP_ECHO

    以上です
  • シェルティさん。
    返信ありがとうございます。

    自分のソースコードと比べてみます。
  • Shinaさん

    こんにちは、モッチーです。連絡遅れてすみません。

    確認ありがとうございます。callback_link_on関数で止まらないということは、正常にリンクアップしてないのでパケットを送れない状態ということですね。

    PHYのアドレス設定やET0_MDC、ET0_MDIOの端子設定が正しいかを確認してみてください。

    またボードの設定はよくわかっていないのですが、MDC、MDIOの信号がPHY-LSIに届いているのかが気になります…

     

    あとは、シェルティさんがサンプルコードをアップロードしているので、それと比較しながら設定で違っている部分がないかを確認するのが良いかと

  • シェルティさん。
    サンプルありがとうございます。

    自分のソースコードと比較してみましたが、ほとんど違いがみられませんでした。

    ただ比較していて思い出したのですが、t4_driver.c の
    void ena_int(void)
    {
    tcpip_flag = 1;
    }
    void dis_int(void)
    {
    tcpip_flag = 0;
    }
    の部分がビルドエラー「 Declaration is incompatible with "ER v3_ena_int(UINT)" (declared at line 1465 of "C:\NORTi4forRX\INC\kernel.h")」をだしたので、それぞれ ena_int_t4 , dis_int_t4 に変更してビルドしていました。それに合わせ、 tcp_api.c , udp.c の ena_int , dis_int を ena_int_t4 , dis_int_t4 に変更しています。

    このくらいしか、違いが見つけられませんでした。これらの変更はよくありませんか?

    ちなみに、r_pinset.c (MPS設定)は一致していました。
  • モッチーさん。
    返信ありがとうございます。

    シェルティさんのサンプルと見比べましたが、端子設定などは一致していました。
    PHYのアドレス設定が ETHER_CFG_CH0_PHY_ADDRESS 31 ではないのでしょうか・・・

    PHY-LSI(LAN8700IC)のデータシートを頑張ってみてみたいと思います。
  • shina さん、こんにちは。
    自分が、GR-SAKURAを使った際に、新規で作成し、BSP(an-r01an1685jj0380-rx-bsp)にFitモジュール(r_ether_rx_v1.15.zip)を組み込んだ時の情報なので、参考になればと思い書き込みます。
    1.r_ether_rx_config.hの編集
    ・ETHER_CFG_MODE_SEL (0) → (1) インタフェース設定。RMIIを選択
    #define ETHER_CFG_CH0_PHY_ACCESS (1) → (0)
    #define ETHER_CFG_LINK_PRESENT (0) → (1)
    2.セクションの開始アドレスを設定
    0x00010000に B_ETHERNET_BUFFERS_1 B_RX_DESC_1 B_TX_DESC_1 を設定
    3.r_bsp\board\grsrx63n\hwsetup.cに#include "r_ether_rx_if.h"とR_ETHER_PinSet_ETHERC0_RMIIの処理を追加(サンプルからコピー)
    はじめは、R_ETHER_PinSet_ETHERC0_RMII()の処理だけを追加しましたが、
    Includeが無く、#if (ETHER_CFG_USE_LINKSTA == 1)の部分が有効にならなかった。


    3.の部分で原因が分からず苦戦しました。

  • HiRoSan さん。
    返信ありがとうございます。

    いただいた意見において、ETHER_CFG_LINK_PRESENT  の変更以外はすでに修正・対応していました。
    しかし、ETHER_CFG_LINK_PRESENT を1に変更しても、現状のままでした・・・