こんにちは。NoMaYです。今首を傾げているのですが、掲題のプロジェクトを生成させるとスマートコンフィグレータウィンドウのコンポーネント追加ダイアログで、FITモジュールしか表示されなくなって、コード生成コンポーネントを追加することが出来ず、コード生成コンポーネントが使えなくなってしまいます。これには何か理由がありそうなのでしょうか?(FreeRTOS APIをコード生成コンポーネントから呼び出せない筈は無いと思っているのですが、、、)ちなみに、プロジェクトの生成では、コンパイラはCC-RX V3.01、デバイスはR5F565NEDxFP、に設定して試しました。
こんにちは。NoMaYです。コード生成コンポーネントでSCIコンポーネントを生成させてみて、ようやく気付いたのですが、ビルドすると以下のエラーになってしまいますね。これが理由かも知れません、、、
src\smc_gen\Config_SCI0\Config_SCI0.h(55):E0520020:Identifier "MD_STATUS" is undefinedsrc\smc_gen\Config_SCI0\Config_SCI0.h(56):E0520020:Identifier "MD_STATUS" is undefined
src\smc_gen\Config_SCI0\Config_SCI0.c(163):E0520020:Identifier "MD_STATUS" is undefinedsrc\smc_gen\Config_SCI0\Config_SCI0.c(165):E0520020:Identifier "MD_STATUS" is undefinedsrc\smc_gen\Config_SCI0\Config_SCI0.c(165):E0520020:Identifier "MD_OK" is undefinedsrc\smc_gen\Config_SCI0\Config_SCI0.c(169):E0520020:Identifier "MD_ARGERROR" is undefinedsrc\smc_gen\Config_SCI0\Config_SCI0.c(180):W0521056:Returning pointer to local variablesrc\smc_gen\Config_SCI0\Config_SCI0.c(194):E0520020:Identifier "MD_STATUS" is undefinedsrc\smc_gen\Config_SCI0\Config_SCI0.c(196):E0520020:Identifier "MD_STATUS" is undefinedsrc\smc_gen\Config_SCI0\Config_SCI0.c(196):E0520020:Identifier "MD_OK" is undefinedsrc\smc_gen\Config_SCI0\Config_SCI0.c(200):E0520020:Identifier "MD_ARGERROR" is undefinedsrc\smc_gen\Config_SCI0\Config_SCI0.c(211):W0521056:Returning pointer to local variable
原因はFreeRTOSConfig.hの以下の部分ですね。FreeRTOSConfig.h
/* Prevent Renesas headers redefining some stdint.h types. */#define __TYPEDEF__ 1
上記によってr_cg_macrodriver.hの以下の部分が条件コンパイル文で除かれるためですね。スマートコンフィグレータへ代わる前は、Typedef definitionsの部分にstdint.hの内容と重複する型定義があって、CC-RXでエラー(もしくはワーニングだったかも)になっていたのだと思われます。スマートコンフィグレータでは、それらの型定義は無くなっていますので、もう上記の処置は不要ですので、削除してしまうことでビルド出来るようになります、、、r_cg_macrodriver.h (スマートコンフィグレータ版)
/******************************************************************************Macro definitions******************************************************************************/#ifndef __TYPEDEF__/* Status list definition */#define MD_STATUSBASE (0x00U)#define MD_OK (MD_STATUSBASE + 0x00U) /* register setting OK */#define MD_SPT (MD_STATUSBASE + 0x01U) /* IIC stop */#define MD_NACK (MD_STATUSBASE + 0x02U) /* IIC no ACK */#define MD_BUSY1 (MD_STATUSBASE + 0x03U) /* busy 1 */#define MD_BUSY2 (MD_STATUSBASE + 0x04U) /* busy 2 *//* Error list definition */#define MD_ERRORBASE (0x80U)#define MD_ERROR (MD_ERRORBASE + 0x00U) /* error */#define MD_ARGERROR (MD_ERRORBASE + 0x01U) /* error argument input error */#define MD_ERROR1 (MD_ERRORBASE + 0x02U) /* error 1 */#define MD_ERROR2 (MD_ERRORBASE + 0x03U) /* error 2 */#define MD_ERROR3 (MD_ERRORBASE + 0x04U) /* error 3 */#define MD_ERROR4 (MD_ERRORBASE + 0x05U) /* error 4 */#define MD_ERROR5 (MD_ERRORBASE + 0x06U) /* error 5 */#endif/******************************************************************************Typedef definitions******************************************************************************/#ifndef __TYPEDEF__ typedef unsigned short MD_STATUS; #define __TYPEDEF__#endif
r_cg_macrodriver.h (スマートコンフィグレータへ代わる前のコード生成機能版)
/******************************************************************************Macro definitions******************************************************************************/#ifndef __TYPEDEF__/* Status list definition */#define MD_STATUSBASE (0x00U)#define MD_OK (MD_STATUSBASE + 0x00U) /* register setting OK */#define MD_SPT (MD_STATUSBASE + 0x01U) /* IIC stop */#define MD_NACK (MD_STATUSBASE + 0x02U) /* IIC no ACK */#define MD_BUSY1 (MD_STATUSBASE + 0x03U) /* busy 1 */#define MD_BUSY2 (MD_STATUSBASE + 0x04U) /* busy 2 *//* Error list definition */#define MD_ERRORBASE (0x80U)#define MD_ERROR (MD_ERRORBASE + 0x00U) /* error */#define MD_ARGERROR (MD_ERRORBASE + 0x01U) /* error argument input error */#define MD_ERROR1 (MD_ERRORBASE + 0x02U) /* error 1 */#define MD_ERROR2 (MD_ERRORBASE + 0x03U) /* error 2 */#define MD_ERROR3 (MD_ERRORBASE + 0x04U) /* error 3 */#define MD_ERROR4 (MD_ERRORBASE + 0x05U) /* error 4 */#define MD_ERROR5 (MD_ERRORBASE + 0x06U) /* error 5 *//* BRK handler command options */typedef enum { BRK_NO_COMMAND, BRK_ALL_MODULE_CLOCK_STOP, BRK_SLEEP, BRK_DEEP_SLEEP, BRK_STANDBY, BRK_LOAD_FINTV_REGISTER} brk_commands;#endif/******************************************************************************Typedef definitions ******************************************************************************/#ifndef __TYPEDEF__typedef signed char int8_t;typedef unsigned char uint8_t;typedef signed short int16_t;typedef unsigned short uint16_t;typedef signed long int32_t;typedef unsigned long uint32_t;typedef unsigned short MD_STATUS;#define __TYPEDEF__#endif
ちなみに、推測ですが、スマートコンフィグレータへ代わる前(もしかするとRL78(あるいは更に昔の78K)のコード生成機能の初期にまで遡るかも知れません)はインクルードガードが無く、代わりに、この__TYPEDEF__で2重定義のエラー(もしくはワーニング)を防止していたのかも知れません、、、(なお、今のスマートコンフィグレータでは、以下のインクルードガードがありました、、、)r_cg_macrodriver.h (スマートコンフィグレータ版)
#ifndef MACRODRIVER_H#define MACRODRIVER_H/******************************************************************************Includes******************************************************************************/#include "platform.h"#include "r_smc_interrupt.h"#include <machine.h>/******************************************************************************Macro definitions (Register bit)******************************************************************************//******************************************************************************Macro definitions******************************************************************************/略#endif
シェルティさん、こんにちは。NoMaYです。リプライ有難う御座います。次の次の版で修正予定、ですね。ならば、以下の別スレッドのFreeRTOSプロジェクト(e2 studioの「FreeRTOSプロジェクト」では無いがFreeRTOSが使えてFITモジュール/コード生成コンポーネントが共にスマートコンフィグレータで生成出来る)をRDP v1.20(r_bsp v5.20)対応に改造してみようと考え始めました。ただし、実行時エラーの問題が未解決ですが、、、(というか、すっかり実行時エラーのことを忘れてました、、、) (おまけに、「うまく出来たら、RX231版/RX130版、GNURX版、C++プロジェクト版を作成する、というようにやってみようかな」という考えも、すっかり忘れてしまっていました、、、)> 本件ですが、e2 studio v7.7で直る予定です。(次版7.6では現状維持)> FreeRTOSとスマートコンフィグレータ連携は、徐々に連携範囲を広げていく方針です。別スレッドのFreeRTOSプロジェクト (e2 studioの「FreeRTOSプロジェクト」では無いです、、、)FreeRTOSをFITやCG(や追々PDG2でも?)と一緒に使うサンプルプログラムをCSplusでビルド出来るプロジェクトにしてみたjapan.renesasrulz.com/cafe_rene/f/forum21/4826/freertos-fit-cg-pdg2-csplus/32094#32094tb_rx65n_scfg_freertos_ccrx_c_csplus_20190522.zip(GNURX版を未作成だったのを忘れてました、、、)Amazon AWSのFreeRTOS Kernel Developer GuideのサンプルコードをRenesas RX SimulatorのDebug Consoleで試せるようにしてみたjapan.renesasrulz.com/cafe_rene/f/forum21/5790/amazon-aws-freertos-kernel-developer-guide-renesas-rx-simulator-debug-console/32119#32119sim_rx65n_freertos_gnurx_c_e2v740_20190530.zipsim_rx65n_freertos_ccrx_c_csplus_20190529.zip実行時エラーの件FreeRTOSをFITやCG(や追々PDG2でも?)と一緒に使うサンプルプログラムをCSplusでビルド出来るプロジェクトにしてみたjapan.renesasrulz.com/cafe_rene/f/forum21/4826/freertos-fit-cg-pdg2-csplus/32103#32103
こんにちは。NoMaYです。e2 studio v7.8.0(Smart Configuratorプラグイン V2.5.0)&CC-RX/GNURXで試してみると、どちらのコンパイラの場合でもFreeRTOSプロジェクトではコード生成コンポーネントは使えないままでした。(工数不足だろうか、、、)ものは試しで、上記で作成したFreeRTOSプロジェクトをエクスポートしたrcpcファイルをCS+ V8.03で読み込んでRXスマートコンフィグレータ V2.5.0を起動してみましたが、RTOS Objectコンポーネントは使えなくなりました。(対応予定は無いかも、、、)まだ、FreeRTOSプロジェクトはIARコンパイラ未対応ですので、その作業が終わるまで待たないといけないような気がしてきました、、、[関連リンク]e2 studio v7.5.0でFreeRTOS+SCFGプロジェクトではRTOS Objectコンポーネントというものは使えないのかなjapan.renesasrulz.com/cafe_rene/f/forum21/5940/e2-studio-v7-5-0-freertos-scfg-rtos-object