こんにちは。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です。先ほどの投稿に添付したzipファイルでの今回の作業の詳細です。以下、繰り返しになりますが、概要です。(1) Amazon FreeRTOS v1.2.0へ追従する(2) シェルティさんの2018/02/24 17:43の投稿のソースをプロジェクトに取り込む(当方のzipファイルはソースを含まず)(3) リンクまで辿り着くようにする(4) rx65n-rskのプロジェクトを追加する(今まではrx65n-envision-kitのプロジェクトのみだった)(5) CS+のプロジェクトに変換する以下、詳細です。
(1) Amazon FreeRTOS v1.2.0へ追従するAmazon FreeRTOS v1.1.0とAmazon FreeRTOS v1.2.0のソースツリーを比較したところ以下の通りでした。(1-1) .projectファイルの修正Amazon FreeRTOS v1.2.0ではリンクされたリソースの1つ(OTAモジュールのソースの1つ)のファイルの名前が変更(aws_ts_ota_agent.c→aws_ota_agent.c)されていましたので、それを.projectファイルに反映しました。今まで
<link> <name>lib/aws/ota/aws_ts_ota_agent.c</name> <type>1</type> <locationURI>AWS_IOT_MCU_ROOT/lib/ota/aws_ts_ota_agent.c</locationURI> </link>
今回
<link> <name>lib/aws/ota/aws_ota_agent.c</name> <type>1</type> <locationURI>AWS_IOT_MCU_ROOT/lib/ota/aws_ota_agent.c</locationURI> </link>
ちなみに、Amazon FreeRTOS v1.2.0ではSTM32L4 Discovery Kit IoT NodeのプロジェクトにもOTAモジュールのソースが追加されたのですが、以下のようにリソースのリンクされ方がTexas Instruments CC3220SF-LAUNCHXのプロジェクトとは微妙に異なっていました。Texas Instruments CC3220SF-LAUNCHXLのプロジェクト
<link> <name>lib/aws/ota</name> <type>2</type> <locationURI>BASE_DIR_ROOT/lib/ota/portable/ti/cc3220_launchpad</locationURI> </link>
<link> <name>lib/aws/ota/aws_ota_cbor.c</name> <type>1</type> <locationURI>BASE_DIR_ROOT/lib/ota/aws_ota_cbor.c</locationURI> </link> <link> <name>lib/aws/ota/aws_rsprintf.c</name> <type>1</type> <locationURI>BASE_DIR_ROOT/lib/ota/aws_rsprintf.c</locationURI> </link> <link> <name>lib/aws/ota/aws_ota_agent.c</name> <type>1</type> <locationURI>BASE_DIR_ROOT/lib/ota/aws_ota_agent.c</locationURI> </link>
STM32L4 Discovery Kit IoT Nodeのプロジェクト
<link> <name>lib/aws/ota</name> <type>2</type> <locationURI>virtual:/virtual</locationURI> </link>
<link> <name>lib/aws/ota/aws_ota_cbor.c</name> <type>1</type> <locationURI>AWS_IOT_MCU_ROOT/lib/ota/aws_ota_cbor.c</locationURI> </link> <link> <name>lib/aws/ota/aws_rsprintf.c</name> <type>1</type> <locationURI>AWS_IOT_MCU_ROOT/lib/ota/aws_rsprintf.c</locationURI> </link> <link> <name>lib/aws/ota/aws_ota_agent.c</name> <type>1</type> <locationURI>AWS_IOT_MCU_ROOT/lib/ota/aws_ota_agent.c</locationURI> </link> <link> <name>lib/aws/ota/aws_ota_pal.c</name> <type>1</type> <locationURI>AWS_IOT_MCU_ROOT/lib/ota/portable/st/stm32l475_discovery/aws_ota_pal.c</locationURI> </link>
(1-2) ソースファイルの差し替え その1Amazon FreeRTOS v1.2.0へ追従させました。差し替え対象フォルダ: demos\renesas\rx65n-envision-kit\common\application_codeファイル:main.c以下のファイルをコピーフォルダ: demos\vendor\board\common\application_codeファイル: main.c(1-3) ソースファイルの差し替え その2こちらは、Amazon FreeRTOS v1.2.0へ追従させるというよりは、むしろ、コピー元を変更したといった方が良いかも知れません。(今までdemos\st\stm32l475_discovery\common\config_fileフォルダのファイルをコピーしていました。)差し替え対象フォルダ: demos\renesas\rx65n-envision-kit\common\config_filesファイル:aws_bufferpool_config.haws_demo_config.haws_mqtt_agent_config.haws_mqtt_config.haws_secure_sockets_config.haws_shadow_config.haws_wifi_config.h以下のファイルをコピーフォルダ: demos\vendor\board\common\config_filesファイル:aws_bufferpool_config.haws_demo_config.haws_mqtt_agent_config.haws_mqtt_config.haws_secure_sockets_config.haws_shadow_config.haws_wifi_config.h
(2) シェルティさんの2018/02/24 17:43の投稿のソースをプロジェクトに取り込む(当方のzipファイルはソースを含まず)(2-1) .cprojectファイルの修正コンパイラバージョンの変更インクルードパスの削除/追加ライブラリの削除/追加C言語標準ライブラリの設定を変更SECURE_BOOTの設定を除去ビルドから除外するファイルの変更(2-2) aws_demos.scfgファイルの差し替え差し替え対象demos\renesas\rx65n-envision-kit\ccrx-e2studio6\aws_demos.scfg上記のファイルを削除して、シェルティさんの以下のファイルをコピーして、aws_demos.scfgにリネームrx65n_envision_kit_aws\rx65n_envision_kit_aws.scfg(2-3) NetworkInterface.hファイルの差し替え差し替え対象lib\FreeRTOS-Plus-TCP\include\NetworkInterface.hシェルティさんの以下のファイルをコピーrx65n_envision_kit_aws\src\amazon-freertos-master\lib\FreeRTOS-Plus-TCP\include\NetworkInterface.h補足以下のプロトタイプ宣言の1行が追加されていますuint32_t ulRand(void);(2-4) NetworkInterface.cファイルの追加コピー先ファイルlib\FreeRTOS-Plus-TCP\source\portable\NetworkInterface\RX\NetworkInterface.cシェルティさんの以下のファイルをコピーrx65n_envision_kit_aws\src\amazon-freertos-master\lib\FreeRTOS-Plus-TCP\source\portable\NetworkInterface\RX\NetworkInterface.c(2-5) その他のファイルの追加コピー先フォルダdemos\renesas\rx65n-envision-kit\ccrx-e2studio6\src\シェルティさんの以下のファイルとサブフォルダをコピー(当方のzipファイルは以下のファイルを含まず)rx65n_envision_kit_aws\src\*.* (time.hとamazon-freertos-master\は除く)
(3) リンクまで辿り着くようにする(3-1) 以下のフォルダを作成しファイルをコピーコピーしたファイルは中身が空の関数のテンプレートのソース(○○○/portable/vendor/board/○○○.c)です。作成したフォルダlib\pkcs11\portable\renesas\rx65n-envision-kitlib\secure_sockets\portable\renesas\rx65n-envision-kitlib\wifi\portable\renesas\rx65n-envision-kitそれぞれコピーしたファイルlib\pkcs11\portable\vendor\board\pkcs11.clib\secure_sockets\portable\vendor\board\aws_secure_sockets.clib\wifi\portable\vendor\board\aws_wifi.c(3-2) 以下のフォルダを作成し空のファイルを作成まだOTAモジュールに関してはテンプレートのソースが用意されていませんでしたので、一旦、空のファイルを作成しました。(後で自力で中身が空の関数を追加する為です。)作成したフォルダlib\ota\portable\renesas\rx65n-envision-kit作成した空のファイルaws_ota_pal.c(3-3) リンクされたリソースのリンク先を変更上記の(3-1)と(3-2)のフォルダを指すようにしました。今まで今回(3-4) 以下のソースファイルをビルドから除外FreeRTOS-Plus-FATのソースを呼び出しているようでリンクが通りそうに無かったからです。lib/aws/FreeRTOS-Plus-TCP/source/protocols/Common/FreeRTOS_TCP_server.clib/aws/FreeRTOS-Plus-TCP/source/protocols/FTP/FreeRTOS_FTP_server.clib/aws/FreeRTOS-Plus-TCP/source/protocols/HTTP/FreeRTOS_HTTP_server.c(3-5) aws_application_version.hを修正(以前と同じ修正)ファイル: 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-6) compilersupport_p.hを修正(先延ばししていた修正)ファイル: 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#elif defined(__RX) && defined(__CCRX__)# include <builtin.h># if defined(__LIT)# define cbor_ntohll(x) ((cbor_ntohl(((uint32_t)(x))) * UINT64_C(0x100000000)) + (cbor_ntohl(((x) >> 32))))# define cbor_htonll cbor_ntohll# define cbor_ntohl _builtin_revl# define cbor_htonl _builtin_revl# define cbor_ntohs _builtin_revw# define cbor_htons _builtin_revw# else# define cbor_ntohll# define cbor_htonll# define cbor_ntohl# define cbor_htonl# define cbor_ntohs# define cbor_htons# endif#endif
(3-7) pkcs11.cを修正(中身が空の関数のテンプレートのソースです)元々はlib\pkcs11\portable\vendor\board\pkcs11.cをコピーしたものなのですが、エラーが含まれていました。ファイル: lib\pkcs11\portable\renesas\rx65n-envision-kit\pkcs11.c内容:
/* PKCS#11 Interface Include. */#include "aws_pkcs11.h"/* C runtime includes. */#include <stdio.h>
(3-8) aws_ota_pal.cを修正(空のファイルに中身が空の関数を追加しただけです)まだOTAモジュールに関してはテンプレートのソースが用意されていませんでしたので、先ほど作成した空のファイルに自力で中身が空の関数を追加しました。ファイル: lib\ota\portable\renesas\rx65n-envision-kit\aws_ota_pal.c内容:
#ifdef INCLUDE_FROM_OTA_AGENT/* Abort receiving the specified OTA update by closing the file. * This shall do whatever is necessary to clean up the file on the STM32L4xx platform. * Today this is does not require much of anything. */static OTA_Err_t prvAbort(OTA_FileContext_t * const C){ /* FIX ME. */ return kOTA_Err_SoftwareBug;}/* Attempt to create a new receive file for the OTA update. */static bool_t prvCreateFileForRx(OTA_FileContext_t * const C){ /* FIX ME. */ return pdFALSE;}/* Close the specified file. This may authenticate the file if it is marked as secure. */static OTA_Err_t prvCloseFile(OTA_FileContext_t * const C){ /* FIX ME. */ return kOTA_Err_SoftwareBug;}static OTA_Err_t prvActivateNewImage(void){ /* FIX ME. */ return kOTA_Err_SoftwareBug;}/* Set the final state of the last transferred (final) OTA file. */static OTA_Err_t prvSetImageState (OTA_ImageState_t eState){ /* FIX ME. */ return kOTA_Err_SoftwareBug;}/* Verify the signature of the specified file. */static OTA_Err_t prvCheckFileSignature(OTA_FileContext_t * const C){ /* FIX ME. */ return kOTA_Err_SoftwareBug;}/* Read the specified signer certificate from the file system into a local buffer. The allocated memory becomes the property of the caller who is responsible for freeing it. */static u8 * prvReadAndAssumeCertificate(const u8 * const pucCertName, s32 * const lSignerCertSize){ /* FIX ME. */ return NULL;}/* Write a block of data to the specified file. */static s16 prvWriteBlock(OTA_FileContext_t * const C, s32 iOffset, u8 * const pacData, u32 iBlockSize){ /* FIX ME. */ return -1;}#endif
(3-9) main.cを修正元々はdemos\vendor\board\common\application_code\main.cをコピーしたものなのですが、エラーが含まれていました。(実は、ワーニングも出るのですが、そちらはそのままにしました。)ファイル: demos\renesas\rx65n-envision-kit\common\application_code\main.c内容:
#include "FreeRTOS.h"#include "task.h"#include "FreeRTOS_IP.h"
void vApplicationIPNetworkEventHook( eIPCallbackEvent_t eNetworkEvent );
(3-10) main.cを修正 その2ファイル: demos\renesas\rx65n-envision-kit\common\application_code\main.c以下の関数を#if 0~#endifで囲むvoid vApplicationIPNetworkEventHook( eIPCallbackEvent_t eNetworkEvent )void vApplicationGetIdleTaskMemory( StaticTask_t ** ppxIdleTaskTCBBuffer, StackType_t ** ppxIdleTaskStackBuffer, uint32_t * pulIdleTaskStackSize )void vApplicationGetTimerTaskMemory( StaticTask_t ** ppxTimerTaskTCBBuffer, StackType_t ** ppxTimerTaskStackBuffer, uint32_t * pulTimerTaskStackSize )void vApplicationMallocFailedHook()void vApplicationStackOverflowHook( TaskHandle_t xTask, char * pcTaskName )void vApplicationIdleHook( void )以下の関数をシェルティさんのソースからコピーして#if 1~#endifで囲むER R_TCPIP_UserCallback(UB channel, UW eventid, VP param)const char * pcApplicationHostnameHook( void )void vApplicationIPNetworkEventHook( eIPCallbackEvent_t eNetworkEvent )(3-11) helper.cを追加とにかく足りない関数を中身が空の関数でも構わないので追加しました。なお、main.cで除いた関数をhelper.cで足しているのは、シェルティさんのmain()のソースを有効にした場合もリンクまで辿り着くようにする為です。)ファイル:demos\renesas\rx65n-envision-kit\common\application_code\helper.c内容:
#include "FreeRTOS.h"#include "mbedtls/entropy_poll.h"#include "aws_application_version.h"/* Declare the firmware version structure for all to see. */const AppVersion32_t xAppFirmwareVersion = { .u.x.ucMajor = APP_VERSION_MAJOR, .u.x.ucMinor = APP_VERSION_MINOR, .u.x.usBuild = APP_VERSION_BUILD,};int mbedtls_hardware_poll( void *data, unsigned char *output, size_t len, size_t *olen ){ return 0;}void abort( void ){ for(;;){}}/* Logging task */void vMainUARTPrintString( char * pcString ){}/*-----------------------------------------------------------*//* configUSE_STATIC_ALLOCATION is set to 1, so the application must provide an * implementation of vApplicationGetIdleTaskMemory() to provide the memory that is * used by the Idle task. */void vApplicationGetIdleTaskMemory( StaticTask_t ** ppxIdleTaskTCBBuffer, StackType_t ** ppxIdleTaskStackBuffer, uint32_t * pulIdleTaskStackSize ){/* If the buffers to be provided to the Idle task are declared inside this * function then they must be declared static - otherwise they will be allocated on * the stack and so not exists after this function exits. */ static StaticTask_t xIdleTaskTCB; static StackType_t uxIdleTaskStack[ configMINIMAL_STACK_SIZE ]; /* Pass out a pointer to the StaticTask_t structure in which the Idle * task's state will be stored. */ *ppxIdleTaskTCBBuffer = &xIdleTaskTCB; /* Pass out the array that will be used as the Idle task's stack. */ *ppxIdleTaskStackBuffer = uxIdleTaskStack; /* Pass out the size of the array pointed to by *ppxIdleTaskStackBuffer. * Note that, as the array is necessarily of type StackType_t, * configMINIMAL_STACK_SIZE is specified in words, not bytes. */ *pulIdleTaskStackSize = configMINIMAL_STACK_SIZE;}/*-----------------------------------------------------------*//* configUSE_STATIC_ALLOCATION is set to 1, so the application must provide an * implementation of vApplicationGetTimerTaskMemory() to provide the memory that is * used by the RTOS daemon/time task. */void vApplicationGetTimerTaskMemory( StaticTask_t ** ppxTimerTaskTCBBuffer, StackType_t ** ppxTimerTaskStackBuffer, uint32_t * pulTimerTaskStackSize ){/* If the buffers to be provided to the Timer task are declared inside this * function then they must be declared static - otherwise they will be allocated on * the stack and so not exists after this function exits. */ static StaticTask_t xTimerTaskTCB; static StackType_t uxTimerTaskStack[ configTIMER_TASK_STACK_DEPTH ]; /* Pass out a pointer to the StaticTask_t structure in which the Idle * task's state will be stored. */ *ppxTimerTaskTCBBuffer = &xTimerTaskTCB; /* Pass out the array that will be used as the Timer task's stack. */ *ppxTimerTaskStackBuffer = uxTimerTaskStack; /* Pass out the size of the array pointed to by *ppxTimerTaskStackBuffer. * Note that, as the array is necessarily of type StackType_t, * configMINIMAL_STACK_SIZE is specified in words, not bytes. */ *pulTimerTaskStackSize = configTIMER_TASK_STACK_DEPTH;}/*-----------------------------------------------------------*/
(4) rx65n-rskのプロジェクトを追加する(今まではrx65n-envision-kitのプロジェクトのみだった)(4-1) プロジェクトフォルダの作成以下のフォルダを作成demos\renesas\rx65n-rsk\ccrx-e2studio6demos\renesas\rx65n-rsk\common以下のフォルダのファイルをコピーdemos\renesas\rx65n-envision-kit\ccrx-e2studio6demos\renesas\rx65n-envision-kit\common(4-2) .projectファイルと.cprojectファイルの修正フォルダ名の変更など(4-3) aws_demos.scfgファイルの差し替え差し替え対象demos\renesas\rx65n-rsk\ccrx-e2studio6\aws_demos.scfg上記のファイルを削除して、シェルティさんの以下のファイルをコピーして、aws_demos.scfgにリネームrx65n_rsk\rx65n_rsk.scfg(4-4) その他のファイルの差し替え差し替え対象demos\renesas\rx65n-rsk\ccrx-e2studio6\src\*.*上記のファイルを削除して、シェルティさんの以下のファイルとサブフォルダをコピー(当方のzipファイルは以下のファイルを含まず)rx65n_rsk\src\*.* (amazon-freertos-master\は除く)
(5) CS+のプロジェクトへ変換プロジェクトの変換は、基本的にはrcpcファイルをe2 studioでエクスポートしてCS+で読み込むという手順で行いましたが、その後に手作業で修正を行っています。手作業でプロジェクト構造を修正・ lib\third_partyカテゴリの位置を修正・ lib\third_party\mbedtlsカテゴリが壊れている(CS+のrcpcファイル読み込みの不具合?)ので修正・ lib\third_party\tinycborカテゴリが壊れている(CS+のrcpcファイル読み込みの不具合?)ので修正・ lib\third_partyカテゴリの下位にmcu_vendor\renesas\DriverLibName\DriverLibVersionカテゴリを追加(中身は空)・ common\application_codeカテゴリの下位にrenesas_codeカテゴリを追加(中身は空)手作業でプロジェクトの登録ファイルを修正・ プロジェクト変換情報_aws_demos.txt → 削除・ lib\FreeRTOS-Plus-TCP\source\ReadMe.url → 追加手作業でSmart Configuratorカテゴリとsrc\smc_genカテゴリの重複を解消・ Smart Configuratorを起動してソースを生成させた後でsrc\smc_genカテゴリを削除手作業でインクルードパスを修正修正前
src\smc_gen\r_t4_rx\refsrc\smc_gen\r_t4_rx\libsrc\smc_gen\r_t4_driver_rx\srcsrc\smc_gen\r_t4_driver_rx\refsrc\smc_gen\r_sys_time_rx\srcsrc\smc_gen\r_sys_time_rx\refsrc\smc_gen\r_sys_time_rxsrc\smc_gen\r_pincfgsrc\smc_gen\r_ether_rx\src\physrc\smc_gen\r_ether_rx\srcsrc\smc_gen\r_ether_rx\refsrc\smc_gen\r_ether_rxsrc\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\general..\..\..\..\lib\third_party\tinycbor..\..\..\..\lib\third_party\mbedtls\include\mbedtls..\%ProjectName%..\%ProjectName%\config_files..\%ProjectName%\application_code..\%ProjectName%\application_code\renesas_code..\%ProjectName%\application_code\common_demos\include..\%ProjectName%\lib\aws\include..\%ProjectName%\lib\aws\include\private..\%ProjectName%\lib\aws\FreeRTOS\portable\Renesas\RX600v2..\%ProjectName%\lib\aws\FreeRTOS-Plus-TCP\source\protocols\include..\%ProjectName%\lib\aws\FreeRTOS-Plus-TCP\include..\%ProjectName%\lib\aws\FreeRTOS-Plus-TCP\source\portable\Compiler\Renesas..\%ProjectName%\lib\aws\ota..\%ProjectName%\lib\third_party\jsmn..\%ProjectName%\lib\third_party\pkcs11..\%ProjectName%\lib\third_party\tinycbor..\%ProjectName%\lib\third_party\mbedtls\include..\%ProjectName%\src\FreeRTOS_user..\%ProjectName%\src..\%ProjectName%\src\smc_gen\r_bsp..\%ProjectName%\src\smc_gen\r_config..\%ProjectName%\src\smc_gen\r_cmt_rx..\%ProjectName%\src\smc_gen\r_cmt_rx\src..\%ProjectName%\src\smc_gen\r_ether_rx..\%ProjectName%\src\smc_gen\r_sys_time_rx..\%ProjectName%\src\smc_gen\r_sys_time_rx\src..\%ProjectName%\src\smc_gen\r_t4_driver_rx..\%ProjectName%\src\smc_gen\r_t4_driver_rx\src..\%ProjectName%\src\smc_gen\r_t4_rx..\%ProjectName%\src\smc_gen\r_t4_rx\lib..\%ProjectName%\src\smc_gen\general..\%ProjectName%\src\smc_gen\r_pincfg
修正後
src\smc_gen\r_t4_rx\refsrc\smc_gen\r_t4_rx\libsrc\smc_gen\r_t4_driver_rx\srcsrc\smc_gen\r_t4_driver_rx\refsrc\smc_gen\r_sys_time_rx\srcsrc\smc_gen\r_sys_time_rx\refsrc\smc_gen\r_sys_time_rxsrc\smc_gen\r_pincfgsrc\smc_gen\r_ether_rx\src\physrc\smc_gen\r_ether_rx\srcsrc\smc_gen\r_ether_rx\refsrc\smc_gen\r_ether_rxsrc\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\general...\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\renesas\rx65n-envision-kit (rx65n-envision-kitの場合)..\..\..\..\lib\ota\portable\renesas\rx65n-rsk (rx65n-rskの場合)..\..\..\..\lib\third_party\jsmn..\..\..\..\lib\third_party\pkcs11..\..\..\..\lib\third_party\tinycbor..\..\..\..\lib\third_party\mbedtls\includesrc\FreeRTOS_usersrc
手作業でライブラリパスを修正修正前
%ProjectFolder%/../%ProjectName%/src/smc_gen/r_t4_rx/lib/T4_Library_rxv1_ether_little.libsrc/smc_gen/r_t4_rx/lib/T4_Library_rxv1_ether_little.lib
src/smc_gen/r_t4_rx/lib/T4_Library_rxv1_ether_little.lib
手作業でプロジェクト設定を変更・ [一括ビルドを行う] を [はい] に変更(Smart Configuratorでコード生成すると何故か [いいえ] になる)・ [インクルード・ファイルが存在しないソースの扱い] を [再コンパイル/アセンブルしない] に変更手作業でリンク順を合わせる・ rcpcファイルのLinkOrderデータをmtlsフォーマットに切り出してインポートする(UTF-8,CR+LF,BOM付)) aws_demos.libは除去しておく(含まれていてもエラーにはならない)
シェルティさん、こんにちは。NoMaYです。リプライが遅くなりました。zipファイルを受け取りました。rx65n_envision_kit_awsもrx65n_rsk_awsもビルド出来ました。(環境はe2 studio v6.2.0+CC-RX V2.03です。)>週末にでもGitHubへ登録してみようと思っています。すみません。使おうと思っていたGithub DesktopというGUI版ツールが64bit版Windows用しかなくて当方の32bit版Windowsでは使えず、そこでgitのコマンドライン版ツールを触ってみたら、使い方で分からない&エラーにも遭遇して、まだ登録出来ていません。