Amazon FreeRTOSだそうです。ルネサスさんのRXは参加しないのかな?

こんにちは。NoMaYです。

ライセンスはMIT Licenseでした。TLSとしてmbed TLSが使用されていました。サポートされているボードの写真を見ていたら、どれにも有線LANコネクタが無いことに気付きました。時代の流れでしょうか、、、

Getting Started with Amazon FreeRTOS
aws.amazon.com/freertos/getting-started/

Amazon FreeRTOS
aws.amazon.com/freertos/

Amazon FreeRTOS ソースコード
github.com/aws/amazon-freertos

[関連リンク]

FreeRTOS - freertos.org
www.freertos.org/

FreeRTOS - sourceforge.net
sourceforge.net/projects/freertos/files/

FreeRTOS kernel自体はCC-RXにも対応
github.com/aws/amazon-freertos/tree/master/lib/FreeRTOS/portable/Renesas

Amazon FreeRTOSはTLSにmbed TLSを使用
github.com/aws/amazon-freertos/tree/master/lib/third_party/mbedtls

[ニュース]

組み込み業界に大インパクト「Amazon FreeRTOS」の衝撃 - 大原雄介,MONOist
monoist.atmarkit.co.jp/mn/articles/1712/28/news011.html

アマゾン「AWS IoT」は何が衝撃的なのか - 大原雄介,MONOist
monoist.atmarkit.co.jp/mn/articles/1510/21/news026.html

(2018/01/01 : 記事を選び直しました。)

[追記]

もしかしたら、オープンソースライセンスのドライバライブラリが用意されていないから、ルネサスさんはアマゾンさんに相手にして貰えないのかも、、、

