目次

last update: 2025/03

embOS RTOS + 各種ミドルウェアサンプル
第4章: TCP/IPネットワーク通信
評価ボード:AP-RX72N-0A




テストサンプル

Demo Sample Application Folder:

Application
 └ _Exclude
     ├ IP  ..... TCP/IPネットワーク通信機能のデモサンプル

Windows   .............. テスト用PCツール
 ├ IP   ............... TCP/IPサンプルの動作確認用テストツール

emNet (IP/UDP/TCP/TELNET/TFTP/mDNS/VLAN/HTTPd)

Sample説明
IP_ACD_StartACD(Address Collision Detection)機能の動作を確認します
IP_AUTOIP_StartAutoIPプロトコールを使用してIPアドレスの自動設定を確認します
IP_DHCPServerDHCPサーバー機能の実装方法を示すデモサンプル
IP_DNSClientネットワークホスト名を IP アドレスに解決する方法を示します
IP_MDNS_ServerSamplemDNSサーバー機能の実装方法を示すデモサンプル
IP_NETBIOS_StartNETBIOS Nameサービスクライアント機能を確認します
IP_NonBlockingConnectTCPソケットをノンブロッキングモードで実装します
IP_NTPClientNTPクライアント機能の実装方法を示すデモサンプル
IP_PingネットワークPINGテストでICMPプロトコールの動作を確認します
IP_SendMailSMTPクライアント機能の実装方法を示すデモサンプル
IP_SHELL_StartTELNETサーバー(emNet Shellコンソール)を実装します
IP_SimpleServer簡単なTELNETサーバーを実装します
IP_SNMP_AGENT_StartSNMPエージェントの実装方法を示すデモサンプル
IP_SNTPClientSNTPクライアント機能を使用してNTPサーバーからタイムスタンプを取得します
IP_SpeedClient_TCPTCPデータパケットの送受信速度パフォーマンスを確認できるサンプルプログラム
IP_StartemNet TCP/IPスタックの基本的なスタートアップ手順を示すサンプル
IP_TCP_TasklessServer専用タスク無しで簡単なTELNETサーバー機能を実装します
IP_UDPDiscoverUDPポート経由でターゲットデバイスの情報を確認します
IP_VLAN_StartVLANインターフェースを実装します
IP_TFTPClientSampleTFTPクライアント機能の実装方法を示すデモサンプル
IP_TFTPServerSampleTFTPサーバー機能の実装方法を示すデモサンプル
IP_WebserverSampleHTTPサーバーを実装したデモサンプル

emNet CoAP

Sample説明
IP_COAP_ClientSampleCoAPクライアントの実装方法を示すデモサンプル
IP_COAP_ServerSampleCoAPサーバーの実装方法を示すデモサンプル

emNet MQTT

Sample説明
IP_MQTT_CLIENT_PublisherMQTT クライアントパブリッシャーの実装方法を示すデモサンプル
IP_MQTT_CLIENT_PublisherSubscriber_2TasksMQTT クライアントサブスクライバとパブリッシャー機能を同時に動かします
IP_MQTT_CLIENT_SubscriberMQTT クライアントサブスクライバの実装方法を示すデモサンプル

emNet WebSocket

Sample説明
IP_WEBSOCKET_printf_Clientサーバーにタイムスタンプメッセージを発行する簡単なWEBSOCKETクライアントターミナル
IP_WEBSOCKET_printf_Serverクライアントからタイムスタンプメッセージを受信する簡単なWEBSOCKETサーバートターミナル

emNet FTP

Sample説明
IP_FTPClientSampleFTPクライアントのデモサンプル
IP_FTPServerSampleFTPサーバーのデモサンプル

関連設定ファイル:

BSP
 |- BSP_IP.c  ..................... LANドライバのボード依存の初期化設定ファイル
 |
 |- Setup
     |- IP_Config_RX72N_ETH.c  .... LANドライバインターフェース設定ファイル
     |- IP_FS_emFile.c  ........... ファイルシステムインターフェース設定ファイル
     |- IP_SNMP_AGENT_MIB2_INTERFACES_emNet.c  .... SNMP Agentインターフェース設定ファイル

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コンフィグレーション設定ファイル
 |- IP_FTP_SERVER_Conf.h  .... emNet FTP Serverコンフィグレーション設定ファイル
 |- IP_SNMP_AGENT_Conf.h  .... emNet SNMP Agentコンフィグレーション設定ファイル
 |
 |- IO
 |   |- IP_ConfigIO.c  ....... デバッグコンソールIOインターフェース設定ファイル
 |
 |- OS
 |   |- lib_embOSLayer_RXv3_L.lib  ....... OSインターフェース設定ファイル
 |
 |- SYS   .................... SYS インターフェース設定(ソース・ヘッダ)

