Rev 1.00.00

Renesas R5F565NE(CK-RX65N)用サンプル(e2studio RX65N_gnu_tcp_client_AES_uselib)の説明（e2studio Version:2024-01 / FreeRTOS Version 10.4.3 -rx-1.0.8)
１． Sample の免責について
・Sample に関する Tel/Fax でのご質問に関してはお受けできません。ただし、メールでのご質問に関してはお答えするよう努力はしますが、都合によりお答えできない場合もありますので予めご了承願います。
・Sample ソフトの不具合が発見された場合の対応義務はありません。また、この関連ソフトの使用方法に関する質問の回答義務もありませんので承知の上ご利用下さい。
・Sample ソフトは、無保証で提供されているものであり、その適用可能性も含めて，いかなる保証も行いません。また，本ソフトウェアの利用により直接的または間接的に生じたいかなる損害に関しても，その責任を負わないものとします。

２．サンプルのプロジェクト名
ワークスペース名概要

プロジェクト名

FreeRTOS_sample_gnu_CK 有線 LAN 接続した DHCP と RX65N_gnu_tcp_client_AES
TCP 通信のサンプル
FreeRTOS モードで動作
セキュリティ API
Crypto ライブラリ(Mbed TLS) FreeRTOS-Plus-TCP
AES-CBC を使用したサンプ (dhcp_client)ル（暗号・復号）
TCP 通信(Client)(FreeRTOS_send..)(FreeRTOS_recv...)
暗号・復号(AES-CBC)(MBEDTLS_AES_ENCRYPT)(MBEDTLS_AES_DECRYPT)

統合開発環境Renesas e2studio(Version 2024-01)
FreeRTOS (Version 10.4.3 -rx 1.0.8)
FreeRTOS-Plus-TCP(Version4.0.0)
Mbed TLS(Version3.5.2)
GCC for Renesas RX(Version 8.3.0.202305)
テキストファイル・エンコード(sjis)
ハード環境
CK-RX65N (ルネサス製)
1

３．Tera Term Pro のインストール①「teraterm-4.106.exe」を検索してダウンロードする。
②PC にインストールし実行する③シリアルポートの設定
COM 番号は、PC 側でシリアル通信可能な番号を指定する。
115200BPS
8bit
none
1bit
noneの仕様にする。

④端末の設定USB シリアルコンバータ使用時に CR コードがカットされる
設定の場合は、受信：LF にして下さい。

赤枠の設定にする。

2

４．動作構成USB 接続（FINE デバッガ）

LED3 100ms 毎点滅

TeraTerm
TCP_IP_AES_OpenS
SL.exe(server)

RS232C 送信（表示文字）
AES 暗号文＜CK-RX65N 基板＞
クライアント側LAN ハブルータへ

LAN ハブルータへ

LAN 通信

＜TCP_IP_AES_OpenSSL.exe の処理＞
【Plain mode】
１．平文を受信する。
２．受信した平文をそのまま送信する。

＜RX65N_gnu_tcp_client_AES の処理＞
【Plain mode】
１．平文を送信する。
２．受信した平文を TeraTerm に表示する。

【AES-CBC mode】
１．暗号文を受信する。
２．受信した暗号文を復号して表示する。
３．復号文を暗号化した文章を送信する。

【AES-CBC mode】
１．AES(CBC)暗号化した文章を送信する。
２．受信した暗号文を復号して TeraTerm に表示する。

3

Debugger
E2 Lite(Fine)
USB(Vbus)+5Vを基板に供給

異常 LED6 点滅
正常 LED3 点滅

USB TO SERIAL
SCIx

ジャンパ
J2
J15
J16
J21
J22J11

有線 LAN 接続

備考
ショート
オープン
１－２ショート
ショート
オープン
オープン

Current Measurement point for MCU
Select debugger comms mode

DEBUG
Enable USB boot mode
Select USB boot mode power supply method
Configures the MCU for normal boot m ode4