ちなみに、FreeRTOS kernel自体のライセンスがV10からModified GPLからMIT Licenseに変わったようです。

  • シェルティさん、こんにちは。NoMaYです。本年も宜しくお願い致します。

    着々と進んでいるようですね。プロジェクトにFreeRTOS-Plus-TCPを含めるようにする件、了解しました。やってみます。(その時、もしかすると、Amazon FreeRTOS V1.1.0ベースに変えるかも知れません。)

    あと、以下のウェブページに気付きましたので、リンクを張っておきます。(ただし詳しいものでは無かったです。)

    Amazon FreeRTOS Porting Guide
    docs.aws.amazon.com/freertos/latest/userguide/porting-guide.html

    また、GitHubのIssuesに以下のリクエストが投稿されていたことに気付きましたので、リンクを張っておきます。やりとりの雰囲気から思ったのですが、ルネサスさんのRXへの対応も問答無用で拒絶されるようなことは無さそうな気がしました。パッチを投稿すれば受け付けて貰えるかも知れません。

    Support for ESP8266
    github.com/aws/amazon-freertos/issues/1

    Support for Espressif ESP32
    github.com/aws/amazon-freertos/issues/3

    課題はルネサスさんのドライバライブラリのライセンスですが、FITは無理としても、コード生成機能に関しては、このスレッドの最初の投稿に書いたsourceforge.netのFreeRTOS kernelのソースのDemoフォルダのRX231のサンプルプログラムにコード生成機能で生成されたソースが含まれていましたので、やってやれなくはない気がしました。

    それに対し、FITに関しては、このスレッドの幾つか前の投稿で見付けたルネサスさんのアプリケーションノートにあったFITとFreeRTOSを組み合わせるサンプルプログラムを見ていて、どうも非公式ながらルネサスさんの社内には、r_bsp_rtosとか、r_cmt_rtos_rxとか、更にはFreeRTOSをFITモジュール化したものまで、あるらしいことに気付きました。FITに関しては、そういうやり方もありそうな気がしました。(取らぬ狸の皮算用ではありますが、以前の別スレッドの経験から、Amazon FreeRTOSをFITモジュール化することも自力で出来るのではないかと思いました。)

    なお、これらのFreeRTOS kernel+コード生成機能で生成されたソースを含むサンプルプログラムやFreeRTOS kernel+FITのサンプルプログラムにはCS+のプロジェクトが含まれていませんでしたので、年末にコンバート作業をやってCS+でビルド出来るようにしてみました。これは、新しくスレッドを立てて、後で投稿してみようと思っています。

    [ニュース]

    ちなみに、年末に以下の記事が出ていました。(意図されたことなのか分かりませんが、FreeRTOS kernelがサポートしているMCUの種類として、SHの名前は出しているのにRXの名前は出していませんでしたね、、、)

    組み込み業界に大インパクト「Amazon FreeRTOS」の衝撃 - 大原雄介,MONOist
    monoist.atmarkit.co.jp/mn/articles/1712/28/news011.html
     

  • こんにちは。NoMaYです。

    この先どうなるのか分かりませんが、ちょっと好奇心から、GitHub上でAmazon FreeRTOSをforkしてみました。まだforkしただけで何の変更もしていませんが、、、

    github.com/NoMaY-jp/amazon-freertos
     

  • NoMaYさん

    あけましておめでとうございます。
    シェルティです。

    毎度貴重な情報をまとめていただきありがとうございます。
    新しいスレッドの方のデータも使わせていただきます。

    FreeRTOS+TCPのコードも含める件ご検討いただき感謝です。
    こちらで単品動作できましたら、NoMaYさんのプロジェクトにマージして動作確認して、
    最終的にGitHubにRXマイコン対応のコードを入れていきたいですね。

    ニュースについてはAmazon FreeRTOSのライセンス周りの話がまとめられていてとても分かりやすいですね。周りの人との先ずの情報共有にとても効果的です。

    またこちらも進捗がありましたら共有させていただきます。

    以上です
  • こんにちは。NoMaYです。

    今までRX231-RSKのプロジェクトファイルでやっていましたが、RX65N Envision Kitのプロジェクトファイルへ変更して、以下のようにしてみました。後ほどzipファイルに固めたものを投稿します。

    (1) RX65N Envision Kitの.projectと.cprojectを流用して.projectと.cprojectを再作成
    (2) RX65N Envision KitではFITやコード生成機能がスマートコンフィグレータに統合されたことに対応
    (3) Amazon FreeRTOSのソースコードをOTA Agentのベータ版が追加されたV1.1.0へ変更
    (4) Amazon FreeRTOSに含まれるFreeRTOS kernelのFreeRTOS-Plus-TCPを含めるように変更
    (5) config_filesフォルダのFreeRTOSConfig.hとFreeRTOSIPConfig.hの流用元を変更



    (1) RX65N Envision Kitの.projectと.cprojectを使用して.projectと.cprojectを再作成

    以下の製品ページからデモファームウェア(ソースコード)のダウンロードページへ行って、RX65N Envition Kit Demo Firmware with Source Codeのrx65n_envisionkit.zipをダウンロードし、含まれていたRX65N Secure Bootプロジェクトの.projectと.cprojectを流用して.projectと.cprojectを再作成しました。(なお、今はまだリンクまで辿り着かないので関係ありませんが、RX65N Secure Bootプロジェクトで設定されていたセクションや追加されていたライブラリはそのままになっていますので、リンクまで辿り着くようになった時点で、その点を見直す必要があります。)

    RX65N Envision KIT 製品ページ
    www.renesas.com/ja-jp/products/software-tools/boards-and-kits/renesas-promotion-boards/rx65n-envision-kit.html






    (2) RX65N Envision KitではFITやコード生成機能がスマートコンフィグレータに統合されたことに対応

    同様に、RX65N Secure Bootプロジェクトのscfgファイルを流用してスマートコンフィグレータを利用出来るようにしました。今回、BSPはRX65N Secure Bootプロジェクトのクロック設定のまま残して、他のコンポーネントを一旦削除した後、CMTとRSPIを追加しました。(なお、コンポーネントは取り敢えず追加してみたというところで、設定は見直す必要があります。)















    (3) Amazon FreeRTOSのソースコードをOTA Agentのベータ版が追加されたV1.1.0へ変更

    プロジェクト構造やインクルードパス/マクロ定義の変更は.projectや.cprojectあるいはewpファイルの新旧を比較して推測しました。(なお、GitHubにはプロジェクトの比較機能があり、以下のURLなどで比較結果を表示させることが出来ますが、今のところプロジェクト全体の比較結果の中の該当ファイルの表示箇所へジャンプさせるような手段しか見当たらず、今回の場合はプロジェクト全体の差分が大きいのでジャンプするのに時間が掛かるようです。また、Microchip Curiosity PIC32MZEFに関しては、ソースが追加されたのがV1.1.0であり、V1.0.0のソースが存在しませんので、比較結果はありません。) ちなみに、今のところOTA Agentのベータ版が追加されているのはTexas Instruments CC3220SF-LAUNCHXLとWindows Simulatorの2つのみです。

    demos\nxp\lpc54018_iot_module\iar\aws_demos.ewp
    github.com/aws/amazon-freertos/compare/v1.0.0...v1.1.0#diff-6f8e55efce8c79414970e6baa9a41f3b

    demos\pc\windows\visual_studio\aws_demos.vcxproj.filters
    github.com/aws/amazon-freertos/compare/v1.0.0...v1.1.0#diff-d0ae91d5447bb6a74ddccfbb02ab35a4

    demos\st\stm32l475_discovery\ac6\.cproject
    demos\st\stm32l475_discovery\ac6\.project
    github.com/aws/amazon-freertos/compare/v1.0.0...v1.1.0#diff-d79cf9777a8eec4ff0f5747da19f0765

    demos\ti\cc3220_launchpad\ccs\.cproject
    demos\ti\cc3220_launchpad\ccs\.project
    github.com/aws/amazon-freertos/compare/v1.0.0...v1.1.0#diff-2c2a1f88087cc60628b236f661947ce7

    これらの情報を参考にして以下のようなプロジェクト構造に変更しました。







    (4) Amazon FreeRTOSに含まれるFreeRTOS kernelのFreeRTOS-Plus-TCPを含めるように変更

    Amazon FreeRTOSに含まれていたFreeRTOS kernelにはFreeRTOS-Plus-TCPも含まれていましたので、使用されているものだと思っていたのですが、シェルティさんの調査により、使用されていなかったことが分かりました。今回、調べてみたところ、Amazon FreeRTOSのV1.1.0で追加されたMicrochip Curiosity PIC32MZEFのソースで使用されていることが分かりましたが、開発環境がMicrochip Harmonyとなっていて、Eclipse系ではありませんでした。また、Amazon FreeRTOSのWindows Simulatorでも使用されていましたが、開発環境はVisual Studioとなっていて、これもEclipse系ではありませんでした。GitHubのAmazon FreeRTOSのソースの次にSourceForgeのFreeRTOS kernelのソースを調べてみましたが、見付かったのは同じくFreeRTOS kernelのWindows SimulatorのVisual Studioのプロジェクトのみでした。最後にFreeRTOSのサイトを探してみたところ、以下のダウンロードページからダウンロードした160919_FreeRTOS_Labs.zipに、Eclipse系のAtollic TrueSTUDIOのプロジェクトの.projectと.cprojectが見付かりましたので、それを参考にすることにしました。

    FreeRTOS+TCP and FreeRTOS+FAT Source Code Free Download
    www.freertos.org/FreeRTOS-Labs/RTOS_labs_download.html

    .projectと.cproject
    160919_FreeRTOS_Labs\FreeRTOS-Plus\Demo\FreeRTOS_Plus_TCP_and_FAT_STM32F4xxx\.project
    160919_FreeRTOS_Labs\FreeRTOS-Plus\Demo\FreeRTOS_Plus_TCP_and_FAT_STM32F4xxx\.cproject

    なお、今回、FreeRTOS-Plus-TCPからMCUをアクセスする処理が記述されるソースであるNetworkInterface.cは以下のファイルをコピーしました。(CopyrightはAmazon.com, Incでは無くMicrochip Technology Incorporated and its subsidiariesでしたが、ライセンスは通常のMITライセンスでした。)

    コピー元:
    amazon-freertos-1.1.0\lib\FreeRTOS-Plus-TCP\source\portable\NetworkInterface\pic32mzef\NetworkInterface_eth.c

    コピー先:
    amazon-freertos-1.1.0\lib\FreeRTOS-Plus-TCP\source\portable\NetworkInterface\RX600\NetworkInterface.c

    この階層には以下のファイルもあったのですが、必要な処理が足りているか分からず、コピーしませんでした。

    amazon-freertos-1.1.0\lib\FreeRTOS-Plus-TCP\source\portable\NetworkInterface\SH2A\NetworkInterface.c

    この階層には他にも以下のフォルダがあり、それぞれにNetworkInterface.cがありました。

    amazon-freertos-1.1.0\lib\FreeRTOS-Plus-TCP\source\portable\NetworkInterface\

    ATSAM4E
    ksz8851snl
    LPC17xx
    LPC18xx
    STM32Fxx
    WinPCap
    Zynq

    ちなみに、以下のウェブページにポーティングについての説明がありました。

    Porting FreeRTOS+TCP to a Different Microcontroller
    www.freertos.org/FreeRTOS-Plus/FreeRTOS_Plus_TCP/Embedded_Ethernet_Porting.html







    (5) config_filesフォルダのFreeRTOSConfig.hとFreeRTOSIPConfig.hの流用元を変更

    FreeRTOSのコンフィグレーションファイルであるFreeRTOSConfig.hは、今まで以下のRX231-RSKのものを持って来ていましたが、今回は以下のRX64M-RSKのものを持って来ることにしました。

    今までの流用元:
    FreeRTOSv10.0.0\FreeRTOS\Demo\RX200_RX231-RSK_Renesas_e2studio\src\FreeRTOSConfig.h

    今までの流用先:
    amazon-freertos-1.0.0\demos\renesas\rx231-rsk\common\config_files\FreeRTOSConfig.h

    今回の流用元:
    FreeRTOSv10.0.1\FreeRTOS\Demo\RX600_RX64M_RSK_Renesas_e2studio\Source\FreeRTOSConfig.h

    今回の流用先:
    amazon-freertos-1.1.0\demos\renesas\rx65n-envision-kit\common\config_files\FreeRTOSConfig.h

    それに対し、FreeRTOS-Plus-TCPのコンフィグレーションファイルであるFreeRTOSIPConfig.hは、今まで(使用されていなかったのですが)以下のSTMicroelectronics STM32L4 Discovery Kit IoT Nodeのものを持って来ていましたが、今回は(Amazon FreeRTOSのV1.1.0で使用されていることが分かった)以下のMicrochip Curiosity PIC32MZEFのものを持って来ることにしました。

    今までの流用元:
    amazon-freertos-1.0.0\demos\st\stm32l475_discovery\common\config_files\FreeRTOSIPConfig.h

    今までの流用先:
    amazon-freertos-1.0.0\demos\renesas\rx231-rsk\common\config_files\FreeRTOSIPConfig.h

    今回の流用元:
    amazon-freertos-1.1.0\demos\microchip\curiosity_pic32mzef\common\config_files\FreeRTOSIPConfig.h

    今回の流用先:
    amazon-freertos-1.1.0\demos\renesas\rx65n-envision-kit\common\config_files\FreeRTOSIPConfig.h

    ちなみに、以下のウェブページにコンフィグレーションについての説明がありました。

    FreeRTOSConfig.h

    Customisation
    www.freertos.org/a00110.html

    FreeRTOSIPConfig.h

    FreeRTOS+TCP Configuration
    www.freertos.org/FreeRTOS-Plus/FreeRTOS_Plus_TCP/TCP_IP_Configuration.html
     

  • こんにちは。NoMaYです。

    前の投稿で書いた通り、今までRX231-RSKのプロジェクトファイルでやっていたものを、RX65N Envision Kitのプロジェクトファイルへ変更したのですが、それを以下のzipファイルに固めました。(なお、再配布して良いか未確認だったことに気付きましたので、スマートコンフィグレータが生成したソースは除外しておきました。フォルダの残骸のみ残してあります。)

    aws_demos_renesas_rx_mcu_experiment_20180113.zip

    amazon-freertos-1.1.0\demos\common\include\aws_application_version.h
    amazon-freertos-1.1.0\demos\renesas\rx65n-envision-kit\ccrx-csplus\aws_demos.mtpj
    amazon-freertos-1.1.0\demos\renesas\rx65n-envision-kit\ccrx-csplus\aws_demos.rcpc
    amazon-freertos-1.1.0\demos\renesas\rx65n-envision-kit\ccrx-csplus\aws_demos.rcpe
    amazon-freertos-1.1.0\demos\renesas\rx65n-envision-kit\ccrx-csplus\aws_demos.scfg
    amazon-freertos-1.1.0\demos\renesas\rx65n-envision-kit\ccrx-e2studio6\.cproject
    amazon-freertos-1.1.0\demos\renesas\rx65n-envision-kit\ccrx-e2studio6\.project
    amazon-freertos-1.1.0\demos\renesas\rx65n-envision-kit\ccrx-e2studio6\aws_demos.scfg
    amazon-freertos-1.1.0\demos\renesas\rx65n-envision-kit\ccrx-e2studio6\.settings\com.renesas.cdt.managedbuild.renesas.ccrx.prefs
    amazon-freertos-1.1.0\demos\renesas\rx65n-envision-kit\ccrx-e2studio6\.settings\Dependency_Scan_Preferences.prefs
    amazon-freertos-1.1.0\demos\renesas\rx65n-envision-kit\ccrx-e2studio6\.settings\e2studio_project.prefs
    amazon-freertos-1.1.0\demos\renesas\rx65n-envision-kit\ccrx-e2studio6\.settings\renesasPGModel.xml
    amazon-freertos-1.1.0\demos\renesas\rx65n-envision-kit\ccrx-e2studio6\.settings\CodeGenerator\cgprojectDatas.datas
    amazon-freertos-1.1.0\demos\renesas\rx65n-envision-kit\common\application_code\iodefine.h
    amazon-freertos-1.1.0\demos\renesas\rx65n-envision-kit\common\application_code\main.c
    amazon-freertos-1.1.0\demos\renesas\rx65n-envision-kit\common\application_code\time.h
    amazon-freertos-1.1.0\demos\renesas\rx65n-envision-kit\common\config_files\aws_bufferpool_config.h
    amazon-freertos-1.1.0\demos\renesas\rx65n-envision-kit\common\config_files\aws_demo_config.h
    amazon-freertos-1.1.0\demos\renesas\rx65n-envision-kit\common\config_files\aws_ggd_config.h
    amazon-freertos-1.1.0\demos\renesas\rx65n-envision-kit\common\config_files\aws_mqtt_agent_config.h
    amazon-freertos-1.1.0\demos\renesas\rx65n-envision-kit\common\config_files\aws_mqtt_config.h
    amazon-freertos-1.1.0\demos\renesas\rx65n-envision-kit\common\config_files\aws_secure_sockets_config.h
    amazon-freertos-1.1.0\demos\renesas\rx65n-envision-kit\common\config_files\aws_shadow_config.h
    amazon-freertos-1.1.0\demos\renesas\rx65n-envision-kit\common\config_files\aws_wifi_config.h
    amazon-freertos-1.1.0\demos\renesas\rx65n-envision-kit\common\config_files\FreeRTOSConfig.h
    amazon-freertos-1.1.0\demos\renesas\rx65n-envision-kit\common\config_files\FreeRTOSIPConfig.h
    amazon-freertos-1.1.0\lib\FreeRTOS-Plus-TCP\source\portable\Compiler\Renesas\pack_struct_end.h
    amazon-freertos-1.1.0\lib\FreeRTOS-Plus-TCP\source\portable\Compiler\Renesas\pack_struct_start.h
    amazon-freertos-1.1.0\lib\FreeRTOS-Plus-TCP\source\portable\NetworkInterface\RX600\NetworkInterface.c

    今回、コンパイルを通す為、以下の点に関してAmazon FreeRTOSのファイルを変更しています(ファイルが上書きされます)。

    (1) FreeRTOS-Plus-TCPでの構造体メンバのアラインメント指定にRenesas CC-RXコンパイラ対応を追加
    (2) OTA Aganetでのバージョン情報構造体メンバのアラインメント指定にRenesas CC-RXコンパイラ対応を追加

    なお、(2)に関連して、以下の点に関してもAmazon FreeRTOSのファイルを変更しようと一度は思ったのですが、すぐには無理そうだと気付きましたので、今回はやらずに先延ばししました。

    (3) OTA Aganetで使われるTinyCBORモジュールでのバイトオーダー指定のRenesas CC-RXコンパイラ対応は先延ばし

    また、(2)と(1)に関連して、プロジェクトの設定で以下のことも行いました。

    (4) FreeRTOS-Plus-TCPでの構造体メンバのアラインメント指定の各種コンパイラ対応手法でワーニングが出るので抑止
    (5) OTA AganetのソースでCファイルにインクルードされるCファイルがあったのでインクルードされる側をビルドから除外

    あと、Amazon FreeRTOSのファイル以外にも、以前から、コンパイルを通す為に、iodefine.hとtime.hに関して特別なことをしていましたが、今回は以下のようにしています。

    (6) 今まで同じiodefine.hをBSP側とアプリケーション側で2重持ちしていたがアプリケーション側を#include "platform.h"へ変更
    (7) mbed TLSのソースがtime.hをインクルードしているがCC-RXに無いので中身の無いダミーファイルを作って対処(今までと同様)

    以下、詳細です。

    (1) FreeRTOS-Plus-TCPででの構造体メンバのアラインメント指定にRenesas CC-RXコンパイラ対応を追加

    今までもRenesas SHコンパイラに対応していたのですが、今回、以下のようにRenesas CC-RXコンパイラに対応させました。(コピーライト(Amazon.com, Inc. or its affiliates.)、ライセンス(MITライセンス)、その他のコメント、などは省略しています。)

    amazon-freertos-1.1.0\lib\FreeRTOS-Plus-TCP\source\portable\Compiler\Renesas\pack_struct_start.h

    変更前:
    github.com/aws/amazon-freertos/blob/v1.1.0/lib/FreeRTOS-Plus-TCP/source/portable/Compiler/Renesas/pack_struct_start.h

    変更後:

    #ifdef _SH
        #ifdef __RENESAS__
            #pragma pack 1
        #endif
    #endif
    #ifdef __RX
        #ifdef __CCRX__
            #pragma pack
        #endif
    #endif

    amazon-freertos-1.1.0\lib\FreeRTOS-Plus-TCP\source\portable\Compiler\Renesas\pack_struct_end.h

    変更前:
    github.com/aws/amazon-freertos/blob/v1.1.0/lib/FreeRTOS-Plus-TCP/source/portable/Compiler/Renesas/pack_struct_end.h

    変更後:

    #ifdef _SH
        #ifdef __RENESAS__
            ;
            #pragma unpack
        #endif
    #endif
    #ifdef __RX
        #ifdef __CCRX__
            ;
            #pragma unpack
        #endif
    #endif

    Renesas SHコンパイラのマニュアルを見たところ、常に定義されるマクロとして以下のものがありました。

    __HITACHI_VERSION__
    __HITACHI__
    _SH
    __RENESAS_VERSION__
    __RENESAS__

    Renesas CC-RXコンパイラのマニュアルを見たところ、常に定義されるマクロとして以下のものがありました。この中から__RXと__CCRX__を選びました。(私は__CCRX__があるなら__RENESAS__より意味が明確で分かり易いと思いましたので、こちらを選んだのですが、それよりも継承性の観点から、今までと同じものを選ぶ方が良いと言う考え方もあることと思います。)

    __RENESAS__
    __RENESAS_VERSION__
    __RX
    __CCRX__

    (2) OTA Aganetでのバージョン情報構造体メンバのアラインメント指定にRenesas CC-RXコンパイラ対応を追加

    これは以下のようにRenesas CC-RXコンパイラに対応させました。(コピーライト(Amazon.com, Inc. or its affiliates.)、ライセンス(MITライセンス)、その他のコメント、などは省略しています。)

    amazon-freertos-1.1.0\demos\common\include\aws_application_version.h

    変更前:
    github.com/aws/amazon-freertos/blob/v1.1.0/demos/common/include/aws_application_version.h

    変更後:

    /* Application version structure. */
    #if (defined(__RX) && defined(__CCRX__))
    #pragma pack
    #else
    #pragma pack(push,1)
    #endif
    typedef struct {
        union {
    #if (defined(__BYTE_ORDER__) && defined(__ORDER_LITTLE_ENDIAN__) && __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__) || (__little_endian__ == 1) || WIN32 \
     || (defined(__RX) && defined(__CCRX__) && defined(__LIT))
            struct {
                uint16_t    usBuild;
                uint8_t     ucMinor;
                uint8_t     ucMajor;
            } x;
    #elif (defined(__BYTE_ORDER__) && defined(__ORDER_BIG_ENDIAN__) && __BYTE_ORDER__ == __ORDER_BIG_ENDIAN__) || (__big_endian__ == 1) \
       || (defined(__RX) && defined(__CCRX__) && defined(__BIG)
            struct version {
                uint8_t     ucMajor;
                uint8_t     ucMinor;
                uint16_t    usBuild;
            } x;
    #else
    #error "Unable to determine byte order!"
    #endif
            uint32_t ulVersion32;
        } u;
    } AppVersion32_t;
    #if (defined(__RX) && defined(__CCRX__))
    #pragma unpack
    #else
    #pragma pack(pop)
    #endif

    (3) OTA Aganetで使われるTinyCBORモジュールでのバイトオーダー指定のRenesas CC-RXコンパイラ対応は先延ばし

    これに関しては、すぐには無理そうだと気付きましたので、今回はやらずに先延ばししました。

    amazon-freertos-1.1.0\lib\third_party\tinycbor\compilersupport_p.h

    全体:
    github.com/aws/amazon-freertos/blob/v1.1.0/lib/third_party/tinycbor/compilersupport_p.h

    抜粋:

    #if (defined(__GNUC__) && (__GNUC__ * 100 + __GNUC_MINOR__ >= 403)) || \
        (__has_builtin(__builtin_bswap64) && __has_builtin(__builtin_bswap32))
    #  if __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__
    #    define cbor_ntohll     __builtin_bswap64
    #    define cbor_htonll     __builtin_bswap64
    #    define cbor_ntohl      __builtin_bswap32
    #    define cbor_htonl      __builtin_bswap32
    #    ifdef __INTEL_COMPILER
    #      define cbor_ntohs    _bswap16
    #      define cbor_htons    _bswap16
    #    elif (__GNUC__ * 100 + __GNUC_MINOR__ >= 608) || __has_builtin(__builtin_bswap16)
    #      define cbor_ntohs    __builtin_bswap16
    #      define cbor_htons    __builtin_bswap16
    #    else
    #      define cbor_ntohs(x) (((uint16_t)x >> 8) | ((uint16_t)x << 8))
    #      define cbor_htons    cbor_ntohs
    #    endif
    #  else
    #    define cbor_ntohll
    #    define cbor_htonll
    #    define cbor_ntohl
    #    define cbor_htonl
    #    define cbor_ntohs
    #    define cbor_htons
    #  endif
    #elif defined(__sun)
    #  include <sys/byteorder.h>
    #elif defined(_MSC_VER)
    /* MSVC, which implies Windows, which implies little-endian and sizeof(long) == 4 */
    #  define cbor_ntohll       _byteswap_uint64
    #  define cbor_htonll       _byteswap_uint64
    #  define cbor_ntohl        _byteswap_ulong
    #  define cbor_htonl        _byteswap_ulong
    #  define cbor_ntohs        _byteswap_ushort
    #  define cbor_htons        _byteswap_ushort
    #endif
    #ifndef cbor_ntohs
    #   define cbor_ntohs(x) (((uint16_t)x >> 8) | ((uint16_t)x << 8))
    #   define cbor_htons    cbor_ntohs
    //#  include <netinet/in.h>
    //#  define cbor_ntohs        ntohs
    //#  define cbor_htons        htons
    #endif
    #ifndef cbor_ntohl
    //#  include <netinet/in.h>
    //#  define cbor_ntohl        ntohl
    //#  define cbor_htonl        htonl
    #   define cbor_ntohl(x)     ((((uint32_t)x >> 24) & 0xff) | (((uint32_t)x >> 8) & 0xff00) | (((uint32_t)x & 0xff00) << 8) | (((uint32_t)x & 0xff) << 24))
    #   define cbor_htonl        cbor_ntohl
    #endif
    #ifndef cbor_ntohll
    #  define cbor_ntohll       ntohll
    #  define cbor_htonll       htonll
    /* ntohll isn't usually defined */
    #  ifndef ntohll
    #    if defined(__BYTE_ORDER__) && defined(__ORDER_BIG_ENDIAN__) && __BYTE_ORDER__ == __ORDER_BIG_ENDIAN__
    #      define ntohll
    #      define htonll
    #    elif defined(__BYTE_ORDER__) && defined(__ORDER_LITTLE_ENDIAN__) && __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__
    #      define ntohll(x)       ((ntohl((uint32_t)(x)) * UINT64_C(0x100000000)) + (ntohl((x) >> 32)))
    #      define htonll          ntohll
    #   elif __little_endian__ == 1
    #      define ntohll(x)       ((cbor_ntohl(((uint32_t)(x))) * UINT64_C(0x100000000)) + (cbor_ntohl(((x) >> 32))))
    #      define htonll          ntohll
    #    else
    #      error "Unable to determine byte order!"
    #    endif
    #  endif
    #endif

    (4) FreeRTOS-Plus-TCPでの構造体メンバのアラインメント指定の各種コンパイラ対応手法でワーニングが出るので抑止

    先程のpack_struct_start.hとpack_struct_end.hは、例えば以下のように使用されるのですが、Renesas CC-RXではワーニングが出ますので、このワーニングメッセージをインフォーメーションレベルメッセージに変換して抑止することにしました。

    amazon-freertos-1.1.0\lib\FreeRTOS-Plus-TCP\include\FreeRTOS_IP.h

    全体:
    github.com/aws/amazon-freertos/blob/v1.1.0/lib/FreeRTOS-Plus-TCP/include/FreeRTOS_IP.h

    抜粋:

    #include "pack_struct_start.h"
    struct xMAC_ADDRESS
    {
        uint8_t ucBytes[ ipMAC_ADDRESS_LENGTH_BYTES ];
    }
    #include "pack_struct_end.h"

    ワーニングメッセージ:

    W0521644:Definition at end of file not followed by a semicolon or a declarator

    抑止するコンパイルオプション(このような設定を行える専用のGUIがe2 studioにもCS+にも用意されています):

    -nomessage -change_message=information=21644

    (5) OTA AganetのソースでCファイルにインクルードされるCファイルがあったのでインクルードされる側をビルドから除外

    インクルードしている側のソース:

    amazon-freertos-1.1.0\lib\ota\aws_ts_ota_agent.c

    全体:
    github.com/aws/amazon-freertos/blob/v1.1.0/lib/ota/aws_ts_ota_agent.c

    抜粋:

    /*-----------------------------------------------------------*/
    /* Private OTA abstractions. These are statics so the implementation is included in-line. */
    #include "aws_ts_ota_pal.c"

    /*-----------------------------------------------------------*/

    インクルードされる側のソース:

    amazon-freertos-1.1.0\lib\ota\portable\ti\cc3220_launchpad\aws_ts_ota_pal.c

    全体:
    github.com/aws/amazon-freertos/blob/v1.1.0/lib/ota/portable/ti/cc3220_launchpad/aws_ts_ota_pal.c

    (6) 今まで同じiodefine.hをBSP側とアプリケーション側で2重持ちしていたがアプリケーション側を#include "platform.h"へ変更

    実は、2重持ちを解消しようとしてe2 studioでBSPモジュールの下層のiodefine.hのあるフォルダをインクルードパスに追加してみたのですが、残念ながらe2 studioのスマートコンフィグレータでコード生成を行うと強制的に削除されてしまいました。(恐らく、使用しているコンポーネントと設定されているインクルードパスの整合性を維持しようとする処理の副作用ではないか、と思われます。)

    次に、そのフォルダをe2 studioのユーザ指定コンパイルオプションの入力欄に以下のように設定しようと考えたのですが、このような小細工的な設定内容が品種に依存するのも今ひとつな気がするなぁ、と迷っていました。

    RX65Nの場合

    -include="${workspace_loc:/${ProjName}/src/smc_gen/r_bsp/mcu/rx65n/register_access}"

    RX231の場合(まだスマートコンフィグレータが対応していませんが)

    -include="${workspace_loc:/${ProjName}/src/smc_gen/r_bsp/mcu/rx231/register_access}"

    そうこうしているうちに、アプリケーション側のiodefine.hを以下のようにしてもコンパイルを通すことが出来ることに気付き、これはこれでトラブルの元だとは思いつつ、品種に依存しないという点で選択することにしました。

    amazon-freertos-1.1.0\demos\renesas\rx65n-envision-kit\common\application_code\iodefine.h

    /* 
    In case of Renesas RX MCUs, FreeRTOS kernel's "port.c" includes Renesas BSP's "iodefine.h".
    For example, it is located at "src/smc_gen/r_bsp/board/generic_rx65n/register_access/".
    Therefore it needs an include path "src/smc_gen/r_bsp/board/generic_rx65n/register_access".
    But e2 studio removes deeper include path than "r_bsp/" after code generation by built-in smart configurator.
    This "iodefine.h" is a workaround for such trouble of e2 studio and smart configurator. Because
    "platform.h" includes "board/generic_rx65n/r_bsp.h"(i.e. "src/smc_gen/r_bsp/board/generic_rx65n/r_bsp.h") then
    "r_bsp.h" includes "mcu/rx65n/register_access/iodefine.h"(i.e. "src/smc_gen/r_bsp/mcu/rx65n/register_access/iodefine.h").
    On the other hand, CS+ and stand-alone smart configurator doesn't remove such deeper include path.
    To be exact, "src/smc_gen/r_bsp/board/generic_rx65n/register_access" and so on are added forcibly.
    This "iodefine.h" works for such case of CS+ and smart configurator too.
    */
    #include "platform.h"

    (7) mbed TLSのソースがtime.hをインクルードしているがCC-RXに無いので中身の無いダミーファイルを作って対処(今までと同様)

    今までと同様に以下のようにしてあります。(実はmbed TLSのソースをちゃんとは見ていなくて、ちゃんと見ても他に手が無さそうであれば、もう少しちゃんとしたコメントに変えようと思ってます。)

    amazon-freertos-1.1.0\demos\renesas\rx65n-envision-kit\common\application_code\time.h

    /* dummy file for experiment of aws demos project with renesas rx mcu */

    以下、ビルドログとエラーメッセー/ワーニングメッセージです。

    aws_demos_renesas_rx_mcu_experiment_e2studio6_build_log_20180113.zip
    内容:
    aws_demos.e2studio6.build.log
    aws_demos.e2studio6.error.txt

    aws_demos_renesas_rx_mcu_experiment_csp_build_log_20180113.zip
    内容:
    aws_demos.CS+.build.log
    aws_demos.CS+.error.txt











    [リンク]

    Amazon FreeRTOS v1.1.0 ダウンロード
    github.com/aws/amazon-freertos/releases/tag/v1.1.0

    FreeRTOS kernel V10.0.1 ダウンロード
    sourceforge.net/projects/freertos/files/FreeRTOS/V10.0.1/

    [補足]

    以下、今回のインクルードパスの設定です。(スマートコンフィグレータが自動的に追加する分を含みますが、rcpcファイルをe2 studioでエクスポートしてCS+で読み込むという手順を取ったのと、e2 studioとCS+では追加されるフォルダ(強制的に削除される分も?)の数が異なっているのとで、頭の整理が追いつかずAS ISです。)

    e2 studio

    コンパイラ

    ${TCINSTALL}/include
    ${workspace_loc:/${ProjName}/}
    ${workspace_loc:/${ProjName}/config_files}
    ${workspace_loc:/${ProjName}/application_code}
    ${workspace_loc:/${ProjName}/application_code/renesas_code}
    ${workspace_loc:/${ProjName}/application_code/common_demos/include}
    ${workspace_loc:/${ProjName}/lib/aws/include}
    ${workspace_loc:/${ProjName}/lib/aws/include/private}
    ${workspace_loc:/${ProjName}/lib/aws/FreeRTOS/portable/Renesas/RX600v2}
    ${workspace_loc:/${ProjName}/lib/aws/FreeRTOS-Plus-TCP/source/protocols/include}
    ${workspace_loc:/${ProjName}/lib/aws/FreeRTOS-Plus-TCP/include}
    ${workspace_loc:/${ProjName}/lib/aws/FreeRTOS-Plus-TCP/source/portable/Compiler/Renesas}
    ${workspace_loc:/${ProjName}/lib/aws/ota}
    ${workspace_loc:/${ProjName}/lib/third_party/jsmn}
    ${workspace_loc:/${ProjName}/lib/third_party/pkcs11}
    ${workspace_loc:/${ProjName}/lib/third_party/tinycbor}
    ${workspace_loc:/${ProjName}/lib/third_party/mbedtls/include}
    ${workspace_loc:/${ProjName}/src}
    ${workspace_loc:/${ProjName}/src/smc_gen/r_bsp}
    ${workspace_loc:/${ProjName}/src/smc_gen/r_config}
    ${workspace_loc:/${ProjName}/src/smc_gen/r_cmt_rx}
    ${workspace_loc:/${ProjName}/src/smc_gen/r_cmt_rx/src}
    ${workspace_loc:/${ProjName}/src/smc_gen/Config_RSPI0}
    ${workspace_loc:/${ProjName}/src/smc_gen/general}
    ${workspace_loc:/${ProjName}/src/smc_gen/r_pincfg}

    アセンブラ

    ${workspace_loc:/${ProjName}/src/smc_gen/Config_RSPI0}
    ${workspace_loc:/${ProjName}/src/smc_gen/general}
    ${workspace_loc:/${ProjName}/src/smc_gen/r_pincfg}

    CS+

    コンパイル

    src\smc_gen\r_pincfg
    src\smc_gen\r_config
    src\smc_gen\r_cmt_rx\ref
    src\smc_gen\r_cmt_rx
    src\smc_gen\r_bsp\mcu\rx65n\register_access
    src\smc_gen\r_bsp\mcu\rx65n
    src\smc_gen\r_bsp\mcu\all
    src\smc_gen\r_bsp\board\generic_rx65n
    src\smc_gen\r_bsp
    src\smc_gen\general
    src\smc_gen\Config_RSPI0
    .
    ..\common\config_files
    ..\common\application_code
    ..\common\application_code\renesas_code
    ..\..\..\..\demos\common\include
    ..\..\..\..\lib\include
    ..\..\..\..\lib\include\private
    ..\..\..\..\lib\FreeRTOS\portable\Renesas\RX600v2
    ..\..\..\..\lib\FreeRTOS-Plus-TCP\source\protocols\include
    ..\..\..\..\lib\FreeRTOS-Plus-TCP\include
    ..\..\..\..\lib\FreeRTOS-Plus-TCP\source\portable\Compiler\Renesas
    ..\..\..\..\lib\ota\portable\ti\cc3220_launchpad
    ..\..\..\..\lib\third_party\jsmn
    ..\..\..\..\lib\third_party\pkcs11
    ..\..\..\..\lib\third_party\tinycbor
    ..\..\..\..\lib\third_party\mbedtls\include
    .\src

    アセンブル

    .\src\smc_gen\Config_RSPI0
    .\src\smc_gen\general
    .\src\smc_gen\r_pincfg

    以下、作業で私が使っていたメモです。

    e2 studio

    知らぬ間に.cprojectが変化していないか注意する

    CS+

    何故か一括ビルドを行う設定がsmart configuratorでコード生成を行うと解除されてしまうので毎回再設定する

    手作業でプロジェクト構造を修正(実際に修正を実施)
    ・ lib\third_party\mbedtlsカテゴリの下が壊れている(CS+のrcpcファイル読み込みの不具合?)ので修正
    ・ srcの下のsmc_genをSmart Configuratorに変更してsrcの外へ出す(stand-alone smart configurator対応)
    手作業でプロジェクト構造を修正(したいと思っているが実施してないもの)
    ・ common\application_codeカテゴリの下にrenesas_codeカテゴリを追加するかも(中身は空)
    ・ lib\third_partyカテゴリの下にmcu_vendor\renesas\rx65n-envision-kitカテゴリを追加するかも(中身は空)
    手作業でプロジェクトの登録ファイルを修正
    ・ プロジェクト変換情報_aws_demos.txt → 削除
    ・ lib\FreeRTOS-Plus-TCP\source\ReadMe.url → 追加
    ・ lib\third_party\mbedtls\library\Makefile → 追加
    ・ lib\third_party\tinycbor\LICENSE → 追加
    手作業でインクルードパスを修正
    ・ 略
    手作業でプロジェクト設定を変更
    ・ [インクルード・ファイルが存在しないソースの扱い] を [再コンパイル/アセンブルしない] に変更

  • NoMaY さん

    こんにちは、シェルティです。

    本件、活動再開しました。諸事情あり1か月程進捗無しでした。
    NoMaYさんが上位層から攻めるのに対して、私は下位層から攻めております。
    良いタイミングでNoMaYさん側の活動と合流したいと考えています。

    私の考えている構築手順としては以下のとおりです。
    RX65N Envision Kit、RX65N RSK(2MB版/暗号器あり品)をターゲットにコードメンテを維持します。

    ①ルネサスTCP/IPをターゲットで動作させる(Etherの動作確認)
    ②SDIO無線LANを動作確認した時期のFreeRTOS 8.2.2をターゲットで動作させる
    ③ルネサスのFreeRTOSパッケージ、9.0.0をターゲットで動作させる
    ④Amazon FreeRTOS 1.1.0のFreeRTOS部分をターゲットで動作させる
    ⑤Amazon FreeRTOS 1.1.0のFreeRTOS+TCP部分をターゲットで動作させる
    ⑥Amazon FreeRTOS 1.1.0のmbed TLS部分をターゲットで動作させる
    ⑦Amazon FreeRTOS 1.1.0のMQTT部分をターゲットで動作させる(AWSへの接続実験)
    ⑧Amazon FreeRTOS 1.1.0のFreeRTOS+TCP部分のネットワーク層の結合部分を工夫して、
     (1)Ether、(2)SPI接続無線LANモジュール、(3)SDIO無線LANモジュールの3種類を切り替えられるようにする
    ⑨Amazon FreeRTOS 1.1.0のmbed TLS部分の暗号処理プリミティブのソフトウェア実装(AESとかRSAとか)をRX65N内蔵暗号器を使ったハードウェア実装に置き換える
    ⑨NoMaYさんの環境にマージし、Amazon FreeRTOS本家コードへの追従を簡単にできるようにする
    ⑩Amazon FreeRTOS のGitのforkに登録する
    ⑪Amazon FreeRTOS のCertificationを受験し合格しGitの本家に登録する
     https://docs.aws.amazon.com/ja_jp/freertos/latest/userguide/freertos-qualification-program.html

    現在、④まで進みました。これからが本番ですが、次⑤に挑戦します。
    NoMaYさんに先行して調べていただいた内容が役に立つと思います。

    ④までのZIPをアップします。
    と思ったのですが、ファイルサイズ上限に引っかかったので
    ファイル受け渡し方法を何らか考えてみます。

    以上です

  • シェルティさん、こんにちは。NoMaYです。

    Amazon FreeRTOSですが、1週間ほど前にv1.2.0になりました。ソースの変更履歴を読んだ印象では、ポート443でTLS認証を使ったMQTTを使えるようになったのが大きなところのようです。(すみません。正直に言うと、Google先生に聞いて、おぼろげに理解した程度ですが。) これに対しても今までと同様のことを行おうと考えています。

    Amazon FreeRTOS 変更履歴
    github.com/aws/amazon-freertos/blob/master/change_log.txt

    AWS IoT Coreは、ポート443を使った証明書によるクライアント認証でMQTT接続をサポートできるようになりました
    aws.amazon.com/jp/about-aws/whats-new/2018/02/aws-iot-core-now-supports-mqtt-connections-with-certificate-based-client-authentication-on-port-443/

    ポート443でTLS認証を使ったMQTT: なぜ便利で、どのように動くのか
    aws.amazon.com/jp/blogs/news/mqtt-with-tls-client-authentication-on-port-443-why-it-is-useful-and-how-it-works/

    私は、今、Amazon FreeRTOSのWindows Simulatorをe2 studio上でビルド出来るようにならないかと考え始めています。(e2 studioのQE for BLEのようなことが出来ないものかと思って、、、) 実は、先月、ものは試しで、まずはFreeRTOS kernelのWindows Simulatorを動かそうとしたら、以下の画面コピーのように、このパソコンでは動きません、と言われてしまって中断しているところですが、、、



    FreeRTOS Windows Port For Visual Studio or Eclipse and MingW
    www.freertos.org/FreeRTOS-Windows-Simulator-Emulator-for-Visual-Studio-and-Eclipse-MingW.html

    Getting Started with the FreeRTOS Windows Simulator
    docs.aws.amazon.com/freertos/latest/userguide/getting_started_windows.html

    Bluetooth® low energy対応開発支援ツール QE for BLE [テクニカルプレビュー版]
    www.renesas.com/ja-jp/products/software-tools/tools/solution-toolkit/qe--qe-for-bluetooth-smart.html

    ところで、ファイルの受け渡しですが、以下の記事で紹介されているようなファイル転送サービスでも私の方は構わないです。

    登録不要でストレスゼロの大容量ファイル転送サービス7選【無料】
    navi.dropbox.jp/large-capacity-file

    ちなみに、Rulzでは、1つのzipファイルの最大サイズは1MB(だったと思う)ですが、1つの投稿にzipファイルを複数個添付することも出来て、先日、500KB~900KBのzipファイルを4個添付したことがあります。(ただ、予告無くシステムが変更されて出来なくなる可能性もあり、しかもやっかいなことにContent Under Reviewとなって消失してしまうこともありますので、投稿の下書きを残しておく等の対策をして投稿しないと危ないですが。)

    [関連リンク]

    Google検索: 無料 ファイル転送 オンラインストレージ
    www.google.co.jp/search?&q=無料+ファイル転送+オンラインストレージ
     

  • こんにちは。NoMaYです。

    すみません。以前の投稿でルネサスさんのサイトで検索した時にヒットしなかったので気付かなかったのですが、今日たまたま別のものを検索していたらRX65N-2MのFreeRTOSのアプリケーションノートに気付きました。

    RX65N Group Application Note RX65N Real-time OS Package V1.0.00 ドキュメント
    www.renesas.com/ja-jp/doc/products/mpumcu/apn/rx/002/r01an4033es0100-rx65n.pdf

    RX65N Group Application Note RX65N Real-time OS Package V1.0.00 サンプルプログラム
    www.renesas.com/ja-jp/software/D6001926.html
     

  • シェルティさん、こんにちは。NoMaYです。

    いつの間にかマルツさんがDigi-Keyと提携していて、村田製作所のType1FXキットがマルツさんから購入可能になっていました。1万5千円程ですね、、、

    www.digikey.jp/.../6612483

    www.marutsu.co.jp/.../16838741

    さらに、STM32L4 Discovery Kit IoT NodeのWi-FiモジュールのInventek ISM43362-M3G-L44もマルツさんで購入出来そうです。ただ、微妙な型番違いで何種類かありますので、どれになるのか後で調べてみるつもりです。

    www.marutsu.co.jp/GoodsListNavi.jsp?path=&q=Inventek+ISM43362-M3G-L44

    1個から購入可能なものは以下のもの

    ISM43362-M3G-L44-E C2.5.0.3    1,897円

    ISM43362-M3G-L44-U C2.5.0.3    1,922円

    ISM43362-M3G-L44-E-C3.5.2.3    2,572円
     

  • NoMaYさん

    こんにちは、シェルティです。

    いつも貴重な情報をいただき、感謝であります。

    2018/02/24 8:00 時点のデータをお渡しします。shelty1.servegame.com/.../experiment.zip

    移植日誌はZIPのトップにreadmeという形で入れてありますので、
    ご興味ありましたら、覗いてみてください。
    #説明書を読まずに経験ベースでモノづくりする性格が見て取れると思います・・・ご容赦ください。
     (製品作りのときは、ちゃんと説明書読みます)

    Amazon FreeRTOSからDHCPの最初のパケットが出力できるようにまでなりました。
    DHCPサーバからの応答をRX65N内蔵のEtherコントローラで受信し、Amazon FreeRTOSに対し
    受信イベント通知してOS層に通知が届いているらしいところまで確認しております。
    ただし、受信データポインタがうまく伝わっておらず、OS内のポインタチェックに
    引っかかってAssertで止まってます。

    なんとなく全体構造が分かってきたので、
    24日・25日と頑張れば以下計画の⑤は完了するような予感がしてます。

    RX65N Envision Kit、RX65N RSK(2MB版/暗号器あり品)をターゲットにコードメンテを維持します。

    ①ルネサスTCP/IPをターゲットで動作させる(Etherの動作確認)
    ②SDIO無線LANを動作確認した時期のFreeRTOS 8.2.2をターゲットで動作させる
    ③ルネサスのFreeRTOSパッケージ、9.0.0をターゲットで動作させる
    ④Amazon FreeRTOS 1.1.0のFreeRTOS部分をターゲットで動作させる
    ⑤Amazon FreeRTOS 1.1.0のFreeRTOS+TCP部分をターゲットで動作させる ★いまここ
    ⑥Amazon FreeRTOS 1.1.0のmbed TLS部分をターゲットで動作させる
    ⑦Amazon FreeRTOS 1.1.0のMQTT部分をターゲットで動作させる(AWSへの接続実験)
    ⑧Amazon FreeRTOS 1.1.0のFreeRTOS+TCP部分のネットワーク層の結合部分を工夫して、
     (1)Ether、(2)SPI接続無線LANモジュール、(3)SDIO無線LANモジュールの3種類を切り替えられるようにする
    ⑨Amazon FreeRTOS 1.1.0のmbed TLS部分の暗号処理プリミティブのソフトウェア実装(AESとかRSAとか)をRX65N内蔵暗号器を使ったハードウェア実装に置き換える
    ⑩NoMaYさんの環境にマージし、Amazon FreeRTOS本家コードへの追従を簡単にできるようにする
    ⑪Amazon FreeRTOS のGitのforkに登録する
    ⑫Amazon FreeRTOS のCertificationを受験し合格しGitの本家に登録する
     docs.aws.amazon.com/.../freertos-qualification-program.html

    また、進捗を報告します。

    以下はNoMaYさん情報に対する返信です。

    >>Amazon FreeRTOSですが、1週間ほど前にv1.2.0になりました。
    私のコードもAmazon FreeRTOS 1.2.0に置き換えておきました。

    >>ファイルの受け渡し
    サーバは、私が個人で借りているさくらのVPSにしました。
    ホスト名はNO-IPという業者のDDNSで変換してあります。
    私はNO-IPの有料ユーザでホスト名を固定化しています。
    怪しいサーバではありません。

    >>RX65N-2MのFreeRTOS
    私のコードもこれを参考にしています。
    FITモジュールとして提供してくれたら楽なんですけどね。

    >>村田製作所のType1FXキットがマルツさんから購入可能
    ほんとうですね。どんどん便利になっていきます。

    >>STM32L4 Discovery Kit IoT Node
    そういえば私が買ったSTのボードは納期2018/04/26になってました。
    RX65Nで動かす前の動作リファレンスにしようと思って買ったのですが、
    なんとなくもう要らない気がしてきています。
    必要になるとしたら、RX65Nがひと段落して、ほかのベンダのボードも一通り触ってみたくなったときでしょうかね。
    そのときは、NoMaYさんに教えていただいたとおり、WIFIボードも含めて、日本の業者経由で買おうと思います。

    ちなみに量産を見越した場合チップ単価や技術サポート面でType 1FXに分があると思いますが、ホビーユースの場合は、ESP8266とかRTL8710が良いと思ってます。この前発売されたRX65Nのターゲットボードに拡張ボードをこしらえてあげればこの辺好きに手組みできるので、
    ターゲットボードは試作素材として良い気がします。

    さて、ではAmazon FreeRTOSのコードを触り始めます。またのちほど。

    以上です