ほぼ初心者です。
北斗電子の評価ボード(HSBRX63NP)を使用して、Ethernetの実装を試みています。
以前こちらでおすすめしていただいた、TCP/IP M3S-T4-Tinyを用いたサンプルプログラム(https://www.renesas.com/ja-jp/software/D6000402.html)をダウンロードし、北斗電子のボード用のサンプルがあったので、そちらのプロジェクトをCS+に変換して使用しています。
このサンプルソフトでターゲットとしているボードは私の使用しているボードとは少し違うようなのです(RXのピン数が違う)が、ほぼそのまま使用できると思っています。
しかし、サンプルソフトで以下の部分を修正して実行したのですが、PCとボードをEthernetで接続して、PCから「ping 192.168.0.3」をしても応答がありません。(telnetも同様)
<修正部分>
・r_bsp/platform.h で「#include "./board/hokutorx63n/r_bsp.h"」をコメントアウトして使用。
・r_config/r_bsp_config.h を使用しているボード用(R5F563NFDDFP)に変更
#define BSP_CFG_MCU_PART_PACKAGE (0x5) //0x5=LQFP/100/0.50
#define BSP_CFG_MCU_PART_CAN_INCLUDED (true)
#define BSP_CFG_MCU_PART_MEMORY_SIZE (0xE) //0xE=2MB/128KB/32KB ※実際は「2MB/256KB/32KB」なのですが、同じ定義がないのでEとした。
#define BSP_CFG_MCU_PART_GROUP (0x2) //0x2=RX63N Group
・board/hokutorx63n/hokutorx63n.h でLED、SWの使用ポートを変更
※上記以外はそのまま
コンパイルもでき、プログラム自体は正常に動作しているよう(?)に見えます。(デバッグしてても、Ether関連のAPIからは正常のステータスが返ってきている。)
気になるのは、LANケーブルを接続せずに、起動すると「callback_ether()」のコールバックが呼ばれ、「pdecode->event_id == ETHER_CB_EVENT_ID_LINK_ON」となっています。
また、ケーブルをつなごうが、外そうが、「callback_ether()」は発生しません。
ちなみに、EtherコントローラのLEDはケーブルをつなげるとLinkが点灯し、外すと消えます。
どこをどうやって確認したらよいのか検討がつかず、悩んでおります。
何かお分かりになる方がいればご教授いただけるた助かります。
love0510さん
失礼な確認でしたら、すみません。
config_tcpudp.cにIPとか登録しました?
/****************************************************************************/
/********************** IP-related definition ***********************/
const UH _ip_tblcnt = 3;
#define MY_IP_ADDR ***,***,***,*** // Local IP address*///※----NAKA IPアドレスの設定
#define GATEWAY_ADDR 0,0,0,0 // Gateway address (invalid if all 0s) */
#define SUBNET_MASK 255,255,255,0 // Subnet mask */
TCPUDP_ENV tcpudp_env =
{
{MY_IP_ADDR},
{SUBNET_MASK},
{GATEWAY_ADDR}
};
P.S.
ほとんど忘れちゃってますので、あまりアドバイスできませんが、サンプルコードを見ててもなかなか使えませんでしたよ。
T4のユーザーマニュアル(R20UW0031JJ0106)をかなり読み込まないと.......汗)
NAKAさん
失礼でもなんでもないですよ。そういった当たり前のところも含めてありえますので(^^;)
config_tcpudp.cは設定してあります。(サンプルそのままです。)
今気づいたのですが、r_pinset.cの「R_ETHER_PinSet_ETHERC0_RMII」のピン設定も変えないといけないのですかね?
とはいっても、どこをどう変えたものか。。
こんにちは、シェルティです。
ご推察のポート設定(r_pinset.c)のコードが怪しいと思います。HSBRX63NP(love0510さん使用)とHSBRX63NB(TCP/IPのサンプル)とで、RX63NマイコンとPHYチップ間を繋ぐRX63N側の端子が異なっている場合、ポート設定(r_pinset.c)のコードを変更する必要があります。まず、ボード回路図を参考にして、RX63NマイコンのどのピンがEtherのPHYチップに繋がっているかを把握しましょう。次にRX63Nのユーザーズマニュアルハードウェア編のマルチファンクションピンコントローラ(MPC)の項目を見て、Etherの端子がすべてEther用の設定値になっているかをポート設定(r_pinset.c)のコードで調べてみましょう。
あとは、パソコンのIPアドレスが192.168.0.xxx (xxx=3以外)で、サブネットが255.255.255.0になっているかを確認しましょう。ボードと同じネットワーク設定になっていないの通信ができません。
あと怪しいのは、r_ether_rx_config.hのETHER_CFG_CH0_PHY_ADDRESSです。PHYチップのデータシートをダウンロードしてきて、PHYチップのPHYアドレス(0~31のどれか)が何番か調べましょう。上記コードでの設定値は31です。異なっている場合はPHYチップの初期化が完了せず結果通信できません。
以上です
ハードの設定も忘れちゃったんで、適当でいい加減なことを書きます。
北斗のサンプルは確か144pinのRX63Nだったと思います。そのサンプルをGR-SAKRA(100pinのRX63N)に書き込んでもだめでした。GR-SAKRAも北斗も同じRMII接続だったはずなので、無改造で確認したいならGR-SAKRA用のサンプルがそのまま使えたりして!
取りあえずお手軽に動かしたいですよねぇ~。GR-SAKURAなら安いので買っちゃうとか!
皆さまアドバイスありがとうございます。
シェルティさんのにらんだ通り、r_pinset.cのポート設定の問題でした。
やはりピン数が違えばポート設定も全くちがうのですね。。
Etherのポートをひとつづつ確認して修正したら、pingが通るようになりました。
ありがとうございました!!
FITはマイコンが変わっても、ソースコードの変更はほとんどないと聞いていたので、この部分は変更する必要がないものだと勝手な思い込みで、ノーマークでした。
いい教訓となりました。
love0510 さん
シェルティです、こんにちは。
うまく動作して良かったです。
端子設定だけはボードによるのでユーザが端子設定のコードを調整する必要が残ってしまいますね。
逆を言えば端子設定さえクリアすれば、FITモジュールはどのRXマイコンボードでも
動くということなのだと思います。
次はSCIのモジュールを組み込んでみると良いと思います。
Etherと同様に端子設定のコードをボードに合わせて書いてあげるだけで、
パソコンとUART通信ができるようになると思います。
フラッシュのモジュールも使いやすくて良いですので試してみると良いと思います。
(フラッシュは端子設定いらないモジュールです)
昔は、新しいマイコンボードを入手してUARTでパソコンにデバッグログを出せるようになるまで
1日くらいはがんばってハードウェアマニュアルを読んでレジスタをいじくったものです。
Etherに至ってはコントローラの仕様を理解してドライバ書いてTCP/IPを移植して
動作確認まで持っていくのに1か月くらいはかかりますね。
今は、新しいRXマイコンがでてきても、ボード入手してから10分で
EtherやUARTが動かせるようになりました。
シェルティさん
アドバイスありがとうございました。
昔は大変だったんでしょうね。。
今は、要領さえおさえてしまえば、簡単に機能が実装できるのはよくわかりました。
まだまだ、悩むことはたくさん出てくると思いますが、そのときはまた、よろしくお願いいたします。