５．
「RX65N_gnu_tcp_client_AES」サンプルの説明
５－１．フォルダ構成とファイル名【 <ホルダ名>を示す】<FreeRTOS_sample_gnu_CK><RX65N_gnu_tcp_client_AES> DHCP / TCP 通信 / AES-CBC(暗号・復号)
サンプルプロジェクト<HardwareDebug>
RX65N_gnu_tcp_client_AES. ELF ファイル、JTAG で使elf
用
RX65N_gnu_tcp_client_AES. MAP ファイル、アドレス情map
報RX65N_gnu_tcp_client_AES. モトローラーHEX ファイル
mot
その他
自動生成ファイル
<src><FreeRTOS>
RTOS カーネル< FreeRTOS-Plus-TCP >TCP/IP スタック
<mbedtls_decelopment>暗号・復号ライブラリ<AWS_aes>
aws_aes.caws_aes.h<frtos_config><frtos_skeleton>
tcp_aes_task.c
task_function.h<frtos_startup>
freertos_object_int.c
freertos.start.c
freertos.start.h<smc_gen>demo_printf.c
demo_printf.h
hardware_setup.c
hardware_setup.h
main.cFreeRTOSConfig.h
FreeRTOSIPConfig.hlinker_script.ld<trash>RX65N_gnu_tcp_client_AES.
scfg
その他

AES-CBC
暗号・復号処理のソース
aws_aes.c のヘッダー
未使用
TCP 通信処理のソース
tcp_aes_task.c のヘッダー
スタートアップ
未使用
CMT0 の初期化とMAIN_TASK の起動
reertos.start.c のヘッダー
スマートコンフィグレータ
により作成
コンソール入出力処理のソース
demo_printf.c のヘッダー
周辺 I/O デバイス初期化ソース
hardware_setup.c のヘッダー
メインタスク
FreeRTOS のコンフィグレ
ーションファイル
FreeRTOS+TCP のコンフィ
グレーションファイル
リンカ用スクリプトファイ
ル

過去変更した<src>等のごみ箱
スマートコンフィグレータの管理ファイル
自動生成ファイル

5

５－２．Macro Defines の説明
Macro Name
ipconfigUSE_DHCP

値0

説明
DHCP Client Disable◎ヘッダーファイルに直接 IP アドレスを記述
FreeRTOSConfig.h：/* IP address configuration. */#define configIP_ADDR0 192#define configIP_ADDR1 168#define configIP_ADDR2 21#define configIP_ADDR3 95

1

DHCP Client Enable6

５－３．サンプルの動作説明（基板側 CK-RX65N ）１）DHCP 無効時（ipconfigUSE_DHCP = 0）
Term 画面＜１＞「"The FreeRTOS_IPInit starting”」＜２＞「"The network is up waiting”」＜成功画面＞IP アドレス確立により、基板上の LED3（緑色）を 100msec 毎に点滅

固定 IP アドレス

Server ポート番号＜失敗画面＞IP アドレス未確立により、基板上の LED6（赤色）を 100msec 毎に点滅

失敗7２）DHCP 有効時（ipconfigUSE_DHCP = 1）
Term 画面＜１＞「"The FreeRTOS_IPInit starting”」＜２＞「"The network is up waiting”」＜成功画面＞IP アドレス確立により、基板上の LED3（緑色）を 100msec 毎に点滅取得した IP アドレス

Server ポート番号＜失敗画面＞IP アドレス未確立により、基板上の LED6（赤色）を 100msec 毎に点滅

失敗8３）TCP/IP 送受信＜tcp_aes_task＞

表示項目
AES_mode[x]

表示内容
説明
PLAIN
送受信モードの指定
CBC◎“C”キー入力によりモード変更
PLAIN -> CBC ->PLAIN◎変数のフラグにより指定
aes.c:：int AES_crypto_mode;
0 ： PLAIN // 平文モード
1 ：CBC // AES-CBC モード 暗号・復号

KeyLength[x]

128
192
256

AES-CBC モード時の Key ビット時の指定◎“L”キー入力により Key ビット変更
128 -> 192 -> 256 -> 128◎変数の数値により指定
aes.c:：int AES_crypto_bit;
128 ：Key ビット長が 128bit
192 ：Key ビット長が 192bit
256 ：Key ビット長が 256bit

DEST_IP[xxx.xxxx.xxxx.xxxx] 固定

送信先(PC 側)IP アドレス◎define にて指定
tcp_aes_thread_entry.c：#define DEST_IP IP_ADDRESS(192,168,xx,xx)9