デモサンプル関連データ・ファイル:

Config
 └ Webserver
    ├ Webserver_DynContent_2018.c  ....... WEBサーバーデモサンプル用コンテンツ

デモサンプル関連PCツール:

Windows
 └ IP
    ├ COAP_Client  .......... CoAPクライアントのEXEプログラム
    ├ COAP_Server  .......... CoAPサーバーのEXEプログラム
    ├ FTPserver    .......... FTPサーバーのEXEプログラム
    ├ SpeedTestServer  ...... TCP速度パフォーマンスチェック用EXEプログラム
    ├ Webserver
        ├ SDCard  ........... WEBサーバーのデモ用データコンテンツ(HTML、CSS、JSファイル)

ネットワーク設定

File:IP_Config_RX72N_ETH.c

マクロ名説明
ALLOC_SIZEemNetスタック用メモリプールのサイズ(単位:Byte)
TARGET_NAMEDHCPクライアントのターゲット名(設定値:"AP-RX72N-0A")
HW_ADDREthernet MACアドレス
BSPサンプルでは評価ボードのEEPROM(メモリアドレス:00~06)からボード個別のMACアドレス(6Byte)を読み出します。
File: BSP_IP.c
Function: BSP_EEPROM_Read_MacAddr()
USE_DHCP1:DHCPモードでIPアドレスを自動取得します。
0:マニュアルモード設定、固定IPアドレスを使用します。
IP_ADDRマニュアルモード(DHCP=0)のIPアドレス設定
SUBNET_MASKマニュアルモード(DHCP=0)のサブネットマスクのアドレス設定
GW_ADDRマニュアルモード(DHCP=0)のゲートウエイIPアドレス設定
DNS_ADDRマニュアルモード(DHCP=0)のDNSサーバーのIPアドレス設定

File:BSP_IP.c

マクロ名説明
ETH_INT_PRIORITYLANドライバの割り込み優先度(設定値:5)

ビルド・動作確認方法

プロジェクト設定では「\Application\_Exclude\IP」フォルダはビルド対象外に設定しています。以下のどちらかの方法で動作確認を行うサンプルアプリケーションを選択します。

  1. 「\_Exclude\IP」フォルダ下の対象テストサンプルファイルをビルド対象設定の「\Application」フォルダ下にコピーします。
  2. 「\_Exclude\IP」フォルダ下の対象テストサンプルファイルのみ「ビルド対象外」の設定を解除します。

テスト環境の設定:

評価ボードのLANポートをテスト用パソコンに接続して、TCP/IPネットワーク通信が正常にできることを確認してください。

PC Setup

ネットワーク環境に合わせて評価ボード側のemNetスタックのコンフィグレーション設定を編集してください。

File: BSP\Setup\IP_Config_RX72N_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,   1, 252)
#define SUBNET_MASK  IP_BYTES2ADDR(255, 255, 255,   0)
#define GW_ADDR      IP_BYTES2ADDR(192, 168,   1,   1)
#define DNS_ADDR     IP_BYTES2ADDR(192, 168,   1,   1)

各テストアプリケーションの動作確認方法はテストサンプルアプリケーションのヘッダのコメント情報を参照ください。テストサーバーのIPアドレスなどコンフィグレーション設定を編集して動作確認を行います。


テストレポート(TCP/IP)

Sample: IP_Ping

