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に変わったようです。

Parents
  • こんにちは。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をアップします。
    と思ったのですが、ファイルサイズ上限に引っかかったので
    ファイル受け渡し方法を何らか考えてみます。

    以上です

Reply
  • 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をアップします。
    と思ったのですが、ファイルサイズ上限に引っかかったので
    ファイル受け渡し方法を何らか考えてみます。

    以上です

Children