５－４．Windows PC 側のテストプログラムで動作確認（PLAIN（平文）モード）
１）「TCP_IP_AES_OpenSSL.exe」を起動する。
（各モード共通）
プログラム場所【¥_PC_Test_OpenSSL】サンプルの解凍ホルダ「TCP_IP_AES_OpenSSL.exe」を起動
２）「TCP_IP_AES_OpenSSL」の各項目を設定して「基板」側からの「接続」を待つ。

PC 側の IP アドレス自動検出

PC 側の port 固定①Plain モード選択②クリック
基板側からの接続を待つ

10

３）基板側の各項目の確認と設定。
表示項目
AES_mode[PLAIN]

DEST_IP[192.168.21.53]

説明
送受信モードの指定◎“C”キー入力によりモード変更
PLAIN -> CBC ->PLAIN◎変数のフラグにより指定
aes.c:：int AES_crypto_mode = PLAIN; // 0=PLAIN
送信先(PC 側)IP アドレス
◎define にて指定
tcp_aes_thread_entry.c：#define DEST_IP IP_ADDRESS(192,168,21,53)

４）基板側から PC(server) 側へ平文テキストを送信する。
①disconection の場合は、PC(server)との Conection 処理を実行

PC(server)との接続確認中
PC(server)との接続完了

11

②接続完了後、「基板」側から PC(server) 側へ平文テキストを送受信する①C と L キー以外の Key を Push(1)PC への送信データ(2) PC からの受信データ

12５）基板側の原文保存場所（各モード共通）
モジュール名
tcp_aes_task.c