「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-RX72N-0A (RX72N RXv3 @240MHz)
RTOS: SEGGER embOS
------------------------------------------------
0:002 MainTask - INIT: emNet init started. Version 3.52.0
0:025 MainTask - *********************************************************************
0:026 MainTask - *                        emNet Configuration                        *
0:027 MainTask - *********************************************************************
0:028 MainTask - * IP_DEBUG: 2
0:028 MainTask - * Memory added: 49152 bytes
0:029 MainTask - * Buffer configuration:
0:030 MainTask - *   12 buffers of 256 bytes
0:031 MainTask - *   20 buffers of 1516 bytes
0:032 MainTask - * TCP Tx/Rx window size per socket: 11680/8760 bytes
0:033 MainTask - * Number of interfaces added: 1
0:034 MainTask - * Interface #0 configuration:
0:034 MainTask - *   Type: ETH
0:035 MainTask - *   MTU: 1500
0:035 MainTask - *   HW addr.: 00:0C:7B:4E:02:08
0:036 MainTask - *********************************************************************
0:037 MainTask - INIT: Link is down
0:038 MainTask - DRIVER: Found PHY with Id 0x7 at addr 0x0
0:043 MainTask - INIT: Init completed
0:044 IP_Task - INIT: IP_Task started
2:025 IP_Task - LINK: Link state changed: Full duplex, 100MHz
2:026 IP_Task - DHCPc: Sending discover!
2:403 IP_Task - NDP: Link-local IPv6 addr.: FE80:0000:0000:0000:020C:7BFF:FE4E:0208 added to IFace: 0
2:438 IP_Task - NDP: IPv6 addr.: 2400:4050:A0E0:1F00:020C:7BFF:FE4E:0208 added to IFace: 0
3:859 IP_Task - DHCPc: IFace 0: Offer: IP: 192.168.1.18, Mask: 255.255.255.0, GW: 192.168.1.1.
4:025 IP_Task - DHCPc: IP addr. checked, no conflicts
4:026 IP_Task - DHCPc: Sending Request.
4:035 IP_Task - DHCPc: IFace 0: Using IP: 192.168.1.18, Mask: 255.255.255.0, GW: 192.168.1.1.
4:245 MainTask - Sending PING to IP addr. 192.168.1.4 .
4:445 MainTask - Sending PING to IP addr. 192.168.1.4 .
4:645 MainTask - Sending PING to IP addr. 192.168.1.4 .
4:845 MainTask - Sending PING to IP addr. 192.168.1.4 .
4:870 IP_Task - ICMP echo reply received!
4:871 IP_Task - ICMP echo reply received!
5:045 MainTask - Sending PING to IP addr. 192.168.1.4 .
5:066 IP_Task - ICMP echo reply received!
5:245 MainTask - Sending PING to IP addr. 192.168.1.4 .
5:250 IP_Task - ICMP echo reply received!
5:445 MainTask - Sending PING to IP addr. 192.168.1.4 .
5:469 IP_Task - ICMP echo reply received!
5:645 MainTask - Sending PING to IP addr. 192.168.1.4 .
5:674 IP_Task - ICMP echo reply received!
5:845 MainTask - Sending PING to IP addr. 192.168.1.4 .
5:879 IP_Task - ICMP echo reply received!
6:045 MainTask - Sending PING to IP addr. 192.168.1.4 .
6:087 IP_Task - ICMP echo reply received!
6:245 MainTask - Sending PING to IP addr. 192.168.1.4 .
6:296 IP_Task - ICMP echo reply received!
6:445 MainTask - Sending PING to IP addr. 192.168.1.4 .
6:498 IP_Task - ICMP echo reply received!

Sample: IP_SimpleServer

パソコンからTeraTermなどのTELNETクライエントプログラムからターゲットボードにアクセスします。コンソールから文字入力するとシステムタイムが表示されます。

Telnet Test

Debug IO Console:

4:034 IP_Task - DHCPc: IFace 0: Using IP: 192.168.1.18, Mask: 255.255.255.0, GW: 192.168.1.1.
211:789 Telnet server - New IPv4 client accepted.
216:813 Telnet server - recv() timeout after 5 seconds of inactivity!
216:814 Telnet server - Disconnecting client.
250:985 Telnet server - New IPv4 client accepted.
256:030 Telnet server - recv() timeout after 5 seconds of inactivity!
256:031 Telnet server - Disconnecting client.

Sample: IP_DNSClient

「segger.com」のIPアドレスを取得します。
File:IP_DNSClient.c

#define HOST_NAME  "segger.com"

Debug IO Console:

4:036 IP_Task - DHCPc: IFace 0: Using IP: 192.168.1.18, Mask: 255.255.255.0, GW: 192.168.1.1.
5:580 DNSClient - IP addr. 116.203.153.115 resolved from host name "segger.com".
6:581 DNSClient - IP addr. 116.203.153.115 resolved from host name "segger.com".
7:582 DNSClient - IP addr. 116.203.153.115 resolved from host name "segger.com".
8:583 DNSClient - IP addr. 116.203.153.115 resolved from host name "segger.com".

Sample: IP_SNTPClient

NTPサーバーから日付時刻情報を取得します。
File:IP_SNTPClient.c

#define NTP_SERVER  "us.pool.ntp.org"

Debug IO Console:

4:060 IP_Task - DHCPc: IFace 0: Using IP: 192.168.1.18, Mask: 255.255.255.0, GW: 192.168.1.1.
4:094 SNTPClient - Requesting time stamp from us.pool.ntp.org:
4:307 SNTPClient - Timestamp received: 3948771791 seconds passed since January 1st 1900.

Sample: IP_NTPClient

NTPサーバーから日付時刻情報(UTC)を取得します。

Debug IO Console:

4:034 IP_Task - DHCPc: IFace 0: Using IP: 192.168.1.18, Mask: 255.255.255.0, GW: 192.168.1.1.
9:053 NTPClient - --- UTC time: 2025.02.17  09:05:10 ---
14:083 NTPClient - --- UTC time: 2025.02.17  09:05:15 ---
19:050 NTPClient - --- UTC time: 2025.02.17  09:05:20 ---
24:052 NTPClient - --- UTC time: 2025.02.17  09:05:25 ---
29:052 NTPClient - --- UTC time: 2025.02.17  09:05:30 ---
34:053 NTPClient - --- UTC time: 2025.02.17  09:05:35 ---

Sample: IP_SpeedClient_TCP

パソコン側に「SpeedTestServer.exe」サーバープログラムを起動して評価ボードのTCP速度パフォーマンスを確認します。
LAN HUB: NETGEAR 100Mbps

File: IP_SpeedClient_TCP.c (サーバーIPアドレス設定)

#define   SERVER_IP_ADDR          IP_BYTES2ADDR(192, 168, 1, 10)

Debug IO Console:

4:131 IP_Task - DHCPc: Sending Request.
4:139 IP_Task - DHCPc: IFace 0: Using IP: 192.168.1.18, Mask: 255.255.255.0, GW: 192.168.1.1.
4:521 Client - 4194304 Bytes received (without headers) in 368 ms.
4:522 Client - 4659730 Bytes received (with headers) in 368 ms.
4:523 Client - Average transfer speed (without headers): 11397000 Bytes/s
4:524 Client - Average transfer speed (with headers): 12662000 Bytes/s

4:947 Client - 4194304 Bytes sent (without headers) in 419 ms.
4:948 Client - 4659730 Bytes sent (with headers) in 419 ms.
4:949 Client - Average transfer speed (without headers): 10010000 Bytes/s
4:950 Client - Average transfer speed (with headers): 11121000 Bytes/s

5:361 Client - 4194304 Bytes received (without headers) in 359 ms.
5:362 Client - 4659730 Bytes received (with headers) in 359 ms.
5:363 Client - Average transfer speed (without headers): 11683000 Bytes/s
5:364 Client - Average transfer speed (with headers): 12979000 Bytes/s

テストレポート(MQTT)

Sample: IP_MQTT_CLIENT_Publisher

「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:050 IP_Task - DHCPc: IFace 0: Using IP: 192.168.1.18, Mask: 255.255.255.0, GW: 192.168.1.1.
4:577 MainTask - APP: Connected to 5.196.78.28, port 1883.
5:320 MainTask - APP: --------
5:321 MainTask - APP: Message No. 1:
5:321 MainTask - APP:   Topic  : "eMQTT"
5:322 MainTask - APP:   Payload: "www.SEGGER.com MQTT_HelloWorld_Sample"
6:827 MainTask - APP: --------
6:827 MainTask - APP: Message No. 2:
6:828 MainTask - APP:   Topic  : "eMQTT"
6:829 MainTask - APP:   Payload: "www.SEGGER.com MQTT_HelloWorld_Sample"
8:323 MainTask - APP: --------
8:323 MainTask - APP: Message No. 3:
8:324 MainTask - APP:   Topic  : "eMQTT"
8:325 MainTask - APP:   Payload: "www.SEGGER.com MQTT_HelloWorld_Sample"
9:821 MainTask - APP: --------
9:821 MainTask - APP: Message No. 4:
9:822 MainTask - APP:   Topic  : "eMQTT"
9:822 MainTask - APP:   Payload: "www.SEGGER.com MQTT_HelloWorld_Sample"
11:318 MainTask - APP: --------
11:318 MainTask - APP: Message No. 5:
11:319 MainTask - APP:   Topic  : "eMQTT"
11:320 MainTask - APP:   Payload: "www.SEGGER.com MQTT_HelloWorld_Sample"

Sample: IP_MQTT_CLIENT_Subscriber

