こんにちは。NoMaYです。ライセンスはMIT Licenseでした。TLSとしてmbed TLSが使用されていました。サポートされているボードの写真を見ていたら、どれにも有線LANコネクタが無いことに気付きました。時代の流れでしょうか、、、Getting Started with Amazon FreeRTOSaws.amazon.com/freertos/getting-started/Amazon FreeRTOSaws.amazon.com/freertos/Amazon FreeRTOS ソースコードgithub.com/aws/amazon-freertos[関連リンク]FreeRTOS - freertos.orgwww.freertos.org/FreeRTOS - sourceforge.netsourceforge.net/projects/freertos/files/FreeRTOS kernel自体はCC-RXにも対応github.com/aws/amazon-freertos/tree/master/lib/FreeRTOS/portable/RenesasAmazon FreeRTOSはTLSにmbed TLSを使用github.com/aws/amazon-freertos/tree/master/lib/third_party/mbedtls[ニュース]組み込み業界に大インパクト「Amazon FreeRTOS」の衝撃 - 大原雄介,MONOistmonoist.atmarkit.co.jp/mn/articles/1712/28/news011.htmlアマゾン「AWS IoT」は何が衝撃的なのか - 大原雄介,MONOistmonoist.atmarkit.co.jp/mn/articles/1510/21/news026.html(2018/01/01 : 記事を選び直しました。)[追記]もしかしたら、オープンソースライセンスのドライバライブラリが用意されていないから、ルネサスさんはアマゾンさんに相手にして貰えないのかも、、、ちなみに、FreeRTOS kernel自体のライセンスがV10からModified GPLからMIT Licenseに変わったようです。
こんにちは。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.hamazon-freertos-1.1.0\demos\renesas\rx65n-envision-kit\ccrx-csplus\aws_demos.mtpjamazon-freertos-1.1.0\demos\renesas\rx65n-envision-kit\ccrx-csplus\aws_demos.rcpcamazon-freertos-1.1.0\demos\renesas\rx65n-envision-kit\ccrx-csplus\aws_demos.rcpeamazon-freertos-1.1.0\demos\renesas\rx65n-envision-kit\ccrx-csplus\aws_demos.scfgamazon-freertos-1.1.0\demos\renesas\rx65n-envision-kit\ccrx-e2studio6\.cprojectamazon-freertos-1.1.0\demos\renesas\rx65n-envision-kit\ccrx-e2studio6\.projectamazon-freertos-1.1.0\demos\renesas\rx65n-envision-kit\ccrx-e2studio6\aws_demos.scfgamazon-freertos-1.1.0\demos\renesas\rx65n-envision-kit\ccrx-e2studio6\.settings\com.renesas.cdt.managedbuild.renesas.ccrx.prefsamazon-freertos-1.1.0\demos\renesas\rx65n-envision-kit\ccrx-e2studio6\.settings\Dependency_Scan_Preferences.prefsamazon-freertos-1.1.0\demos\renesas\rx65n-envision-kit\ccrx-e2studio6\.settings\e2studio_project.prefsamazon-freertos-1.1.0\demos\renesas\rx65n-envision-kit\ccrx-e2studio6\.settings\renesasPGModel.xmlamazon-freertos-1.1.0\demos\renesas\rx65n-envision-kit\ccrx-e2studio6\.settings\CodeGenerator\cgprojectDatas.datasamazon-freertos-1.1.0\demos\renesas\rx65n-envision-kit\common\application_code\iodefine.hamazon-freertos-1.1.0\demos\renesas\rx65n-envision-kit\common\application_code\main.camazon-freertos-1.1.0\demos\renesas\rx65n-envision-kit\common\application_code\time.hamazon-freertos-1.1.0\demos\renesas\rx65n-envision-kit\common\config_files\aws_bufferpool_config.hamazon-freertos-1.1.0\demos\renesas\rx65n-envision-kit\common\config_files\aws_demo_config.hamazon-freertos-1.1.0\demos\renesas\rx65n-envision-kit\common\config_files\aws_ggd_config.hamazon-freertos-1.1.0\demos\renesas\rx65n-envision-kit\common\config_files\aws_mqtt_agent_config.hamazon-freertos-1.1.0\demos\renesas\rx65n-envision-kit\common\config_files\aws_mqtt_config.hamazon-freertos-1.1.0\demos\renesas\rx65n-envision-kit\common\config_files\aws_secure_sockets_config.hamazon-freertos-1.1.0\demos\renesas\rx65n-envision-kit\common\config_files\aws_shadow_config.hamazon-freertos-1.1.0\demos\renesas\rx65n-envision-kit\common\config_files\aws_wifi_config.hamazon-freertos-1.1.0\demos\renesas\rx65n-envision-kit\common\config_files\FreeRTOSConfig.hamazon-freertos-1.1.0\demos\renesas\rx65n-envision-kit\common\config_files\FreeRTOSIPConfig.hamazon-freertos-1.1.0\lib\FreeRTOS-Plus-TCP\source\portable\Compiler\Renesas\pack_struct_end.hamazon-freertos-1.1.0\lib\FreeRTOS-Plus-TCP\source\portable\Compiler\Renesas\pack_struct_start.hamazon-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)#endiftypedef 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.logaws_demos.e2studio6.error.txtaws_demos_renesas_rx_mcu_experiment_csp_build_log_20180113.zip内容:aws_demos.CS+.build.logaws_demos.CS+.error.txt[リンク]Amazon FreeRTOS v1.1.0 ダウンロードgithub.com/aws/amazon-freertos/releases/tag/v1.1.0FreeRTOS 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_pincfgsrc\smc_gen\r_configsrc\smc_gen\r_cmt_rx\refsrc\smc_gen\r_cmt_rxsrc\smc_gen\r_bsp\mcu\rx65n\register_accesssrc\smc_gen\r_bsp\mcu\rx65nsrc\smc_gen\r_bsp\mcu\allsrc\smc_gen\r_bsp\board\generic_rx65nsrc\smc_gen\r_bspsrc\smc_gen\generalsrc\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.txtAWS 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.htmlGetting Started with the FreeRTOS Windows Simulatordocs.aws.amazon.com/freertos/latest/userguide/getting_started_windows.htmlBluetooth® 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=無料+ファイル転送+オンラインストレージ