e2 studio v7.5.0でFreeRTOS+SCFGプロジェクトを生成させるとコード生成コンポーネントが使えなくなる

こんにちは。NoMaYです。

今首を傾げているのですが、掲題のプロジェクトを生成させるとスマートコンフィグレータウィンドウのコンポーネント追加ダイアログで、FITモジュールしか表示されなくなって、コード生成コンポーネントを追加することが出来ず、コード生成コンポーネントが使えなくなってしまいます。これには何か理由がありそうなのでしょうか?(FreeRTOS APIをコード生成コンポーネントから呼び出せない筈は無いと思っているのですが、、、)

ちなみに、プロジェクトの生成では、コンパイラはCC-RX V3.01、デバイスはR5F565NEDxFP、に設定して試しました。

Parents
  • こんにちは。NoMaYです。

    コード生成コンポーネントでSCIコンポーネントを生成させてみて、ようやく気付いたのですが、ビルドすると以下のエラーになってしまいますね。これが理由かも知れません、、、

    src\smc_gen\Config_SCI0\Config_SCI0.h(55):E0520020:Identifier "MD_STATUS" is undefined
    src\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 undefined
    src\smc_gen\Config_SCI0\Config_SCI0.c(165):E0520020:Identifier "MD_STATUS" is undefined
    src\smc_gen\Config_SCI0\Config_SCI0.c(165):E0520020:Identifier "MD_OK" is undefined
    src\smc_gen\Config_SCI0\Config_SCI0.c(169):E0520020:Identifier "MD_ARGERROR" is undefined
    src\smc_gen\Config_SCI0\Config_SCI0.c(180):W0521056:Returning pointer to local variable
    src\smc_gen\Config_SCI0\Config_SCI0.c(194):E0520020:Identifier "MD_STATUS" is undefined
    src\smc_gen\Config_SCI0\Config_SCI0.c(196):E0520020:Identifier "MD_STATUS" is undefined
    src\smc_gen\Config_SCI0\Config_SCI0.c(196):E0520020:Identifier "MD_OK" is undefined
    src\smc_gen\Config_SCI0\Config_SCI0.c(200):E0520020:Identifier "MD_ARGERROR" is undefined
    src\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さん

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

    本件ですが、e2 studio v7.7で直る予定です。(次版7.6では現状維持)
    FreeRTOSとスマートコンフィグレータ連携は、徐々に連携範囲を広げていく方針です。

    以上です
Reply
  • NoMaYさん

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

    本件ですが、e2 studio v7.7で直る予定です。(次版7.6では現状維持)
    FreeRTOSとスマートコンフィグレータ連携は、徐々に連携範囲を広げていく方針です。

    以上です
Children
No Data