「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:026 IP_Task - DHCPc: Sending Request.
4:035 IP_Task - DHCPc: IFace 0: Using IP: 192.168.1.18, Mask: 255.255.255.0, GW: 192.168.1.1.
6:344 MainTask - APP: Connected to 5.196.78.28, port 1883.
6:604 MainTask - APP: Received Property IP_MQTT_PROP_TYPE_TOPIC_ALIAS_MAXIMUM for CONNACK with PacketID 0.
6:605 MainTask - APP: Received Property IP_MQTT_PROP_TYPE_RECEIVE_MAXIMUM for CONNACK with PacketID 0.
6:855 MainTask - APP: Message (Type: SUBACK, Id: 6606) received. Reason Code: IP_MQTT_REASON_SUCCESS.
6:856 MainTask - APP: ----
96:980 MainTask - IP_MQTT_CLIENT_Exec: Connection gracefully closed by peer.
96:981 MainTask - _Disconnect: closing socket 1
96:982 MainTask - APP: Done.
107:230 MainTask - APP: Connected to 5.196.78.28, port 1883.
107:479 MainTask - APP: Received Property IP_MQTT_PROP_TYPE_TOPIC_ALIAS_MAXIMUM for CONNACK with PacketID 0.
107:480 MainTask - APP: Received Property IP_MQTT_PROP_TYPE_RECEIVE_MAXIMUM for CONNACK with PacketID 0.
107:727 MainTask - APP: Message (Type: SUBACK, Id: 41945) received. Reason Code: IP_MQTT_REASON_SUCCESS.
107:728 MainTask - APP: ----
197:969 MainTask - IP_MQTT_CLIENT_Exec: Connection gracefully closed by peer.
197:970 MainTask - _Disconnect: closing socket 2
197:971 MainTask - APP: Done.
208:422 MainTask - APP: Connected to 5.196.78.28, port 1883.
208:675 MainTask - APP: Received Property IP_MQTT_PROP_TYPE_TOPIC_ALIAS_MAXIMUM for CONNACK with PacketID 0.
208:676 MainTask - APP: Received Property IP_MQTT_PROP_TYPE_RECEIVE_MAXIMUM for CONNACK with PacketID 0.
208:955 MainTask - APP: Message (Type: SUBACK, Id: 12069) received. Reason Code: IP_MQTT_REASON_SUCCESS.
208:956 MainTask - APP: ----
298:960 MainTask - IP_MQTT_CLIENT_Exec: Connection gracefully closed by peer.
298:961 MainTask - _Disconnect: closing socket 3
298:962 MainTask - APP: Done.
309:219 MainTask - APP: Connected to 5.196.78.28, port 1883.
309:484 MainTask - APP: Received Property IP_MQTT_PROP_TYPE_TOPIC_ALIAS_MAXIMUM for CONNACK with PacketID 0.
309:485 MainTask - APP: Received Property IP_MQTT_PROP_TYPE_RECEIVE_MAXIMUM for CONNACK with PacketID 0.
309:740 MainTask - APP: Message (Type: SUBACK, Id: 47342) received. Reason Code: IP_MQTT_REASON_SUCCESS.
309:741 MainTask - APP: ----

テストレポート(CoAP)

Sample: IP_COAP_ClientSample

サーバー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:026 IP_Task - DHCPc: Sending Request.
4:035 IP_Task - DHCPc: IFace 0: Using IP: 192.168.1.18, Mask: 255.255.255.0, GW: 192.168.1.1.
4:045 MainTask - 
Test 0: Sending PING
6:839 MainTask - Test 0: Success!
6:839 MainTask - 
Test 1: Sending Discover
9:882 MainTask - /obs: Simple observable data.
/test: test entry
/separate: simple variable with GET with LATE reply
/BlockTransfer/ObsData: Observable data block.
/ObsSensor: 
9:883 MainTask - Test 1: Success!
9:884 MainTask - 
Test 2: Sending GET separate
10:407 MainTask - 
  00:00:00
10:408 MainTask - Test 2: Success!
10:408 MainTask - 
Test 3: Sending NON GET block of 16 bytes
10:411 MainTask - 
  Test data
10:411 MainTask - Test 3: Success!
10:412 MainTask - 
Test 4: PUT test
10:429 MainTask - Test 4: Success!
10:430 MainTask - 
Test 5: PUT that should fail
10:437 MainTask - received error: 4.05
10:438 MainTask - Test 5: Success!
10:438 MainTask - 
Test 6: DELETE test
10:445 MainTask - Test 6: Success!
10:446 MainTask - 
Test 7: POST test
10:466 MainTask - Test 7: Success!
10:467 MainTask - 
Test 8: Observe
10:469 MainTask - 
  Obs data
