From 1765eeddb2463229d357abdb56b9222d46d27034 Mon Sep 17 00:00:00 2001 From: Hideki Miyazaki Date: Thu, 8 Oct 2020 22:16:45 +0900 Subject: [PATCH 1/2] added set up guide for APRA6M board added TLS 1.3 settings into user_settings.h --- IDE/Renesas/e2studio/RA6M3/README.md | 155 +++++++------- .../e2studio/RA6M3/README_APRA6M_en.md | 198 ++++++++++++++++++ .../e2studio/RA6M3/README_APRA6M_jp.md | 197 +++++++++++++++++ .../client-wolfssl/src/wolfssl_thread_entry.c | 2 +- .../client-wolfssl/wolfssl_thread_entry.h | 3 +- .../e2studio/RA6M3/common/user_settings.h | 7 + .../server-wolfssl/src/wolfssl_thread_entry.c | 2 +- .../server-wolfssl/wolfssl_thread_entry.h | 3 +- IDE/Renesas/e2studio/RA6M3/wolfssl/.project | 15 -- 9 files changed, 493 insertions(+), 89 deletions(-) create mode 100644 IDE/Renesas/e2studio/RA6M3/README_APRA6M_en.md create mode 100644 IDE/Renesas/e2studio/RA6M3/README_APRA6M_jp.md diff --git a/IDE/Renesas/e2studio/RA6M3/README.md b/IDE/Renesas/e2studio/RA6M3/README.md index 4e0aa7cc9..3f0d9632a 100644 --- a/IDE/Renesas/e2studio/RA6M3/README.md +++ b/IDE/Renesas/e2studio/RA6M3/README.md @@ -4,7 +4,7 @@ wolfSSL for Renesas RA Evaluation Kit (EK-RA6M3G) ## Description This directory contains e2studio projects targeted at the Renesas RA 32-bit MCUs.\ -The example projects include a wolfSSL TLS 1.2 client and server.\ +The example projects include a wolfSSL TLS client and server.\ They also include benchmark and cryptography tests for the wolfCrypt library. The wolfssl project contains both the wolfSSL and wolfCrypt libraries.\ @@ -15,28 +15,31 @@ The other projects (benchmark, client, server and test) are built as a\ `Renesas RA C Project Using RA Library`, where the RA library is the wolfssl project.\ The wolfssl Project Summary is listed below and is relevant for every project. -#### Project Summary +### Project Summary +|Item|Name/Version| +|:--|:--| +|Board|EK-RA6M3G| +|Device|R7FA6M3AH3CFC| +|Toolchain|GCC ARM Embedded| +|FSP Version|0.8.0| -`Board: EK-RA6M3G`\ -`Device: R7FA6M3AH3CFC`\ -`Toolchain: GCC ARM Embedded`\ -`FSP Version: 0.8.0` +#### Selected software components -##### Selected software components - -`Board Support Package Common Files v0.8.0`\ -`Arm CMSIS Version 5 - Core (M) v5.5.1`\ -`Amazon FreeRTOS v0.8.0`\ -`RA6M3G-EK Board Support Files v0.8.0`\ -`Board support package for R7FA6M3AH3CFC v0.8.0`\ -`Board support package for RA6M3 v0.8.0`\ -`Board support package for RA6M3 v0.8.0`\ -`Amazon FreeRTOS - Memory Management - Heap 4 v0.8.0`\ -`r_ether to FreeRTOS+TCP Wrapper v0.8.0`\ -`Ethernet v0.8.0`\ -`Ethernet PHY v0.8.0`\ -`FreeRTOS+TCP v0.8.0`\ -`Amazon FreeRTOS - Buffer Allocation 2 v0.8.0` +|Components|Version| +|:--|:--| +|Board Support Package Common Files|v0.8.0`| +|Arm CMSIS Version 5 - Core (M)|v5.5.1| +|Amazon FreeRTOS|v0.8.0| +|RA6M3G-EK Board Support Files|v0.8.0| +|Board support package for R7FA6M3AH3CFC|v0.8.0| +|Board support package for RA6M3|v0.8.0| +|Board support package for RA6M3|v0.8.0| +|Amazon FreeRTOS - Memory Management - Heap 4|v0.8.0| +|r_ether to FreeRTOS+TCP Wrapper|v0.8.0| +|Ethernet|v0.8.0| +|Ethernet PHY|v0.8.0| +|FreeRTOS+TCP|v0.8.0| +|Amazon FreeRTOS - Buffer Allocation 2|v0.8.0| ## Setup Steps @@ -46,55 +49,64 @@ These files can be generated when creating a new Renesas RA Project.\ The following steps explain how to generate the missing files and where to place them. 1.) Create a 'dummy' Renesas RA C Library Project. - + Click File->New->`RA C/C++ Project` - + Click `Renesas RA C Library Project`. Click Next - + Enter `dummy_library` as the project name. Click Next. - + Under `Board: Custom User Board`, select `EK-RA6M3G`. - + Under `RTOS: No RTOS`, select `Amazon FreeRTOS`. - + Click Next. Select `Amazon FreeRTOS - Minimal - Static Allocation` - + Click Finish. + ++ Click File->New->`RA C/C++ Project` ++ Click `Renesas RA C Library Project`. Click Next ++ Enter `dummy_library` as the project name. Click Next. ++ Under `Board: Custom User Board`, select `EK-RA6M3G`. ++ Under `RTOS: No RTOS`, select `Amazon FreeRTOS`. ++ Click Next. Select `Amazon FreeRTOS - Minimal - Static Allocation` ++ Click Finish. 2.) Create a 'dummy' Renesas RA C Project Using RA Library. - + Click File->New->`RA C/C++ Project` - + Click `Renesas RA C Project Using RA Library`. Click Next - + Enter `dummy_app` as the project name. Click Next. - + Under `RA library project`, select `dummy_library`. - + Click Finish. + ++ Click File->New->`RA C/C++ Project` ++ Click `Renesas RA C Project Using RA Library`. Click Next ++ Enter `dummy_app` as the project name. Click Next. ++ Under `RA library project`, select `dummy_library`. ++ Click Finish. 3.) Import all the wolfSSL Projects into e2studio workspace. - + Click File->`Open Projects from File System` - + Click `Directory...` to the right of Import source - + Select the RA6M3G folder location that contains the projects\ - example path: wolfssl/IDE/Renesas/e2studio/RA6M3 - + Deselect the Non-Eclipse project, RA6M3G, by clicking the checkbox\ - Only the folders with 'Eclipse project' under 'Import as' need to be selected. - + Click Finish. + ++ Click File->`Open Projects from File System` ++ Click `Directory...` to the right of Import source ++ Select the RA6M3G folder location that contains the projects\ + example path: wolfssl/IDE/Renesas/e2studio/RA6M3 ++ Deselect the Non-Eclipse project, RA6M3G, by clicking the checkbox\ + Only the folders with 'Eclipse project' under 'Import as' need to be selected. ++ Click Finish. 4.) Copy files from `dummy_library` into `wolfSSL_RA6M3G` - + Expand the dummy_library and wolfSSL_RA6M3G projects\ - (Click the drop-down arrow to the left of the project name.) - + Select and Copy the following folders/files inside dummy_library\ -` ra/`\ -` ra_gen/`\ -` ra_cfg/`\ -` script/`\ -` R7FA6M3AH3CFC.pincfg`\ -` RA6M3G-EK.pingcfg` - + Paste the copied folders/files into wolfSSL_RA6M3G - + The `dummy_library` project can now be deleted. - + Generate Project Content. - + Click `Open RA Configuration` in the top bar (Grey Settings Cog) - + Click `Generate Project Content` at top right (Green Icon) - + Build wolfSSL_RA6M3G. + ++ Expand the dummy_library and wolfSSL_RA6M3G projects\ + (Click the drop-down arrow to the left of the project name.) ++ Select and Copy the following folders/files inside dummy_library\ + + `ra/`\ + `ra_gen/`\ + `ra_cfg/`\ + `script/`\ + `R7FA6M3AH3CFC.pincfg`\ + `RA6M3G-EK.pingcfg` + ++ Paste the copied folders/files into wolfSSL_RA6M3G ++ The `dummy_library` project can now be deleted. ++ Generate Project Content. + + Click `Open RA Configuration` in the top bar (Grey Settings Cog) + + Click `Generate Project Content` at top right (Green Icon) ++ Build wolfSSL_RA6M3G. 5.) Copy files from `dummy_app` into `./IDE/Renesas/e2studio/RA6M3/common/ra6m3g/`\ **NOTE:** This may need to be done outside of the e2studio environment (e.g. File Explorer). - + Select and Copy the followng folder inside dummy_app\ -` src/`\ -` script/` - + Paste the copied folders into `./IDE/Renesas/e2studio/RA6M3/common/ra6m3g/`\ -` (The test, benchmark, client and server projects link to this folder.)` - + The `dummy_app` project can now be deleted. + ++ Select and Copy the followng folder inside dummy_app\ + + `src/`\ + `script/` + ++ Paste the copied folders into `./IDE/Renesas/e2studio/RA6M3/common/ra6m3g/`\ + `(The test, benchmark, client and server projects link to this folder.)` ++ The `dummy_app` project can now be deleted. 6.) Setup Network Environment @@ -112,12 +124,14 @@ The following steps explain how to generate the missing files and where to place Right-Click each Project and select Build. ### Run wolfCrypt Test and Benchmark + 1.) Right-Click the Project name.\ 2.) Select `Debug As` -> `Renesas GDB Hardware Debugging`\ 3.) Select J-Link ARM. Click OK.\ 4.) Select R7Fa6M3AH. Click OK. ### Run the wolfSSL TLS Server Example. + 1.) Right-Click the Project name.\ 2.) Select `Debug As` -> `Renesas GDB Hardware Debugging`\ 3.) Select J-Link ARM. Click OK.\ @@ -125,34 +139,35 @@ Right-Click each Project and select Build. 5.) Run the following wolfSSL example client command inside the base of the wolfssl directory. ``` -./examples/client/client -h "ucIPAddress" -p 11111 -A ./certs/1024/ca-cert.pem +./examples/client/client -v 4 -h "ucIPAddress" -p 11111 -A ./certs/1024/ca-cert.pem ``` + **NOTE:** "ucIPAddress" is "192.168.1.241" by default. (See wolfssl_thread_entry.h) ### Run the wolfSSL TLS Client Example. + 1.) Run the following wolfSSL example server command inside the base of the wolfssl directory. ``` -./examples/server/server -b -d -p 11111 -c ./certs/1024/server-cert.pem -k ./certs/1024/server-key.pem +./examples/server/server -v 4 -b -d -p 11111 -c ./certs/1024/server-cert.pem -k ./certs/1024/server-key.pem ``` -**NOTE:** The port 11111 is the DEFAULT_PORT inside wolfssl_thread_entry.h.\ -If DEFAULT_PORT was changed then the above command will need to match it. + + **NOTE:** The port 11111 is the DEFAULT_PORT inside wolfssl_thread_entry.h.\ 2.) Right-Click the Project name.\ 3.) Select `Debug As` -> `Renesas GDB Hardware Debugging`\ 4.) Select J-Link ARM. Click OK.\ 5.) Select R7Fa6M3AH. Click OK. - ## Troubleshooting -* The commands for the example client/server assumes it is being run from the ++ The commands for the example client/server assumes it is being run from the base directory of wolfssl. -* Enter "#define DEBUG_WOLFSSL" inside user_settings.h or wolfssl_thread_entry.c\ ++ Enter "#define DEBUG_WOLFSSL" inside user_settings.h or wolfssl_thread_entry.c\ to enable wolfssl debug messages to the Renesas Virtual Debug Console. - -* Some linking errors can be caused by the e2studio project files needing to be rebuilt and freshened. + ++ Some linking errors can be caused by the e2studio project files needing to be rebuilt and freshened. Right-Click a project, select Index, click Rebuild and then click Freshen Files. Repeat for each project. [Support Forum](https://www.wolfssl.com/forums/) diff --git a/IDE/Renesas/e2studio/RA6M3/README_APRA6M_en.md b/IDE/Renesas/e2studio/RA6M3/README_APRA6M_en.md new file mode 100644 index 000000000..2f425aa00 --- /dev/null +++ b/IDE/Renesas/e2studio/RA6M3/README_APRA6M_en.md @@ -0,0 +1,198 @@ +wolfSSL for Alpha Project AP-RA6M-0A Setup Guide +================================================= + +## Description + +This directory contains e2studio projects targeted at the Alpha Project AP-RA6M-0A board including the Renesas RA 32-bit MCUs. +The example projects include a wolfSSL TLS client and server. They also include benchmark and cryptography tests for the wolfCrypt library. + +The wolfssl project contains both the wolfSSL and wolfCrypt libraries. It is built as a `Renesas RA C Library Project` and contains the Renesas RA configuration. + +The other projects (benchmark, client, server and test) are built as a `Renesas RA C Project Using RA Library`, where the RA library is the wolfssl project. +The wolfssl Project Summary is listed below and is relevant for every project. + +### Project Summary +|Item|Name/Version| +|:--|:----| +|e2studio|2020-07| +|Board |AP-RA6M-0A | +|Device |R7FA6M3AH3CFC| +|Toolchain|GCC ARM Embedded +|FSP Version|1.3.0| + +### Selected software components +|Component|Version| +|:--|:---| +|Board Support Package Common Files|v1.3.0| +|Arm CMSIS Version 5 - Core (M) |v5.7.0| +|Board support package for R7FA6M3AH3CFC |v1.3.0| +|Board support package for RA6M3|v1.3.0 | +|Board support package for RA6M3 - FSP Data|v1.3.0| +|FreeRTOS|v1.3.0| +|FreeRTOS - Buffer Allocation 2 |v1.3.0| +|FreeRTOS+TCP|v1.3.0| +|r_ether to FreeRTOS+TCP Wrapper|v1.3.0| +|Ethernet |v1.3.0 | +|Ethernet PHY|v1.3.0| +|I/O Port|v1.3.0 | +|BSP-Board|v1.2.0 | + +## Setup Steps + +The project directories are missing files necessary to build the project.\ +These files can be generated when creating a new Renesas RA Project.\ +The following steps explain how to generate the missing files and where to place them. + +1.) Download Alpha project example program from [Alpha Project Home Page](https://www.apnet.co.jp/product/ra/ap-ra6m-0a.html) + ++ Unzip the downloaded example project + +2.) Create a 'dummy' Renesas RA C Library Project on e2studio + ++ Click File->New->`RA C/C++ Project` ++ Enter `dummy_library` as the project name. Click Next. ++ Select `Board: Custom User Board`. ++ Select `R7FA6M3AH3CFC ++ Under `RTOS: No RTOS`, select `FreeRTOS`. ++ Click Next. Select `FreeRTOS - Minimal - Static Allocation` ++ Click `Renesas RA C Library Project`. Click Next ++ Click Finish. + +3.) Create a 'dummy' Renesas RA C Project Using RA Library on e2studio + ++ Click File->New->`RA C/C++ Project` ++ Enter `dummy_app` as the project name. Click Next. ++ Under `RA library project`, select `dummy_library`. ++ Click `Executable Using an RA Static Library`. Click Next ++ Click Finish. ++ Enter `dummy_app` as Project name ++ Select RA library project `dummy_library` + +4.) Import all the wolfSSL Projects into e2studio workspace. + ++ Click File->`Open Projects from File System` ++ Click `Directory...` to the right of Import source ++ Select the RA6M3G folder location that contains the projects + example path: wolfssl/IDE/Renesas/e2studio/RA6M3 ++ Deselect the Non-Eclipse project, RA6M3G, by clicking the checkbox + Only the folders with 'Eclipse project' under 'Import as' need to be selected. ++ Click Finish. + +5.) Copy files from `dummy_library` into `wolfSSL_RA6M3G` + ++ Expand the dummy_library and wolfSSL_RA6M3G projects + (Click the drop-down arrow to the left of the project name.) ++ Select and Copy the following folders/files inside dummy_library + + `ra/` + `ra_gen/` + `ra_cfg/` + `script/` + ++ Paste the copied folders/files into wolfSSL_RA6M3G ++ The `dummy_library` project can now be deleted. ++ Copy `APRA6M0A.pincfg` from ap_ra6m_0a_sample\sample\ap_ra6m_0a_ether_sample to wolfSSL_RA6M3G ++ Delete `R7FA6M3AH3CFC.pincfg` from wolfSSL_RA6M3G ++ Generate Project Content. + + + Click `Open RA Configuration` in the top bar (Grey Settings Cog) + + Go to `BSP` tab and import CMSIS pack file, AP.APRA6M0A.x.x.x.pack, from ap_ra6m_0a_sample\sample folder + + Select APRA6M0A as Board + + Go to `Pins` tab and select APRA6M0A.pincfg + + Go to `Stacks` tab and add Heap 4 stack from New Stack(+ Icon) + + Click `Generate Project Content` at top right (Green Icon) ++ Build wolfSSL_RA6M3G. + +6.) Copy files from `dummy_app` into `./IDE/Renesas/e2studio/RA6M3/common/ra6m3g/` + **NOTE:** This may need to be done outside of the e2studio environment (e.g. File Explorer). + ++ Select and Copy the followng folder inside dummy_app + + `src/` + `script/` + ++ Paste the copied folders into `./IDE/Renesas/e2studio/RA6M3/common/ra6m3g/` +`(The test, benchmark, client and server projects link to this folder.)` ++ The `dummy_app` project can now be deleted. + +7.) Setup Network Environment + + The client and server projects have defines inside their wolfssl_thread_entry.h. + These defines (ucIPAddress ... ucDNSServerAddress) may need to be changed + based on your internal network environment. The g_ether0_mac_address is the default + mac address found inside the RA configuration inside the wolfssl project. + The client wolfssl_thread_entry.h has defines (SERVER_IP and DEFAULT_PORT) that + will need to be changed based on the server you're trying to connect to over + the ethernet connection. + +## Build and Run + +### Build Each Project +Right-Click each Project and select Build. + +### Run wolfCrypt Test and Benchmark + +1.) Right-Click the Project name. +2.) Select `Debug As` -> `Renesas GDB Hardware Debugging` +3.) Select J-Link ARM. Click OK. +4.) Select R7Fa6M3AH. Click OK. + +### Run the wolfSSL TLS Server Example. + +1.) Right-Click the Project name. +2.) Select `Debug As` -> `Renesas GDB Hardware Debugging` +3.) Select J-Link ARM. Click OK. +4.) Select R7Fa6M3AH. Click OK. +5.) Run the following wolfSSL example client command inside the base of the wolfssl directory. + +``` +./examples/client/client -v 4 -h "ucIPAddress" -p 11111 -A ./certs/1024/ca-cert.pem +``` + +**NOTE:** "ucIPAddress" is "192.168.1.241" by default. (See wolfssl_thread_entry.h) + +### Run the wolfSSL TLS Client Example. + + 1.) Run the following wolfSSL example server command inside the base of the wolfssl directory. + +``` +./examples/server/server -v 4 -b -d -p 11111 -c ./certs/1024/server-cert.pem -k ./certs/1024/server-key.pem +``` + + **NOTE:** The port 11111 is the DEFAULT_PORT inside wolfssl_thread_entry.h. + If DEFAULT_PORT was changed then the above command will need to match it. + + 2.) Right-Click the Project name.\ + 3.) Select `Debug As` -> `Renesas GDB Hardware Debugging`\ + 4.) Select J-Link ARM. Click OK.\ + 5.) Select R7Fa6M3AH. Click OK. + +## Troubleshooting + ++ The commands for the example client/server assumes it is being run from the + base directory of wolfssl. + ++ Enter "#define DEBUG_WOLFSSL" inside user_settings.h or wolfssl_thread_entry.c + to enable wolfssl debug messages to the Renesas Virtual Debug Console. + ++ Some linking errors can be caused by the e2studio project files needing to be rebuilt and freshened. +Right-Click a project, select Index, click Rebuild and then click Freshen Files. Repeat for each project. + +[Support Forum](https://www.wolfssl.com/forums/) + +Support Email: support@wolfssl.com + + +## Resources + +[wolfSSL Website](https://www.wolfssl.com/) + +[wolfSSL Wiki](https://github.com/wolfSSL/wolfssl/wiki) + +[wolfSSL Manual](https://wolfssl.com/wolfSSL/Docs-wolfssl-manual-toc.html) + +[wolfSSL API Reference](https://wolfssl.com/wolfSSL/Docs-wolfssl-manual-17-wolfssl-api-reference.html) + +[wolfCrypt API Reference](https://wolfssl.com/wolfSSL/Docs-wolfssl-manual-18-wolfcrypt-api-reference.html) + +[TLS 1.3](https://www.wolfssl.com/docs/tls13/) diff --git a/IDE/Renesas/e2studio/RA6M3/README_APRA6M_jp.md b/IDE/Renesas/e2studio/RA6M3/README_APRA6M_jp.md new file mode 100644 index 000000000..d3dc23a96 --- /dev/null +++ b/IDE/Renesas/e2studio/RA6M3/README_APRA6M_jp.md @@ -0,0 +1,197 @@ +wolfSSL/AlphaProject AP-RA6M-0A ボードデモ セットアップガイド +================================================= + +## はじめに + +このフォルダにはルネサス社製 RA 32-bit MCU を搭載するアルファプロジェクト製 AP-RA6M-0A で wolfSSL を動作させるための手順です。 +サンプルプログラムには、暗号テスト、ベンチマーク、及びクライアント・サーバーを含んでいます。 + +wolfSSL のプロジェクトファイルは、wolfSSL と wolfCrypt の両方で構成され、Renesas RA のコンフィグレーションを含む`Renesas RA C/C++ Library Project`としてビルドされます。 +その他、ベンチマーク、暗号テスト、及びクライアント・サーバーのサンプルプログラムは、`Renesas RA C Project Using RA Library`としてビルドされます。 + +プロジェクトの概要と全ての関連するソフトウェアコンポーネントに関する情報を下記になります。 + +### プロジェクトの概要 +|要素|名前/バージョン| +|:--|:--| +|e2studio|2020-07| +|Board|AP-RA6M-0A| +|Device|R7FA6M3AH3CFC| +|Toolchain|GCC ARM Embedded| +|FSP Version|1.3.0| + +#### 必要なソフトウェアコンポーネント +|コンポーネント|バージョン| +|:--|:--| +|Board Support Package Common Files|v1.3.0| +|Arm CMSIS Version 5 - Core (M) |v5.7.0| +|Board support package for R7FA6M3AH3CFC |v1.3.0| +|Board support package for RA6M3|v1.3.0 | +|Board support package for RA6M3 - FSP Data|v1.3.0| +|FreeRTOS|v1.3.0| +|FreeRTOS - Buffer Allocation 2 |v1.3.0| +|FreeRTOS+TCP|v1.3.0| +|r_ether to FreeRTOS+TCP Wrapper|v1.3.0| +|Ethernet |v1.3.0 | +|Ethernet PHY|v1.3.0| +|I/O Port|v1.3.0 | +|BSP-Board|v1.2.0 | + +## セットアップ手順 + +プロジェクトのフォルダーには、ビルドに必要なファイルが不足しています。そららのファイルをダミーのプロジェクトを作成し補います。 + +次に続くステップは、不足しているファイルを作成し、それらを必要としているプロジェクトにコピーする手順です。 + +1.) [アルファプロジェクト社のホームページ](https://www.apnet.co.jp/product/ra/ap-ra6m-0a.html)からサンプルプログラムをダウンロード + ++ ダウンロードしたサンプルプログラムを適当なフォルダーへ解凍 + +2.) e2Studio で'ダミー' Renesas RA C Library プロジェクトを作成 + ++ ファイル→新規→`RA C/C++ Project`をクリック ++ `Renesas RA C/C++ Library Project`を選択し、次へをクリック ++ 'dummy_library` とプロジェクト名を入力します。 ++ `Board:` ドロップダウンから `EK-RA6M3T`を選択します ++ `RTOS: No TROS` を `FreeRTOS` を選択します。 ++ `Build Artifact Selection` の `Static Library`を選択し、次へをクリック ++ `FreeRTOS - Minimal - Static Allocation` を選択し、終了をクリック + +3.) e2Studio で 'ダミー'の Renesas RA C/C++ Project Using RA Library を作成 + ++ ファイル→新規→`RA C/C++ Project`をクリック ++ `Renesas RA C/C++ Library Project`を選択し、次へをクリック ++ 'dummy_app` とプロジェクト名を入力します。 ++ `Board:` ドロップダウンから `EK-RA6M3T`を選択します ++ `RTOS: No TROS` を `FreeRTOS` を選択しまし、次へをクリック ++ `Build Artifact Selection` の `Executable Using an RA Static Library`を選択し、終了をクリック ++ 'dummy_app` とプロジェクト名を入力し、次へクリック ++ `RA library project`の `Select RA Library`から, `dummy_library`を選択し、終了をクリック + +4.) 全ての wolfSSL e2studio プロジェクトをインポート + ++ メニューの「ファイル」→「ファイル・システムからプロジェクトを開く」をクリック ++ インポート元の `ディレクトリー...` をクリック ++ RA6M3 フォルダーを選択。wolfssl/IDE/Renesas/e2studio/RA6M3 ++ Eclipseのプロジェクトではない、RA6M3を除外します。 + その他、ベンチマーク、暗号テスト、クライアント・サーバーの各プロジェクトは選択しておく。 ++ 終了をクリック + +5.) `dummy_library`からwolfSSL_RA6M3Gへ必要なファイルをコピー + ++ `dummy_library` と `wolfSSL_RA6M3G` プロジェクトを開く + プロジェクト名横にある矢印マークをクリック ++ `dummy_library` の以下のフォルダーとファイルを選択 + + `ra/` + `ra_gen/` + `ra_cfg/` + `script/` + ++ 選択したフォルダーとファイルを `wolfSSL_RA6M3G`プロジェクトに貼り付け ++ `dummy_library`プロジェクトは削除しても構いません ++ `APRA6M0A.pincfg` を解凍した ap_ra6m_0a_sample\sample\ap_ra6m_0a_ether_sample から `wolfSSL_RA6M3G`プロジェクトへコピー ++ `wolfSSL_RA6M3G`フォルダー内の `R7FA6M3AH3CFC.pincfg` は削除します。 ++ プロジェクトに必要なファイルを生成します。 ++ `Open RA Configuration`(上部のアイコンバーにある灰色歯車ボタン)をクリック + + + `BSP` タブに移動し、CMSIS Pack のインポートボタンをクリック + + インポート画面で、CMSIS pack ファイルを指定 + ステップ 1で解凍したap_ra6m_0a_sample\sampleフォルダー中の AP.APRA6M0A.x.x.x.pack を指定します。 + + `APRA6M0A` を Board として指定 + + `Pins`タブに移動し、`APRA6M0A.pincfg`を選択 + + `Stacks`タブに移動し、Heap 4 stack を New Stack から追加 + + `Generate Project Content`(右上部にある緑色アイコン)をクリックし、ファイルを生成 ++ `wolfSSL_RA6M3G`をビルド + +6.) `dummy_app` から必要なファイルを`./IDE/Renesas/e2studio/RA6M3/common/ra6m3g/`へコピー + + **NOTE:** この作業は、e2studio ではなく、Explorer などを使用します。 + ++ `dummy_app`の以下のフォルダーをコピー + + `src/` + `script/` + ++ 選択したフォルダーを`./IDE/Renesas/e2studio/RA6M3/common/ra6m3g/`へコピー +`(暗号テスト、ベンチマーク、クライアント・サーバーの各プロジェクトはこのフォルダーを参照)` ++ `dummy_app`プロジェクトは削除しても構いません + +7.) ネットワーク環境について + + クライアント・サーバーのプロジェクト内のwolfssl_thread_entry.hにネットワーク設定があります。 + それらの設定(ucIPAddress ... ucDNSServerAddress)は、ご使用のネットワーク環境に合わせて変更して + してください。g_ether0_mac_address は、`wolfSSL_RA6M3G`プロジェクト内の RA configuration + で定義されているデフォルトのMACアドレスです。クライアントのwolfssl_thread_entry.h は + ターゲットのサーバーのSERVER_IP と DEFAULT_PORTの定義を持ちます。それらはご使用のサーバーの + の設定に応じて変更してください。 + +## ビルドと実行 + +### 各プロジェクトをビルド +各プロジェクトで右クリックし、ビルドを選択 + +### 暗号テストとベンチマークを実行 + +1.) プロジェクト名を選択し、右クリック\ +2.) `デバック` → `Renesas GDB Hardware Debugging`\ +3.) `J-Link ARM`を選択し、OK をクリック\ +4.) `R7FA6M3AH`を選択し、OK をクリック + +### wolfSSL TLS サンプルサーバーを実行 + +1.) プロジェクト名を選択し、右クリック\ +2.) `デバック` → `Renesas GDB Hardware Debugging`\ +3.) `J-Link ARM`を選択し、OK をクリック\ +4.) `R7FA6M3AH`を選択し、OK をクリック\ +5.)以下のサンプルのクライアントプログラムを実行 + +``` +./examples/client/client -v 4 -h "ucIPAddress" -p 11111 -A ./certs/1024/ca-cert.pem +``` + +**NOTE:** "ucIPAddress" はデフォルトでは "192.168.1.241" (参照: wolfssl_thread_entry.h) + +### wolfSSL TLS サンプルクライアントを実行 +1.)以下のサンプルのサーバープログラムを実行 + +``` +./examples/server/server -b -d -p 11111 -c ./certs/1024/server-cert.pem -k ./certs/1024/server-key.pem +``` + +TLS 1.3 で接続する際には、引数に "-v 4" を追加します。 +``` +./examples/server/server -v 4 -b -d -p 11111 -c ./certs/1024/server-cert.pem -k ./certs/1024/server-key.pem +``` +**NOTE:** wolfssl_thread_entry.h中にデフォルトのポート番号 11111 定義(DEFAULT_PORT) +もし、DEFAULT_PORTを変更している場合、、上記のコマンドの "-p" の値は対応するポート番号に要変更 + +2.) プロジェクト名を選択し、右クリック\ +3.) `デバック` → `Renesas GDB Hardware Debugging`\ +4.) `J-Link ARM`を選択し、OK をクリック\ +5.) `R7FA6M3AH`を選択し、OK をクリック + +## トラブルシューティング + ++ サンプルのクライアント・サーバープログラムは、wolfSSL のルートディレクトリから実行する必要があります。 ++ user_settings.h の #define DEBUG_WOLFSSL を有効にすることで、デバックメッセージを\ + `Renesas Virtual Debug Console`へ出力します。 ++ プロジェクトのビルドでリンクエラーが出た場合、リビルドしリフレッシュすることで解決することがあります。 + +[Support Forum](https://www.wolfssl.com/forums/) + +Support Email: support@wolfssl.com + +## 参考リンク + +[wolfSSL Website](https://www.wolfssl.com/) + +[wolfSSL Wiki](https://github.com/wolfSSL/wolfssl/wiki) + +[wolfSSL Manual](https://wolfssl.com/wolfSSL/Docs-wolfssl-manual-toc.html) + +[wolfSSL API Reference](https://wolfssl.com/wolfSSL/Docs-wolfssl-manual-17-wolfssl-api-reference.html) + +[wolfCrypt API Reference](https://wolfssl.com/wolfSSL/Docs-wolfssl-manual-18-wolfcrypt-api-reference.html) + +[TLS 1.3](https://www.wolfssl.com/docs/tls13/) diff --git a/IDE/Renesas/e2studio/RA6M3/client-wolfssl/src/wolfssl_thread_entry.c b/IDE/Renesas/e2studio/RA6M3/client-wolfssl/src/wolfssl_thread_entry.c index 461cfab5b..a7a6d3f72 100644 --- a/IDE/Renesas/e2studio/RA6M3/client-wolfssl/src/wolfssl_thread_entry.c +++ b/IDE/Renesas/e2studio/RA6M3/client-wolfssl/src/wolfssl_thread_entry.c @@ -95,7 +95,7 @@ void wolfssl_thread_entry(void *pvParameters) { wolfSSL_Init(); /* Create and initialize WOLFSSL_CTX */ - ctx = wolfSSL_CTX_new(wolfTLSv1_2_client_method()); + ctx = wolfSSL_CTX_new(wolfSSLv23_client_method_ex((void *)NULL)); if (ctx == NULL) { printf("Error: wolfSSL_CTX_new.\n"); util_inf_loop(xClientSocket, ctx, ssl); diff --git a/IDE/Renesas/e2studio/RA6M3/client-wolfssl/wolfssl_thread_entry.h b/IDE/Renesas/e2studio/RA6M3/client-wolfssl/wolfssl_thread_entry.h index d63d66952..8184edbb2 100644 --- a/IDE/Renesas/e2studio/RA6M3/client-wolfssl/wolfssl_thread_entry.h +++ b/IDE/Renesas/e2studio/RA6M3/client-wolfssl/wolfssl_thread_entry.h @@ -24,11 +24,12 @@ #include #include +extern uint8_t g_ether0_mac_address[6]; + static const byte ucIPAddress[4] = { 192, 168, 1, 241 }; static const byte ucNetMask[4] = { 255, 255, 255, 0 }; static const byte ucGatewayAddress[4] = { 192, 168, 1, 1 }; static const byte ucDNSServerAddress[4] = { 192, 168, 1, 1 }; -static const byte g_ether0_mac_address[6] = { 0x00, 0x11, 0x22, 0x33, 0x44, 0x55 }; /* Client connects to the server with these details. */ #define SERVER_IP "192.168.1.240" diff --git a/IDE/Renesas/e2studio/RA6M3/common/user_settings.h b/IDE/Renesas/e2studio/RA6M3/common/user_settings.h index 161e52c1b..4a496e751 100644 --- a/IDE/Renesas/e2studio/RA6M3/common/user_settings.h +++ b/IDE/Renesas/e2studio/RA6M3/common/user_settings.h @@ -21,10 +21,16 @@ #ifndef USER_SETTINGS_H_ #define USER_SETTINGS_H_ + /* Temporary defines. Not suitable for production. */ #define WOLFSSL_GENSEED_FORTEST /* Warning: define your own seed gen */ /* End temporary defines */ +/* TLS 1.3 */ +#define WOLFSSL_TLS13 +#define HAVE_HKDF +#define WC_RSA_PSS + /* Operating Environment and Threading */ #define FREERTOS #define FREERTOS_TCP @@ -73,5 +79,6 @@ void wolfssl_thread_entry(void *pvParameters); extern void initialise_monitor_handles(void); +int strncasecmp(const char *s1, const char * s2, unsigned int sz); #endif /* USER_SETTINGS_H_ */ diff --git a/IDE/Renesas/e2studio/RA6M3/server-wolfssl/src/wolfssl_thread_entry.c b/IDE/Renesas/e2studio/RA6M3/server-wolfssl/src/wolfssl_thread_entry.c index 01cf0b573..04518edb8 100644 --- a/IDE/Renesas/e2studio/RA6M3/server-wolfssl/src/wolfssl_thread_entry.c +++ b/IDE/Renesas/e2studio/RA6M3/server-wolfssl/src/wolfssl_thread_entry.c @@ -96,7 +96,7 @@ void wolfssl_thread_entry(void *pvParameters) { configASSERT(xConnectedSocket != FREERTOS_INVALID_SOCKET); /* Create WOLFSSL_CTX object */ - ctx = wolfSSL_CTX_new(wolfTLSv1_2_server_method()); + ctx = wolfSSL_CTX_new(wolfSSLv23_server_method_ex((void *)NULL)); /* Load server certificates into WOLFSSL_CTX */ if (ctx == NULL) { diff --git a/IDE/Renesas/e2studio/RA6M3/server-wolfssl/wolfssl_thread_entry.h b/IDE/Renesas/e2studio/RA6M3/server-wolfssl/wolfssl_thread_entry.h index 6e459ca8c..66ffb506f 100644 --- a/IDE/Renesas/e2studio/RA6M3/server-wolfssl/wolfssl_thread_entry.h +++ b/IDE/Renesas/e2studio/RA6M3/server-wolfssl/wolfssl_thread_entry.h @@ -23,11 +23,12 @@ #include +extern uint8_t g_ether0_mac_address[6]; + static const byte ucIPAddress[4] = { 192, 168, 1, 241 }; static const byte ucNetMask[4] = { 255, 255, 255, 0 }; static const byte ucGatewayAddress[4] = { 192, 168, 1, 1 }; static const byte ucDNSServerAddress[4] = { 192, 168, 1, 1 }; -static const byte g_ether0_mac_address[6] = { 0x00, 0x11, 0x22, 0x33, 0x44, 0x55 }; /* Server Cert and Key */ #define CERT_BUF server_cert_der_1024 diff --git a/IDE/Renesas/e2studio/RA6M3/wolfssl/.project b/IDE/Renesas/e2studio/RA6M3/wolfssl/.project index a72156181..33ff60268 100644 --- a/IDE/Renesas/e2studio/RA6M3/wolfssl/.project +++ b/IDE/Renesas/e2studio/RA6M3/wolfssl/.project @@ -30,11 +30,6 @@ com.renesas.cdt.ra.contentgen.raNature - - src/bio.c - 1 - PARENT-5-PROJECT_LOC/src/bio.c - src/crl.c 1 @@ -195,11 +190,6 @@ 1 PARENT-5-PROJECT_LOC/wolfcrypt/src/error.c - - wolfcrypt/evp.c - 1 - PARENT-5-PROJECT_LOC/wolfcrypt/src/evp.c - wolfcrypt/fe_low_mem.c 1 @@ -275,11 +265,6 @@ 1 PARENT-5-PROJECT_LOC/wolfcrypt/src/memory.c - - wolfcrypt/misc.c - 1 - PARENT-5-PROJECT_LOC/wolfcrypt/src/misc.c - wolfcrypt/pkcs12.c 1 From bf59d169dd7546e14b49be7cec16202c0cd378dc Mon Sep 17 00:00:00 2001 From: Hideki Miyazaki Date: Sat, 10 Oct 2020 09:21:18 +0900 Subject: [PATCH 2/2] Update include.am to include new README files --- IDE/Renesas/e2studio/RA6M3/include.am | 3 +++ 1 file changed, 3 insertions(+) diff --git a/IDE/Renesas/e2studio/RA6M3/include.am b/IDE/Renesas/e2studio/RA6M3/include.am index fde3c0464..8c86c46c0 100644 --- a/IDE/Renesas/e2studio/RA6M3/include.am +++ b/IDE/Renesas/e2studio/RA6M3/include.am @@ -31,3 +31,6 @@ EXTRA_DIST+= IDE/Renesas/e2studio/RA6M3/wolfssl/configuration.xml EXTRA_DIST+= IDE/Renesas/e2studio/RA6M3/README.md EXTRA_DIST+= IDE/Renesas/e2studio/RA6M3G/README.md + +EXTRA_DIST+= IDE/Renesas/e2studio/RA6M3/README_APRA6M_en.md +EXTRA_DIST+= IDE/Renesas/e2studio/RA6M3/README_APRA6M_jp.md