こんにちは。ロジナカといいます。よろしくお願いします。今回RXを使ったイーサネット通信に初めて挑みます。なのでイーサネット通信"超"初心者です。スタートとしてGit-Hubに紹介がある記事をもとにコードを入力したのですがうまく動作しません。ある程度自分で戦ってはみたもののもはやバンザイ状態なので、イーサネット通信の"達人"様からアドバイスもらえますととてもありがたいです。
・もとにした記事→https://github.com/renesas/rx72n-envision-kit/wiki/1-Ether-TCP-IP
・ベアメタルでのイーサネット通信を習得したい
・ターゲット:RX72N Envision Kit
・e2studio 2022-07 + CC-RX v3.04.00
・ソースコード(添付します。ほとんど記事のまんまです。ただ記事のままだどビルドが通らないので多少改変しています)
※改変した点: 記事のままだと t4_driver.cにて r_tsip_rx_if.h がないと怒ってくるので、スマートコンフィギュレータから r_tsip_rx コンポーネントを追加しています。
・症状 GitHub記事ですと、出力結果が
Hello World ^^>>>user_cb<<< ch:0,eventID = ETHER_EV_LINK_ON ^^>>>user_cb<<< ch:0,eventID = DHCP_EV_INIT ^^>>>user_cb<<< ch:0,eventID = DHCP_EV_LEASE_IP DHCP.ipaddr[4] 192.168.1.207 DHCP.maskaddr[4] 255.255.255.0 DHCP.gwaddr[4] 192.168.1.1 DHCP.dnsaddr[4] 192.168.1.1 DHCP.dnsaddr2[4] 0.0.0.0 DHCP.macaddr[6] 74:90:50:00:79:03 DHCP.domain[0]のようになるとのことですが、私の環境だと
Hello World ^^>>>user_cb<<< ch:0,eventID = ETHER_EV_LINK_ON ^^>>>user_cb<<< ch:0,eventID = DHCP_EV_INIT ^^>>>user_cb<<< ch:0,eventID = DHCP_EV_LEASE_IP DHCP.ipaddr[4] 192.168.1.207 DHCP.maskaddr[4] 255.255.255.0 DHCP.gwaddr[4] 192.168.1.1 DHCP.dnsaddr[4] 192.168.1.1 DHCP.dnsaddr2[4] 0.0.0.0 DHCP.macaddr[6] 74:90:50:00:79:03 DHCP.domain[0]
Hello World ^^>>>user_cb<<< ch:0,eventID = ETHER_EV_LINK_ONで表示が止まってしまい、まてどくらせどそこから先が表示されません。自力で調査した結果:・LAN環境は問題ありません(HUBが壊れていたとか、LANケーブルが断線していたとかそういうオチは無し)・コード中 lan_open() tcpudp_get_ramsize() tcpudp_open() の3つの関数がありますが、どれも正常な値ないしE_OKが返されています。すみませんが、アドバイス頂けますととてもうれしいです(RXを使ったイーサネット通信をなんとかものにしたいので...)よろしくお願いします。RX72N_EnvisionTest_C1.zip
Hello World ^^>>>user_cb<<< ch:0,eventID = ETHER_EV_LINK_ON
TO : ロジナカさん
モッチーです、はじめまして。
コードの内容を確認させて頂きました。t4_driver.cにてTSIP FITモジュールのAPI関数を呼び出しているのですが、R_TSIP_Open関数を呼び出す前にこれらのAPI関数が呼び出されているので、実行に失敗しているようです。main関数内でlan_open関数を実行する前にR_TSIP_Open関数を実行して、TSIP機能を使用可能な状態にしておくと上手くいくと思います。コードを見る限りEthernetとTCP/IP関連の設定は正しくできていると思います。
#include "r_tsip_rx_if.h"
....
R_TSIP_Open(NULL, NULL);
以上よろしくお願いいたします。
モッチー様
さっそくのご返信ありがとうございます!仰せの方法でできました!pingも通りました! これでRXを使ったイーサネットソフト開発の”海”へ船出できます!ありがとうございますっっ!
(出航したものの、いきなり座礁する可能性”大”ですが、その時は懲りずにおつきあい下さるとうれしいです!)
Hello World**R_TSIP_Open() success**lan_open() success.T4 work size=11276 OK**tcpudb_open() success.^^>>>user_cb<<< ch:0,eventID = ETHER_EV_LINK_ON^^>>>user_cb<<< ch:0,eventID = DHCP_EV_INIT^^>>>user_cb<<< ch:0,eventID = DHCP_EV_LEASE_IPDHCP.ipaddr[4] 192.168.1.73DHCP.maskaddr[4] 255.255.255.0DHCP.gwaddr[4] 192.168.1.1DHCP.dnsaddr[4] 192.168.1.1DHCP.dnsaddr2[4] 0.0.0.0DHCP.macaddr[6] 74:90:50:10:FE:77DHCP.domain[0]
Microsoft Windows [Version 10.0.18363.1379](c) 2019 Microsoft Corporation. All rights reserved.C:\Users\xxxxxxx\Desktop>ping 192.168.1.73192.168.1.73 に ping を送信しています 32 バイトのデータ:192.168.1.73 からの応答: バイト数 =32 時間 <1ms TTL=80192.168.1.73 からの応答: バイト数 =32 時間 <1ms TTL=80192.168.1.73 からの応答: バイト数 =32 時間 <1ms TTL=80192.168.1.73 からの応答: バイト数 =32 時間 <1ms TTL=80192.168.1.73 の ping 統計: パケット数: 送信 = 4、受信 = 4、損失 = 0 (0% の損失)、ラウンド トリップの概算時間 (ミリ秒): 最小 = 0ms、最大 = 0ms、平均 = 0ms
モッチーです、お世話になっております。
無事pingが通るようになって良かったです。かふぇルネの内容はよく見ているので、また何か困ったことあったら書き込んでみてください。私以外にもEthernetとTCP/IPに詳しい人がいると思うので、解決の手助けになると思います。