10:470 MainTask - 
  GET 1 from Observe completed
20:682 MainTask - 
  Obs data
20:682 MainTask - 
  GET 2 from Observe completed
30:852 MainTask - 
  Obs data
30:853 MainTask - 
  GET 3 from Observe completed
41:031 MainTask - 
  Obs data
41:031 MainTask - 
  GET 4 from Observe completed
51:203 MainTask - 
  Obs data
51:204 MainTask - 
  GET 5 from Observe completed
51:205 MainTask - Test 8: Success!

Sample: IP_COAP_ServerSample

ターゲット側にCoAPサーバーを実行して、CoApクライエントから接続して操作を確認します。

Debug IO Console:

4:050 IP_Task - DHCPc: IFace 0: Using IP: 192.168.1.18, Mask: 255.255.255.0, GW: 192.168.1.1.
404:765 MainTask - Getting with LATE reply.
404:767 MainTask - Getting with LATE reply.
404:768 MainTask - Getting Test.
404:769 MainTask - Putting Test.
404:770 MainTask - Putting Test.
404:771 MainTask - Deleting Test.
404:772 MainTask - Putting Test.
404:773 MainTask - Putting Test.
404:774 MainTask - Getting Observer.
414:774 MainTask - Getting Observer.
424:775 MainTask - Getting Observer.
434:776 MainTask - Getting Observer.
444:777 MainTask - Getting Observer.
444:778 MainTask - Getting Observer.

テストレポート(WebSocket)

Sample: IP_WEBSOCKET_printf_Client

File: IP_WEBSOCKET_printf_Client.c (サーバーIPアドレス設定)

//
// WebSocket sample configuration.
//
#define SERVER_HOST      "192.168.1.14"   // Host to connect to.

Debug IO Console:

4:035 IP_Task - DHCPc: IFace 0: Using IP: 192.168.1.18, Mask: 255.255.255.0, GW: 192.168.1.1.
4:045 WebSocketClient - APP: Connected to 192.168.1.14:8181.

4:046 WebSocketClient - WebSocket successfully opened.

Sample: IP_WEBSOCKET_printf_Server

ターゲット側に「IP_WEBSOCKET_printf_Server」プログラムを実行して、別のターゲットから「IP_WEBSOCKET_printf_Client」プログラムを動かしてサーバー機能を確認します。

Debug IO Console:

4:036 IP_Task - DHCPc: IFace 0: Using IP: 192.168.1.18, Mask: 255.255.255.0, GW: 192.168.1.1.
14:137 WebSocketServer - WebSocket client connected.

15:135 WebSocketServer - Client: OS time: 6025

16:335 WebSocketServer - Client: OS time: 7225

17:525 WebSocketServer - Client: OS time: 8415

18:714 WebSocketServer - Client: OS time: 9605

19:904 WebSocketServer - Client: OS time: 10795

21:094 WebSocketServer - Client: OS time: 11985

22:284 WebSocketServer - Client: OS time: 13175

23:474 WebSocketServer - Client: OS time: 14365

テストレポート(FTP Server/Client)

Sample: IP_FTPServerSample

評価ボードにSDカードを差し込んで、「IP_FTPServerSample」プログラムを実行します。テストPCからFTPクライエントプログラム(WindowsプロンプトからFTPコマンドなど)各FTPコマンド・機能を確認します。
Login ユーザー:Admin
パスワード: Secret

Windows PCコマンドコンソール:

C:\Workspace>ftp 192.168.1.18
192.168.1.18 に接続しました。
220 Welcome to emFTP server
530 Not logged in.
ユーザー (192.168.1.18:(none)): Admin
331 Password required.
パスワード:

230 User logged in, proceed.
ftp> put firmware.bin
200 Command okay.
150 File status okay; about to open data connection.
226 Closing data connection. Requested file action successful.
ftp: 1043488 バイトが送信されました 0.45秒 2303.51KB/秒。
ftp> put test1.hex
200 Command okay.
150 File status okay; about to open data connection.
226 Closing data connection. Requested file action successful.
ftp: 509710 バイトが送信されました 0.18秒 2785.30KB/秒。
ftp> dir
200 Command okay.
150 File status okay; about to open data connection.
-rw-r--r--   1 root root 1043488 Jan 10  2025 firmware.bin
-rw-r--r--   1 root root 509710 Jan 10  2025 test1.hex
226 Closing data connection. Requested file action successful.
ftp: 119 バイトが受信されました 0.04秒 2.70KB/秒。
ftp> mkdir test1
257 "/test1" Directory successfully created.
ftp> get firmware.bin newdata.bin
200 Command okay.
150 File status okay; about to open data connection.
226 Closing data connection. Requested file action successful.
ftp: 1043488 バイトが受信されました 0.34秒 3114.89KB/秒。
ftp> ls
200 Command okay.
150 File status okay; about to open data connection.
firmware.bin
test1.hex
test1
226 Closing data connection. Requested file action successful.
ftp: 35 バイトが受信されました 0.05秒 0.65KB/秒。
ftp> quit
221 Goodbye

