目次

last update: 2024/10

embOS RTOS用BSPパッケージ
第8章: TCP/IP-Over-USB通信
評価ボード:EK-RX261




RX261マイコンデバイスにはEthernetコントローラ・LANインターフェース機能をサポートしていませんが、emNet+emUSBデバイスコンポーネントのIP-Over-USB機能を利用してUSBデバイスポート経由でTCP/IPネットワークアプリケーションを動かすことが可能です。
IP-over-USBテクノロジとWEBサーバを組合せ、ターゲット機器に組込む事により、WEBブラウザにデバイス名を入力するだけで、Windows、MacOS、LinuxのホストPCからデバイスにアクセスが出来ます。デフォルトのデバイス名は「usb.local」となっています。


テストサンプル

Demo Sample Application Folder:

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

emNet + IP-Over-USB

Sample説明
IP_StartemNet TCP/IPスタックの基本的なスタートアップ手順を示すサンプル
IP_SHELL_StartTELNETサーバー(emNet Shellコンソール)を実装します
IP_SimpleServer簡単なTELNETサーバーを実装します

関連設定ファイル:

BSP
 |- BSP_USB.c  ..................... USBポートの初期化設定ファイル
 |
 |- Setup
     |- IP_Config_IP_over_USB.c
               .... IO-Over-USBドライバインターフェース設定ファイル

Config
 |- IP_Conf.h  ............. emNet IPコンフィグレーション設定ファイル
 |
 |- IO
 |   |- IP_ConfigIO.c  ..... デバッグコンソールIOインターフェース設定ファイル
 |
 |- OS
 |   |- lib_embOSLayer_RXv3_L.lib  ..... OSインターフェース設定ファイル
 |
 |- SYS   .................... SYS インターフェース設定(ソース・ヘッダ)

ビルド・動作確認方法

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

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

各テストアプリケーションの動作確認方法はテストサンプルアプリケーションのヘッダのコメント情報を参照ください。

プロジェクトを再ビルドし、EK-RX261評価ボードに接続してデバッグセッションを開始します。
J20 USBポートをパソコンに接続してプログラムを実行します。デバッガのIOコンソールのログ画面から結果を確認します。

J20 USBポートをデバイスモード設定に設定します

評価ボードのジャンパー設定でJ20 USBポートをDEVICEモードに変更します。

usbd setting
  • J17:Short
  • J18:Jumper on pins 1-2
  • J19:Jumper on pins 2-3

テストレポート

Sample: IP_Start

操作手順:プログラム起動してUSBポートをパソコンに接続します。PC側の設定パネル又はデバイスマネジャウインドウからRNDIS LANアダプタデバイスとして認識されていることを確認します。パソコンのコマンドプロンプトから「ping usb.local」を実行してPINGレスポンスを確認します。

Debug IO Console:

SEGGER Software Evaluation Sample
Eval Board: EK-RX261 (32-bit RXv3 @64MHz)
RTOS: SEGGER embOS
----------------------------------------------
0:022 MainTask - INIT: emNet init started. Version 3.52.0
0:024 MainTask - *********************************************************************
0:025 MainTask - *                        emNet Configuration                        *
0:026 MainTask - *********************************************************************
0:027 MainTask - * IP_DEBUG: 2
0:028 MainTask - * Memory added: 24576 bytes
0:029 MainTask - * Buffer configuration:
0:030 MainTask - *   12 buffers of 256 bytes
0:031 MainTask - *   9 buffers of 1516 bytes
0:032 MainTask - * TCP Tx/Rx window size per socket: 4380/4380 bytes
0:033 MainTask - * Number of interfaces added: 1
0:034 MainTask - * Interface #0 configuration:
0:035 MainTask - *   Type: ETH
0:036 MainTask - *   MTU: 1500
0:037 MainTask - *   HW addr. not set, trying to read from driver later.
0:038 MainTask - *********************************************************************
0:039 MainTask - INIT: Link is down
0:040 MainTask - INIT: Init completed
0:041 IP_Task - INIT: IP_Task started
0:042 USBD_Start
11:047 Renesas USB: 512 bytes unused EP buffer RAM (USB_ENDPOINT_BUFFER_POOL_SIZE)
11:085 OS_Idle() - LINK: Link state changed: Full duplex, 100MHz
11:086 IP_Task - SetAddrMaskEx done
11:087 IP_Task - IP_DHCPS_ConfigPool done
11:088 IP_Task - IP_DHCPS_ConfigDNSAddr done
11:089 IP_Task - IP_DHCPS_Start done
11:091 IP_Task - IP_MDNS_SERVER_Start done
11:092 IP_Task - IP_DNS_SERVER_Start done
11:423 IP_Task - NDP: Link-local IPv6 addr.: FE80:0000:0000:0000:0622:C7FF:FEFE:0000 added to IFace: 0
11:424 IP_Task - NDP: Link-local IPv6 addr.: FE80:0000:0000:0000:0622:C7FF:FEFE:0000 added to IFace: 0
22:010 IP_Task - DHCPs: DISCOVER from 04:22:C7:FE:00:80 on IFace 0
22:011 IP_Task - DHCPs: Lease time [s] requested 0, granted 7200
22:013 IP_Task - DHCPs: OFFER 100.127.0.2
22:016 IP_Task - DHCPs: REQUEST from 04:22:C7:FE:00:80 on IFace 0
22:017 IP_Task - DHCPs: Requested 100.127.0.2
22:018 IP_Task - DHCPs: Lease time [s] requested 0, granted 7200
22:019 IP_Task - DHCPs: ACK
61:423 IP_Task - NDP: Removing cache entry: FE80:0000:0000:0000:3B39:6FFF:D963:F56B

