last update: 2025/01
Demo Sample Application Folder:
Application └ _Exclude ├ IP ..... TCP/IPネットワーク通信機能のデモサンプル
Sample | 説明 |
---|---|
IP_ACD_Start | ACD(Address Collision Detection)機能の動作を確認します |
IP_AUTOIP_Start | AutoIPプロトコールを使用してIPアドレスの自動設定を確認します |
IP_DNSClient | ネットワークホスト名を IP アドレスに解決する方法を示します |
IP_MDNS_ServerSample | mDNSサーバー機能の実装方法を示すデモサンプル |
IP_NETBIOS_Start | NETBIOS Nameサービスクライアント機能を確認します |
IP_NonBlockingConnect | TCPソケットをノンブロッキングモードで実装します |
IP_NTPClient | NTPクライアント機能の実装方法を示すデモサンプル |
IP_Ping | ネットワークPINGテストでICMPプロトコールの動作を確認します |
IP_SendMail | SMTPクライアント機能の実装方法を示すデモサンプル |
IP_SNTPClient | SNTPクライアント機能を使用してNTPサーバーからタイムスタンプを取得します |
IP_SpeedClient_TCP | TCPデータパケットの送受信速度パフォーマンスを確認できるサンプルプログラム |
IP_Start | emNet TCP/IPスタックの基本的なスタートアップ手順を示すサンプル |
IP_TCP_TasklessServer | 専用タスク無しで簡単なTELNETサーバー機能を実装します |
IP_VLAN_Start | VLANインターフェースを実装します |
Sample | 説明 |
---|---|
IP_COAP_ClientSample | CoAPクライアントの実装方法を示すデモサンプル |
Sample | 説明 |
---|---|
IP_MQTT_CLIENT_Publisher | MQTT クライアントパブリッシャーの実装方法を示すデモサンプル |
IP_MQTT_CLIENT_Subscriber | MQTT クライアントサブスクライバの実装方法を示すデモサンプル |
Sample | 説明 |
---|---|
IP_FTPClientSample | FTPクライアントのデモサンプル |
BSP |- BSP_IP.c ..................... LANドライバのボード依存の初期化設定ファイル | |- Setup |- IP_Config_RX65N_ETH.c .... LANドライバインターフェース設定ファイル |- IP_FS_emFile.c ........... ファイルシステムインターフェース設定ファイル Config |- IP_Conf.h ............... emNet IPコンフィグレーション設定ファイル |- IP_COAP_Conf.h .......... emNet CoAPコンフィグレーション設定ファイル |- IP_MQTT_CLIENT_Conf.h ... emNet MQTTコンフィグレーション設定ファイル |- FTPC_Conf.h ............. emNet FTPcコンフィグレーション設定ファイル |- SMTPC_Conf.h ............ emNet SMTP Clientコンフィグレーション設定ファイル | |- IO | |- IP_ConfigIO.c ....... デバッグコンソールIOインターフェース設定ファイル | |- OS | |- libNo_OSLayer_RXv2_L.lib ....... OSインターフェース設定ファイル | |- SYS .................... SYS インターフェース設定(ソース・ヘッダ)
Windows └ IP ├ COAP_Server .......... CoAPサーバーのEXEプログラム ├ FTPserver .......... FTPサーバーのEXEプログラム ├ SpeedTestServer ...... TCP速度パフォーマンスチェック用EXEプログラム
マクロ名 | 説明 |
---|---|
ALLOC_SIZE | emNetスタック用メモリプールのサイズ(単位:Byte) |
TARGET_NAME | DHCPクライアントのターゲット名(設定値:"AP-RX65N-0A") |
HW_ADDR | Ethernet MACアドレス |
USE_DHCP | 1:DHCPモードでIPアドレスを自動取得します。 0:マニュアルモード設定、固定IPアドレスを使用します。 |
IP_ADDR | マニュアルモード(DHCP=0)のIPアドレス設定 |
SUBNET_MASK | マニュアルモード(DHCP=0)のサブネットマスクのアドレス設定 |
GW_ADDR | マニュアルモード(DHCP=0)のゲートウエイIPアドレス設定 |
DNS_ADDR | マニュアルモード(DHCP=0)のDNSサーバーのIPアドレス設定 |
マクロ名 | 説明 |
---|---|
ETH_INT_PRIORITY | LANドライバの割り込み優先度(設定値:3) |
プロジェクト設定では「\Application\_Exclude\IP」フォルダはビルド対象外に設定しています。以下のどちらかの方法で動作確認を行うサンプルアプリケーションを選択します。
各テストアプリケーションの動作確認方法はテストサンプルアプリケーションのヘッダのコメント情報を参照ください。
評価ボードのLANポートをテスト用パソコンに接続して、TCP/IPネットワーク通信が正常にできることを確認してください。
ネットワーク環境に合わせて評価ボード側のemNetスタックのコンフィグレーション設定を編集してください。
File: BSP\Setup\IP_Config_RX65N_ETH.c
#define USE_DHCP 1 // Use DHCP client or static IP configuration. // // The following parameters are only used when the DHCP client is not active. // #define IP_ADDR IP_BYTES2ADDR(192, 168, 11, 252) #define SUBNET_MASK IP_BYTES2ADDR(255, 255, 255, 0) #define GW_ADDR IP_BYTES2ADDR(192, 168, 11, 1) #define DNS_ADDR IP_BYTES2ADDR(192, 168, 11, 1)
各テストアプリケーションの動作確認方法はテストサンプルアプリケーションのヘッダのコメント情報を参照ください。テストサーバーのIPアドレスなどコンフィグレーション設定を編集して動作確認を行います。
「IP_Ping.c」ファイルにPINGテストサーバーのIPアドレスを設定します。
#define HOST_TO_PING IP_BYTES2ADDR(192, 168, 1, 4) // IP addr. of host
Debug IO Console:
SEGGER Software Evaluation Sample Eval Board: AP-RX65N-0A (RX65N RXv2 @120MHz) Base: Baremetal (No RTOS) ------------------------------------------------ 0:103 emNet - INIT: emNet init started. Version 3.52.0 0:104 emNet - ********************************************************************* 0:105 emNet - * emNet Configuration * 0:107 emNet - ********************************************************************* 0:108 emNet - * IP_DEBUG: 2 0:108 emNet - * Memory added: 49152 bytes 0:109 emNet - * Buffer configuration: 0:110 emNet - * 12 buffers of 256 bytes 0:111 emNet - * 20 buffers of 1516 bytes 0:111 emNet - * TCP Tx/Rx window size per socket: 11680/8760 bytes 0:112 emNet - * Number of interfaces added: 1 0:112 emNet - * Interface #0 configuration: 0:113 emNet - * Type: ETH 0:114 emNet - * MTU: 1500 0:114 emNet - * HW addr.: 00:0C:7B:47:03:BE 0:115 emNet - ********************************************************************* 0:116 emNet - INIT: Link is down 0:117 emNet - DRIVER: Found PHY with Id 0x7 at addr 0x0 0:123 emNet - INIT: Init completed 5:104 emNet - LINK: Link state changed: Full duplex, 100MHz 5:105 emNet - DHCPc: Sending discover! 5:404 emNet - NDP: Link-local IPv6 addr.: FE80:0000:0000:0000:020C:7BFF:FE47:03BE added to IFace: 0 7:023 emNet - DHCPc: IFace 0: Offer: IP: 192.168.1.11, Mask: 255.255.255.0, GW: 192.168.1.1. 7:104 emNet - DHCPc: IP addr. checked, no conflicts 7:105 emNet - DHCPc: Sending Request. 7:119 emNet - DHCPc: IFace 0: Using IP: 192.168.1.11, Mask: 255.255.255.0, GW: 192.168.1.1. 7:595 emNet - NDP: IPv6 addr.: 2400:4050:A0E0:1F00:020C:7BFF:FE47:03BE added to IFace: 0 8:163 emNet - Sending PING to IP addr. 192.168.1.4 . 8:359 emNet - ICMP echo reply received! 9:164 emNet - Sending PING to IP addr. 192.168.1.4 . 9:379 emNet - ICMP echo reply received! 10:165 emNet - Sending PING to IP addr. 192.168.1.4 . 10:408 emNet - ICMP echo reply received! 11:166 emNet - Sending PING to IP addr. 192.168.1.4 . 11:223 emNet - ICMP echo reply received! 12:167 emNet - Sending PING to IP addr. 192.168.1.4 . 12:245 emNet - ICMP echo reply received! 13:168 emNet - Sending PING to IP addr. 192.168.1.4 . 13:269 emNet - ICMP echo reply received! 14:169 emNet - Sending PING to IP addr. 192.168.1.4 . 14:191 emNet - ICMP echo reply received! 15:170 emNet - Sending PING to IP addr. 192.168.1.4 . 15:215 emNet - ICMP echo reply received! 16:171 emNet - Sending PING to IP addr. 192.168.1.4 .
「segger.com」のIPアドレスを取得します。
File:IP_DNSClient.c
#define HOST_NAME "segger.com"
Debug IO Console:
4:024 emNet - DHCPc: IFace 0: Using IP: 192.168.1.11, Mask: 255.255.255.0, GW: 192.168.1.1. 5:323 emNet - IP addr. 195.122.144.65 resolved from host name "segger.com". 6:325 emNet - IP addr. 195.122.144.65 resolved from host name "segger.com". 7:327 emNet - IP addr. 195.122.144.65 resolved from host name "segger.com".
NTPサーバーから日付時刻情報を取得します。
File:IP_SNTPClient.c
#define NTP_SERVER "us.pool.ntp.org"
Debug IO Console:
4:018 emNet - DHCPc: IFace 0: Using IP: 192.168.1.11, Mask: 255.255.255.0, GW: 192.168.1.1. 4:054 emNet - Requesting time stamp from us.pool.ntp.org: 4:219 emNet - Timestamp received: 3946690368 seconds passed since January 1st 1900.
NTPサーバーから日付時刻情報(UTC)を取得します。
Debug IO Console:
4:023 emNet - DHCPc: IFace 0: Using IP: 192.168.1.11, Mask: 255.255.255.0, GW: 192.168.1.1. 9:055 emNet - --- UTC time: 2025.01.24 06:57:17 --- 14:060 emNet - --- UTC time: 2025.01.24 06:57:22 --- 19:054 emNet - --- UTC time: 2025.01.24 06:57:27 --- 24:059 emNet - --- UTC time: 2025.01.24 06:57:32 --- 29:064 emNet - --- UTC time: 2025.01.24 06:57:37 --- 34:058 emNet - --- UTC time: 2025.01.24 06:57:42 --- 39:063 emNet - --- UTC time: 2025.01.24 06:57:47 ---
「IP_TCP_TasklessServer.c」プログラムを実行してボード側に非タスクモードでTELNETサーバーを実装します。テストPCからTELNETクライエントコマンドを実行して接続を確認します。サンプルプログラムは接続後にTELNETクライエントに「Hello and goodbye...」メッセージを送信して切断します。
パソコン側のDOSプロンプト:
C:\>telnet 192.168.1.12 Hello and goodbye... C:\>telnet 192.168.1.12 Hello and goodbye...
Debug IO Console:
4:013 emNet - DHCPc: IFace 0: Using IP: 192.168.1.11, Mask: 255.255.255.0, GW: 192.168.1.1. 61:495 emNet - New connection accepted for server on local port 23. 74:626 emNet - New connection accepted for server on local port 23.
File: IP_NonBlockingConnect.c (パソコンテストサーバーのIPアドレス設定)
#define SERVER_IP_ADDR IP_BYTES2ADDR(192, 168, 1, 4)
パソコン側「SpeedTestServer.exe」ツールを実行します。
Windows └ IP ├ SpeedTestServer ├ SpeedTestServer.exe ..... TCPテストサーバーサンプル
パソコン側「SpeedTestServer.exe」のコンソール:
TCP/IP Echo server V1.00.00. Compiled 11:26:58 on Sep 29 2023. Waiting for client on port 1234 2025-01-24 16:10:21 : Client connected 2025-01-24 16:10:21 : Client disconnected 2025-01-24 16:10:24 : Client connected 2025-01-24 16:10:24 : Client disconnected 2025-01-24 16:10:26 : Client connected 2025-01-24 16:10:27 : Client disconnected 2025-01-24 16:10:29 : Client connected 2025-01-24 16:10:29 : Client disconnected 2025-01-24 16:10:31 : Client connected 2025-01-24 16:10:32 : Client disconnected 2025-01-24 16:10:34 : Client connected 2025-01-24 16:10:34 : Client disconnected 2025-01-24 16:10:36 : Client connected
Debug IO Console:
4:013 emNet - DHCPc: IFace 0: Using IP: 192.168.1.11, Mask: 255.255.255.0, GW: 192.168.1.1. 4:054 emNet - Connecting using non-blocking socket... 4:390 emNet - Succesfully connected after 336ms and 169 loops! 4:892 emNet - 1 of 1 tries were successful. 6:893 emNet - Connecting using non-blocking socket... 7:251 emNet - Succesfully connected after 358ms and 180 loops! 7:753 emNet - 2 of 2 tries were successful. 9:754 emNet - Connecting using non-blocking socket... 9:811 emNet - Succesfully connected after 56ms and 29 loops! 10:313 emNet - 3 of 3 tries were successful. 12:314 emNet - Connecting using non-blocking socket... 12:350 emNet - Succesfully connected after 36ms and 19 loops! 12:852 emNet - 4 of 4 tries were successful. 14:853 emNet - Connecting using non-blocking socket... 14:873 emNet - Succesfully connected after 20ms and 11 loops! 15:375 emNet - 5 of 5 tries were successful.
「test.mosquitto.org」MQTTブローカーに接続してテストを行います。
File:IP_MQTT_CLIENT_Publisher.c
#define MQTT_BROKER_ADDR "test.mosquitto.org" #define MQTT_BROKER_PORT 1883 #define TOPIC_PUBLISH_QOS IP_MQTT_CLIENT_FLAGS_PUBLISH_QOS2 #define MQTT_CLIENT_NAME "eMQTT_Pub" #define TOPIC_FILTER_TO_PUBLISH "eMQTT" #define PAYLOAD "www.SEGGER.com MQTT_HelloWorld_Sample"
Debug IO Console:
4:013 emNet - DHCPc: IFace 0: Using IP: 192.168.1.11, Mask: 255.255.255.0, GW: 192.168.1.1. 6:454 emNet - APP: Connected to 5.196.78.28, port 1883. 8:981 emNet - APP: -------- 8:981 emNet - APP: Message No. 1: 8:982 emNet - APP: Topic : "eMQTT" 8:982 emNet - APP: Payload: "www.SEGGER.com MQTT_HelloWorld_Sample" 12:654 emNet - APP: -------- 12:654 emNet - APP: Message No. 2: 12:655 emNet - APP: Topic : "eMQTT" 12:655 emNet - APP: Payload: "www.SEGGER.com MQTT_HelloWorld_Sample" 15:254 emNet - APP: -------- 15:254 emNet - APP: Message No. 3: 15:255 emNet - APP: Topic : "eMQTT" 15:255 emNet - APP: Payload: "www.SEGGER.com MQTT_HelloWorld_Sample" 19:557 emNet - APP: -------- 19:557 emNet - APP: Message No. 4: 19:558 emNet - APP: Topic : "eMQTT" 19:558 emNet - APP: Payload: "www.SEGGER.com MQTT_HelloWorld_Sample" 22:556 emNet - APP: -------- 22:556 emNet - APP: Message No. 5: 22:557 emNet - APP: Topic : "eMQTT" 22:557 emNet - APP: Payload: "www.SEGGER.com MQTT_HelloWorld_Sample"
「test.mosquitto.org」MQTTブローカーに接続してテストを行います。
File:IP_MQTT_CLIENT_Subscriber.c
#define MQTT_BROKER_ADDR "test.mosquitto.org" #define MQTT_BROKER_PORT 1883 #define TOPIC_SUBSCRIBE_QOS IP_MQTT_CLIENT_FLAGS_PUBLISH_QOS1 #define MQTT_CLIENT_NAME "eMQTT_Sub" #define TOPIC_FILTER_TO_SUBSCRIBE "eMQTT"
Debug IO Console:
4:014 emNet - DHCPc: IFace 0: Using IP: 192.168.1.11, Mask: 255.255.255.0, GW: 192.168.1.1. 6:332 emNet - APP: Connected to 5.196.78.28, port 1883. 6:581 emNet - APP: Received Property IP_MQTT_PROP_TYPE_TOPIC_ALIAS_MAXIMUM for CONNACK with PacketID 0. 6:582 emNet - APP: Received Property IP_MQTT_PROP_TYPE_RECEIVE_MAXIMUM for CONNACK with PacketID 0. 7:356 emNet - APP: Message (Type: SUBACK, Id: 6583) received. Reason Code: IP_MQTT_REASON_SUCCESS. 7:357 emNet - APP: ---- 7:358 emNet - APP: IN: Message with (Id: 0 | QoS: 0 | Retain: 1 | Duplicate: 0) received for topic "eMQTT" 7:359 emNet - APP: IN: Payload: "Client eMQTT client has disconnected ungracefully" 7:360 emNet - APP: ---- 98:086 emNet - IP_MQTT_CLIENT_Exec: Connection gracefully closed by peer. 98:087 emNet - _Disconnect: closing socket 1 98:088 emNet - APP: Done. 111:395 emNet - APP: Connected to 5.196.78.28, port 1883. 113:502 emNet - APP: Received Property IP_MQTT_PROP_TYPE_TOPIC_ALIAS_MAXIMUM for CONNACK with PacketID 0. 113:503 emNet - APP: Received Property IP_MQTT_PROP_TYPE_RECEIVE_MAXIMUM for CONNACK with PacketID 0. 114:404 emNet - APP: Message (Type: SUBACK, Id: 47968) received. Reason Code: IP_MQTT_REASON_SUCCESS. 114:405 emNet - APP: ---- 114:406 emNet - APP: IN: Message with (Id: 0 | QoS: 0 | Retain: 1 | Duplicate: 0) received for topic "eMQTT" 114:407 emNet - APP: IN: Payload: "Client eMQTT client has disconnected ungracefully" 114:408 emNet - APP: ---- 205:278 emNet - IP_MQTT_CLIENT_Exec: Connection gracefully closed by peer. 205:279 emNet - _Disconnect: closing socket 2 205:280 emNet - APP: Done. 210:656 emNet - APP: Connected to 5.196.78.28, port 1883. 213:198 emNet - APP: Received Property IP_MQTT_PROP_TYPE_TOPIC_ALIAS_MAXIMUM for CONNACK with PacketID 0. 213:199 emNet - APP: Received Property IP_MQTT_PROP_TYPE_RECEIVE_MAXIMUM for CONNACK with PacketID 0. 214:598 emNet - APP: Message (Type: SUBACK, Id: 16592) received. Reason Code: IP_MQTT_REASON_SUCCESS. 214:599 emNet - APP: ---- 214:600 emNet - APP: IN: Message with (Id: 0 | QoS: 0 | Retain: 1 | Duplicate: 0) received for topic "eMQTT" 214:601 emNet - APP: IN: Payload: "Client eMQTT client has disconnected ungracefully" 214:602 emNet - APP: ----
サーバーPC側に「COAP_Server.exe」プログラムを実行して、ターゲット側のプログラムを起動します。
File: IP_COAP_ClientSample.c (サーバーのIPアドレス設定)
#define COAP_PORT IP_COAP_DEFAULT_PORT #define COAP_SERVER "192.168.1.4"
Debug IO Console:
4:013 emNet - DHCPc: IFace 0: Using IP: 192.168.1.11, Mask: 255.255.255.0, GW: 192.168.1.1. 4:053 emNet - Test 0: Sending PING 4:221 emNet - Test 0: Success! 4:221 emNet - Test 1: Sending Discover 4:475 emNet - /obs: Simple observable data. /test: test entry /separate: simple variable with GET with LATE reply /BlockTransfer/ObsData: Observable data block. /ObsSensor: 4:476 emNet - Test 1: Success! 4:476 emNet - Test 2: Sending GET separate 4:991 emNet - 00:00:00 4:991 emNet - Test 2: Success! 4:992 emNet - Test 3: Sending NON GET block of 16 bytes 5:003 emNet - Test data 5:003 emNet - Test 3: Success! 5:004 emNet - Test 4: PUT test 5:026 emNet - Test 4: Success! 5:026 emNet - Test 5: PUT that should fail 5:038 emNet - received error: 4.05 5:038 emNet - Test 5: Success! 5:039 emNet - Test 6: DELETE test 5:050 emNet - Test 6: Success! 5:050 emNet - Test 7: POST test 5:073 emNet - Test 7: Success! 5:073 emNet - Test 8: Observe 5:085 emNet - Obs data 5:085 emNet - GET 1 from Observe completed 15:177 emNet - Obs data 15:177 emNet - GET 2 from Observe completed 25:305 emNet - Obs data 25:305 emNet - GET 3 from Observe completed 35:422 emNet - Obs data 35:422 emNet - GET 4 from Observe completed 45:550 emNet - Obs data 45:550 emNet - GET 5 from Observe completed 45:551 emNet - Test 8: Success!
サーバーPC側に「C:\ftp」フォルダ下のデータをすべて削除して、「FTPServer.exe」プログラムを実行します。評価ボードにSDカードを差し込んで、「IP_FTPClientSample」プログラムを実行します。デバッグコンソールのFTPクライエントの操作ログを確認します
Debug IO Console:
4:071 emNet - DHCPc: IFace 0: Using IP: 192.168.1.11, Mask: 255.255.255.0, GW: 192.168.1.1. 4:100 emNet - APP: Connect to server "Admin@192.168.1.4:21". 4:297 emNet - APP: Connected to 192.168.1.4, port 21. 4:335 emNet - APP: Creating directory "Test". 4:342 emNet - APP: --- Test with old API that needs to CWD into the directory to operate within. 4:343 emNet - APP: Changing to directory "/Test/". 4:349 emNet - APP: List directory (before upload): 4:357 emNet - APP: Data connection established on local port: 1225 4:363 emNet - drw-r--r-- 1 root root 0 Jan 24 2025 . drw-r--r-- 1 root root 0 Jan 24 2025 .. 4:364 emNet - APP: Uploading "Readme.txt". 4:427 emNet - APP: Data connection established on local port: 1226 4:485 emNet - APP: List directory (after upload): 4:492 emNet - APP: Data connection established on local port: 1227 4:497 emNet - drw-r--r-- 1 root root 0 Jan 24 2025 . drw-r--r-- 1 root root 0 Jan 24 2025 .. -rw-r--r-- 1 root root 76 Jan 24 2025 Readme.txt 4:498 emNet - APP: Deleting "Readme.txt". 4:504 emNet - APP: List directory (after delete): 4:512 emNet - APP: Data connection established on local port: 1228 4:516 emNet - drw-r--r-- 1 root root 0 Jan 24 2025 . drw-r--r-- 1 root root 0 Jan 24 2025 .. 4:517 emNet - APP: Changing to parent directory. 4:521 emNet - APP: --- Test with new API using IP_FTPC_CMD_CONFIG that can operate regardless of current directory. 4:523 emNet - APP: List directory (before upload, old API with path parameter): 4:531 emNet - APP: Data connection established on local port: 1229 4:535 emNet - drw-r--r-- 1 root root 0 Jan 24 2025 . drw-r--r-- 1 root root 0 Jan 24 2025 .. 4:536 emNet - APP: Uploading "Readme.txt" to "/Test/Test.txt" (new API). 4:555 emNet - APP: Data connection established on local port: 1230 4:617 emNet - APP: List directory (after upload, new API): 5:631 emNet - APP: Data connection established on local port: 1231 5:635 emNet - drw-r--r-- 1 root root 0 Jan 24 2025 . drw-r--r-- 1 root root 0 Jan 24 2025 .. -rw-r--r-- 1 root root 76 Jan 24 2025 Test.txt 5:636 emNet - APP: Deleting "/Test/Test.txt" (new API). 5:642 emNet - APP: List directory (after delete, new API): 5:648 emNet - APP: Data connection established on local port: 1232 5:651 emNet - drw-r--r-- 1 root root 0 Jan 24 2025 . drw-r--r-- 1 root root 0 Jan 24 2025 .. 5:652 emNet - APP: Delete directory "/Test/" (new API). 5:656 emNet - APP: Done.
FAT32 ファイルシステム