C:\Workspace>

Sample: IP_FTPClientSample

サーバーPC側に「C:\ftp」フォルダ下のデータをすべて削除して、「FTPServer.exe」プログラムを実行します。評価ボードにSDカードを差し込んで、「IP_FTPClientSample」プログラムを実行します。デバッグコンソールのFTPクライエントの操作ログを確認します

File: IP_FTPClientSample.c (FTPサーバーIPアドレス設定)

#define FTP_HOST  "192.168.1.4"

Debug IO Console:

4:074 IP_Task - DHCPc: Sending Request.
4:084 IP_Task - DHCPc: IFace 0: Using IP: 192.168.1.18, Mask: 255.255.255.0, GW: 192.168.1.1.
4:094 FTP client - APP: Connect to server "Admin@192.168.1.4:21".
4:209 FTP client - APP: Connected to 192.168.1.4, port 21.
4:227 FTP client - APP: Creating directory "Test".
4:234 FTP client - APP: --- Test with old API that needs to CWD into the directory to operate within.
4:235 FTP client - APP: Changing to directory "/Test/".
4:238 FTP client - APP: List directory (before upload):
4:244 FTP client - APP: Connected to 192.168.1.4, port 61224.
4:255 FTP client - drw-r--r--   1 root root 0 Feb 18  2025 .
drw-r--r--   1 root root 0 Feb 18  2025 ..

4:256 FTP client - APP: Uploading "Readme.txt".
FS warning: FS_Init: File system already initialized.
4:312 FTP client - APP: Connected to 192.168.1.4, port 61225.
4:376 FTP client - APP: List directory (after upload):
4:381 FTP client - APP: Connected to 192.168.1.4, port 61226.
4:384 FTP client - drw-r--r--   1 root root 0 Feb 18  2025 .
drw-r--r--   1 root root 0 Feb 18  2025 ..
-rw-r--r--   1 root root 76 Feb 18  2025 Readme.txt

4:385 FTP client - APP: Deleting "Readme.txt".
4:388 FTP client - APP: List directory (after delete):
4:392 FTP client - APP: Connected to 192.168.1.4, port 61227.
4:402 FTP client - drw-r--r--   1 root root 0 Feb 18  2025 .
drw-r--r--   1 root root 0 Feb 18  2025 ..

4:403 FTP client - APP: Changing to parent directory.
4:417 FTP client - APP: --- Test with new API using IP_FTPC_CMD_CONFIG that can operate regardless of current directory.
4:418 FTP client - APP: List directory (before upload, old API with path parameter):
4:424 FTP client - APP: Connected to 192.168.1.4, port 61228.
4:427 FTP client - drw-r--r--   1 root root 0 Feb 18  2025 .
drw-r--r--   1 root root 0 Feb 18  2025 ..

4:428 FTP client - APP: Uploading "Readme.txt" to "/Test/Test.txt" (new API).
4:436 FTP client - APP: Connected to 192.168.1.4, port 61229.
4:498 FTP client - APP: List directory (after upload, new API):
4:504 FTP client - APP: Connected to 192.168.1.4, port 61230.
4:508 FTP client - drw-r--r--   1 root root 0 Feb 18  2025 .
drw-r--r--   1 root root 0 Feb 18  2025 ..
-rw-r--r--   1 root root 76 Feb 18  2025 Test.txt

4:509 FTP client - APP: Deleting "/Test/Test.txt" (new API).
4:513 FTP client - APP: List directory (after delete, new API):
4:519 FTP client - APP: Connected to 192.168.1.4, port 61231.
4:523 FTP client - drw-r--r--   1 root root 0 Feb 18  2025 .
drw-r--r--   1 root root 0 Feb 18  2025 ..

4:524 FTP client - APP: Delete directory "/Test/" (new API).
4:529 FTP client - APP: Done.