パソコン側:

Start IP USB

Sample: IP_SimpleServer

操作手順:

  1. プログラム起動してUSBポートをパソコンに接続します。
  2. PC側の設定パネル又はデバイスマネジャウインドウからRNDIS LANアダプタデバイスとして認識されていることを確認します。
  3. パソコンのコマンドプロンプトから「telnet usb.local」を実行して評価ボード側のTELNETサーバーに接続します。
  4. TELNETコンソールから5秒(タイムアウト設定)以内に文字を入力してECHO文字の表示を確認します。

TIMEOUTマクロを編集して5秒のタイムアウト設定は変更可能です
File: IP_SimpleServer.c

//
// Telnet server sample.
//
#define TIMEOUT   5000  // Timeout for recv() [ms].

パソコン側:

IP-Telnet

Debug IO Console:

SEGGER Software Evaluation Sample
Eval Board: EK-RX261 (32-bit RXv3 @64MHz)
RTOS: SEGGER embOS
----------------------------------------------
0:022 MainTask - INIT: emNet init started. Version 3.52.0
0:024 MainTask - *********************************************************************
0:025 MainTask - *                        emNet Configuration                        *
0:026 MainTask - *********************************************************************
0:027 MainTask - * IP_DEBUG: 2
0:029 MainTask - * Memory added: 24568 bytes
0:030 MainTask - * Buffer configuration:
0:031 MainTask - *   12 buffers of 256 bytes
0:032 MainTask - *   9 buffers of 1516 bytes
0:033 MainTask - * TCP Tx/Rx window size per socket: 4380/4380 bytes
0:034 MainTask - * Number of interfaces added: 1
0:035 MainTask - * Interface #0 configuration:
0:036 MainTask - *   Type: ETH
0:037 MainTask - *   MTU: 1500
0:038 MainTask - *   HW addr. not set, trying to read from driver later.
0:040 MainTask - *********************************************************************
0:041 MainTask - INIT: Link is down
0:042 MainTask - INIT: Init completed
0:043 IP_Task - INIT: IP_Task started
0:044 USBD_Start
0:688 Renesas USB: 512 bytes unused EP buffer RAM (USB_ENDPOINT_BUFFER_POOL_SIZE)
0:717 OS_Idle() - LINK: Link state changed: Full duplex, 100MHz
0:718 IP_Task - SetAddrMaskEx done
0:719 IP_Task - IP_DHCPS_ConfigPool done
0:720 IP_Task - IP_DHCPS_ConfigDNSAddr done
0:721 IP_Task - IP_DHCPS_Start done
0:723 IP_Task - IP_MDNS_SERVER_Start done
0:724 IP_Task - IP_DNS_SERVER_Start done
0:758 IP_Task - DHCPs: REQUEST from 04:22:C7:FE:00:80 on IFace 0
0:759 IP_Task - DHCPs: Requested 100.127.0.2
0:760 IP_Task - *** Warning *** DHCPs: NAK, no previous DISCOVER
0:762 IP_Task - DHCPs: REQUEST from 04:22:C7:FE:00:80 on IFace 0
0:763 IP_Task - DHCPs: Requested 100.127.0.2
0:764 IP_Task - *** Warning *** DHCPs: NAK, no previous DISCOVER
0:793 IP_Task - DHCPs: DISCOVER from 04:22:C7:FE:00:80 on IFace 0
0:794 IP_Task - DHCPs: Lease time [s] requested 0, granted 7200
0:795 IP_Task - DHCPs: OFFER 100.127.0.2
0:799 IP_Task - DHCPs: REQUEST from 04:22:C7:FE:00:80 on IFace 0
0:800 IP_Task - DHCPs: Requested 100.127.0.2
0:801 IP_Task - DHCPs: Lease time [s] requested 0, granted 7200
0:802 IP_Task - DHCPs: ACK
1:023 IP_Task - NDP: Link-local IPv6 addr.: FE80:0000:0000:0000:0622:C7FF:FEFE:0000 added to IFace: 0
1:025 IP_Task - NDP: Link-local IPv6 addr.: FE80:0000:0000:0000:0622:C7FF:FEFE:0000 added to IFace: 0
37:781 Telnet server - New IPv4 client accepted.
47:226 Telnet server - recv() timeout after 5 seconds of inactivity!
47:227 Telnet server - Disconnecting client.

Sample: IP_SHELL_Start

操作手順:

  1. プログラム起動してUSBポートをパソコンに接続します。
  2. PC側の設定パネル又はデバイスマネジャウインドウからRNDIS LANアダプタデバイスとして認識されていることを確認します。
  3. パソコンのコマンドプロンプトから「telnet usb.local」を実行して評価ボード側のTELNETサーバー(IP-Shellコンソール)に接続します。
  4. IP-Shellコンソールから各種コマンドを確認して、「quit」コマンドでTELNETサーバー接続をクローズします。
IP-Shell

前の章

USB-Hostインターフェース

次の章

USB-Deviceインターフェース