変数名static UCHAR *src_str = { // テスト用原文"This is a very important secret message! ""I will use it for encryption and decryption testing ""in the future. by Aone Corporation "};６）「TCP_IP_AES_OpenSSL」側の送受信を確認する。

接続完了(1)「基板」側からの受信データ(2)「基板」側への送信データ☆受信データをそのまま送信します。
（ループバック）

13

７）「TCP_IP_AES_OpenSSL」その他の操作（各モード共通）☑「Monitor」画面に送受信ダンプ表示「Monitor」表示を消去

８）TCP_IP-Port を「切断」する。
（各モード共通）

①クリック

切断を確認

14

５－５．Windows PC 側のテスト用プログラムで動作確認（AES-CBC モード）
１）
「TCP_IP_AES_OpenSSL.exe」を起動する。
２）「TCP_IP_AES_OpenSSL」の各項目を設定して「基板」側からの「接続」を待つ。

共通鍵の保存ファイル

初期ベクタ値の保存ファイル①CBC モード選択②Key 長の選択
128 / 192 / 256③クリック

登録されている「共通鍵」と「初期ベクタ値」

基板側からの接続を待つ３）「AES_KEY.txt」「AES_IV.txt」の説明「AES_KEY.txt」共通鍵テキストファイル// default aes_common_key 共通鍵 128bit | 192bit | 256bit// コメント行は、//のみの使用にして下さい。
0x11,0x11,0x11,0x11,0x22,0x22,0x22,0x22,0x33,0x33,0x33,0x33,0x44,0x44,0x44,0x44, // 128bit
0x55,0x55,0x55,0x55,0x66,0x66,0x66,0x66,// ↑ + 192bit
0x77,0x77,0x77,0x77,0x88,0x88,0x88,0x88,// ↑ + 256bit☆共通鍵を変更する場合は、基板側と同等の鍵を適当なエディタで変更する。

「AES_IV.txt」初期ベクタ値テキストファイル// default aes_initial_vect 初期化ベクタ// コメント行は、//のみの使用にして下さい。
0x01,0x3B,0x01,0x02,0xC7,0xD6,0xF2,0x1D,0x9E,0x18,0x6F,0x84,0x54,0x82,0x0A,0xDB☆初期ベクタ値を変更する場合は、基板側と同等の初期ベクタ値を適当なエディタで変更する。

15４）基板側の各項目の確認と設定。
表示項目
AES_mode[CBC]KeyLength[128]

DEST_IP[192.168.21.53]

説明
送受信モードの指定◎“C”キー入力によりモード変更
PLAIN -> CBC ->PLAIN◎変数のフラグにより指定
aes.c:：int AES_crypto_mode = CBC; // 1=CBCAES-CBC モード時の Key ビット時の指定◎“L”キー入力により Key ビット変更
128 -> 192 -> 256 -> 128◎変数の数値により指定
aes.c:：int AES_crypto_bit = 128;
送信先(PC 側)IP アドレス
◎define にて指定
tcp_aes_thread_entry.c：#define DEST_IP IP_ADDRESS(192,168,21,53)

共通鍵データの保存モジュールと変数【aws_aes.c】
uint8_t AES_key[32] ={ // default aes_common_key 共通鍵 128bit | 192bit | 256bit
0x11,0x11,0x11,0x11,0x22,0x22,0x22,0x22,0x33,0x33,0x33,0x33,0x44,0x44,0x44,0x44, // 128bit
0x55,0x55,0x55,0x55,0x66,0x66,0x66,0x66,// ↑ + 192bit
0x77,0x77,0x77,0x77,0x88,0x88,0x88,0x88,// ↑ + 256bit};
初期ベクタ値データの保存モジュールと変数【aws_aes.c】
uint8_t AES_iv[16] = { // default aes_initial_vect 初期化ベクタ
0x01,0x3B,0x01,0x02,0xC7,0xD6,0xF2,0x1D,0x9E,0x18,0x6F,0x84,0x54,0x82,0x0A,0xDB};

16５）基板側から PC(server) 側へ CBC 暗号テキストを送信する。

①C と L キー以外の Key を Push(1)基板側に保存してある原文のダンプ表示(2) 原 文 を 暗 号 化 し てPC(server)側に送信した暗号文のダンプ表示(3)PC(server)が受信した暗号文を復号した文章を PC（server）側で暗号化した暗号文を受信したダンプ表示(4)受信した PC(server)からの暗号文を復号化した複合文のダンプ表示①「(1)PlainText」と「(4)DecryptText」が同等の場合、基板側と PC 側が同等な復号処理（デコード）であることの実証になる。
②「(2)Send EncrptText」と「(3)Recv EncrptText」が同等の場合、基板側と PC 側が同等な暗号処理（エンコード）であることの実証になる。
17

６）「TCP_IP_AES_OpenSSL」側の送受信を確認する。

(1)基板側から受信した暗号文のダンプ表示(2)受信した暗号文を復号化した復号文のダンプ表示(3)復号化した復号文を暗号化して基板側に送信した暗号文のダンプ表示①「(1)Receive encode_data from client」と「(3)Send encode_data to client」が同等の場合、基板側と PC 側が同等な暗号処理（エンコード）であることの実証になる。
②「(2)Create decode_data」と「基板」側の「(4)DecryptText 」が同等の場合、基板側と PC 側が同等な復号処理（デコード）であることの実証になる。

18

６．注意事項
・本文書の著作権は、エーワン（株）が保有します。
・本文書を無断での転載は一切禁止します。
・本文書に記載されている内容についての質問やサポートはお受けすることが出来ません。
・本文章に関して、ルネサス エレクトロニクス社への問い合わせは御遠慮願います。
・本文書の内容に従い、使用した結果、損害が発生しても、弊社では一切の責任は負わないものとします。
・本文書の内容に関して、万全を期して作成しましたが、ご不審な点、誤りなどの点がありましたら弊社までご連絡くだされば幸いです。
・本文書の内容は、予告なしに変更されることがあります。
７．商標
・e2studio・RX65N は、ルネサス エレクトロニクス株式会社の登録商標または商品名称です。
・CK-RX65N は、ルネサス エレクトロニクス株式会社の商品名です。
・その他の会社名、製品名は、各社の登録商標または商標です。
８．参考文献・「RX65N ユーザーズマニュアル ハードウェア編」 ルネサス エレクトロニクス株式会社
・「e2studio ユーザーズマニュアル 入門ガイド」
ルネサス エレクトロニクス株式会社
・「FreeRTOS 」
Amazon.com, Inc.
・ルネサス エレクトロニクス株式会社提供のサンプル集
・その他〒486-0852
愛知県春日井市下市場町 6-9-20
エーワン株式会社

https://www.aone.co.jp
19