テストレポート(SNMP Agent)

「IP_SNMP_AGENT_Start.c」SNMP Agentプログラムを実行します。
テストサンプルで使用するMIB OID値 → "1.3.6.1.4.1.46410"
OID Path = "iso(1).org(3).dod(6).internet(1).private(4).enterprise(1).ENCODED(46410)"
※ ID「46410」はSEGGERの登録PEN(Private Enterprise Number)です。

File:IP_SNMP_AGENT_Start.c

#define PRIVATE_ENTERPRISE_NUMBER     46410
#define MESSAGE_PORT                  161
#define TRAP_INFORM_PORT              162
#define PUBLIC_COMMUNITY_STRING       "public"
#define PRIVATE_COMMUNITY_STRING      "Segger"
#define AUTH_PASSWORD                 "AUTHpass"
#define PRIV_PASSWORD                 "PRIVpass"

SNMP Agentプログラムの動作確認にPC側に「Net-SNMP」ツールセット(V5.5)を使用しています。
「snmpset」コマンドを使用してボードのテストサンプルのLEDの設定を確認します。
snmpset -v2c -c Segger (AgentIP) 1.3.6.1.4.1.46410.1 i 0

LED1:ON, LED2:ON, LED2:OFF, LED3:ON, LED5:ON操作のコマンド事例:

C:\usr\bin>snmpset -v2c -c Segger 192.168.1.18 1.3.6.1.4.1.46410.1 i 1
SNMPv2-SMI::enterprises.46410.1 = INTEGER: 1

C:\usr\bin>snmpset -v2c -c Segger 192.168.1.18 1.3.6.1.4.1.46410.2 i 1
SNMPv2-SMI::enterprises.46410.2 = INTEGER: 1

C:\usr\bin>snmpset -v2c -c Segger 192.168.1.18 1.3.6.1.4.1.46410.2 i 0
SNMPv2-SMI::enterprises.46410.2 = INTEGER: 0

C:\usr\bin>snmpset -v2c -c Segger 192.168.1.18 1.3.6.1.4.1.46410.3 i 1
SNMPv2-SMI::enterprises.46410.3 = INTEGER: 1

C:\usr\bin>snmpset -v2c -c Segger 192.168.1.18 1.3.6.1.4.1.46410.5 i 1
SNMPv2-SMI::enterprises.46410.5 = INTEGER: 1

「snmpbulkget」コマンドでボードのテストサンプルのLEDステータスを読み出します。
snmpbulkget -v2c -c public -Cn1 -Cr9 (AgentIP) 1.3.6.1.4.1.46410 1.3.6.1.4.1.46410.0

コマンド事例:

C:\usr\bin>snmpbulkget -v2c -c public -Cn1 -Cr9 192.168.1.18 1.3.6.1.4.1.46410 1.3.6.1.4.1.46410.0
SNMPv2-SMI::enterprises.46410.0 = INTEGER: 21
SNMPv2-SMI::enterprises.46410.1 = INTEGER: 1
SNMPv2-SMI::enterprises.46410.2 = INTEGER: 0
SNMPv2-SMI::enterprises.46410.3 = INTEGER: 1
SNMPv2-SMI::enterprises.46410.4 = INTEGER: 0
SNMPv2-SMI::enterprises.46410.5 = INTEGER: 1
SNMPv2-SMI::enterprises.46410.6 = INTEGER: 0
SNMPv2-SMI::enterprises.46410.7 = INTEGER: 0
SNMPv2-SMI::enterprises.46410.8 = INTEGER: 0
SNMPv2-SMI::enterprises.46410.8 = No more variables left in this MIB View (It is past the end of the MIB tree)

テストレポート(WEB Server)

PCから「Windows\IP\Webserver\SDCard」フォルダ下のすべてのデータコンテンツ(HTML、CSS、JS、画像データ)をSDカードのルートディレクトリにコピーします。SDカードを評価ボードに差し込んで、「IP_WebserverSample」プログラムを実行します。

Windows
 └ IP
    ├ Webserver
        ├ SDCard  ........... WEBサーバーのデモ用データコンテンツ(HTML、CSS、JS)

IDEのログコンソールから評価ボードのネットワークIPアドレスを確認して、テストPCのWEBブラウザから評価ボードのWEBサーバにアクセスします。

http://192.168.1.18/

セキュアモードHTTPアクセス

https://192.168.1.18/
Webserver ToppageWebserver Stat
前の章

FAT32 ファイルシステム

次の章

HTTPクライアント、JSONパーサー