e2 studioでCMakeでビルドする、というアプリケーションノートがあるのですがスマートコンフィグレータは使えるのでしょうか?

こんにちは。NoMaYです。

Visual Studio 2022を触っていて、これからVisual Studio上でCC-RX/CC-RL/CC-RHを使うならCMakeを使うのが良いのかな?と思い始めたところ、ルネサスさんから以下のアプリケーションノートが発行されていたことを思い出したので目を通してみたのですが、どうもこれではスマートコンフィグレータどころかコンパイルオプションの設定すらe2 studio上では出来ないのでは?という気がしてきました。実際、どうなのでしょう?御存知の方はいらっしゃいますでしょうか?

アプリケーションノート 統合開発環境 e² studio CMakeプロジェクトを作成してビルドする
R20AN0613JJ0200 Rev.2.00 Pages 10 Jun.30.21
www.renesas.com/jp/ja/document/apn/e-studio-creating-and-executing-build-cmake-project
 
[追記] 2021/12/31 11:00

ひとつ調査漏れに気付きました。こういうアプリケーションノートも出ていたのですね。

アプリケーションノート 統合開発環境 e² studio CMakeを使用してCC-RX用ソース・ファイルをビルドする
R20AN0569JJ0201 Rev.2.01 Pages 12 Sep.15.21

PDF
www.renesas.com/jp/ja/document/apn/integrated-development-environment-e-studio-using-cmake-renesas-cc-rx-compiler-rev201

ZIP
www.renesas.com/jp/ja/document/scd/integrated-development-environment-e-studio-using-cmake-renesas-cc-rx-compiler-rev201-sample-code
 

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

    FreeRTOS with IoT librariesのamazon-freertos-202107.00-rx-1.0.1でCMakeでリンクの最後までは辿り着くようにパッチを当てたファイルを以下のzipファイルに固めました。(CC-RX V3.04の無償評価版で試している都合で、サイズ制限によりリンクエラーになりますので、そこまで、ですけれども。動くかどうかはやってみないと、、、です。) (Azure RTOSの方は、後回しになってしまいましたけれども、これからです。)

    Renesas_GitHub_FreeRTOS_202107_101_20220609.zip    次の投稿の件で差し替えました
    Renesas_GitHub_FreeRTOS_202107_101_20220610.zip    次の次の投稿の件で差し替えました
    Renesas_GitHub_FreeRTOS_202107_101_20220611.zip

    org/amazon-freertos-202107.00-rx-1.0.1/CMakeLists.txt
    org/amazon-freertos-202107.00-rx-1.0.1/tools/cmake/toolchains/cc-rx.cmake
    org/amazon-freertos-202107.00-rx-1.0.1/tools/cmake/toolchains/find_compiler.cmake
    org/amazon-freertos-202107.00-rx-1.0.1/vendors/renesas/amazon_freertos_common/entropy_hardware_poll.c
    org/amazon-freertos-202107.00-rx-1.0.1/vendors/renesas/boards/rx65n-rsk/CMakeLists.txt
    org/amazon-freertos-202107.00-rx-1.0.1/vendors/renesas/boards/rx65n-rsk/ports/pkcs11/core_pkcs11_pal.c
    patch/amazon-freertos-202107.00-rx-1.0.1/CMakeLists.txt
    patch/amazon-freertos-202107.00-rx-1.0.1/r_build.bat ← build用バッチファイル(絶対パスを含みません)
    patch/amazon-freertos-202107.00-rx-1.0.1/r_configure.bat ← configure用バッチファイル(絶対パスを含みます(要修正))
    patch/amazon-freertos-202107.00-rx-1.0.1/tools/cmake/cmake-3.23.1-patch/...略...
    (中身はCMake_Ninja_XXSC_CCXX_examples_20220606.zipのものと同一)
    ...略...
    patch/amazon-freertos-202107.00-rx-1.0.1/tools/cmake/toolchains/cc-rx.cmake
    patch/amazon-freertos-202107.00-rx-1.0.1/tools/cmake/toolchains/find_compiler.cmake
    patch/amazon-freertos-202107.00-rx-1.0.1/vendors/renesas/amazon_freertos_common/entropy_hardware_poll.c
    patch/amazon-freertos-202107.00-rx-1.0.1/vendors/renesas/boards/rx65n-rsk/CMakeLists.txt
    patch/amazon-freertos-202107.00-rx-1.0.1/vendors/renesas/boards/rx65n-rsk/ports/pkcs11/core_pkcs11_pal.c


    以下、CC-RXとRSK-RX65N 2MBの場合のToolchainファイルとCMakeLists.txtです。

    tools/cmake/toolchains/cc-rx.cmake

    cc-rx.cmake.20220609.txt
    set(CMAKE_MODULE_PATH "${CMAKE_CURRENT_LIST_DIR}/../cmake-3.23.1-patch/Modules")
    
    include("${CMAKE_CURRENT_LIST_DIR}/find_compiler.cmake")
    
    set(CMAKE_SYSTEM_NAME Generic)
    
    # Find Renesas CC-RX.
    afr_find_compiler(AFR_COMPILER_CC ccrx)
    afr_find_compiler(AFR_COMPILER_CXX ccrx)
    afr_find_compiler(AFR_COMPILER_ASM asrx)
    afr_find_external_toolchain(AFR_RENESAS_XCONVERTER renesas_cc_converter)
    
    # Specify the cross compiler.
    set(CMAKE_C_COMPILER ${AFR_COMPILER_CC} CACHE FILEPATH "C compiler")
    set(CMAKE_CXX_COMPILER ${AFR_COMPILER_CXX} CACHE FILEPATH "C++ compiler")
    set(CMAKE_ASM_COMPILER ${AFR_COMPILER_ASM} CACHE FILEPATH "ASM compiler")
    set(CMAKE_RENESAS_XCONVERTER ${AFR_RENESAS_XCONVERTER} CACHE FILEPATH "Renesas X Converter")
    
    # Add target system root to cmake find path.
    get_filename_component(AFR_COMPILER_DIR "${AFR_COMPILER_CC}" DIRECTORY)
    get_filename_component(CMAKE_FIND_ROOT_PATH "${AFR_COMPILER_DIR}" DIRECTORY)
    
    # Don't look for executable in target system prefix.
    set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
    
    # Look for includes and libraries only in the target system prefix.
    set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
    set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
    

     
    vendors/renesas/boards/rx65n-rsk/CMakeLists.txt
    CMakeLists.txt.20220611.txt
    # Set variables.
    set(renesas_dir "${AFR_VENDORS_DIR}/renesas")
    set(renesas_amazon_freertos_common_dir "${renesas_dir}/amazon_freertos_common")
    set(renesas_amazon_freertos_compiler_support_dir "${renesas_amazon_freertos_common_dir}/compiler_support/ccrx")
    set(renesas_amazon_freertos_network_support_dir "${renesas_amazon_freertos_common_dir}/network_support/onchip_rx_ether")
    set(rx_driver_package_dir "${renesas_dir}/rx_driver_package/v133")
    set(rx65nrsk_dir "${renesas_dir}/boards/rx65n-rsk")
    set(rx65nrsk_ports_dir "${rx65nrsk_dir}/ports")
    
    if(AFR_IS_TESTING)
        set(rx65nrsk_aws_dir "${rx65nrsk_dir}/aws_tests")
        set(exe_target aws_tests)
    else()
        set(rx65nrsk_aws_dir "${rx65nrsk_dir}/aws_demos")
        set(exe_target aws_demos)
    endif()
    
    # -------------------------------------------------------------------------------------------------
    # FreeRTOS Console metadata
    # -------------------------------------------------------------------------------------------------
    
    afr_set_board_metadata(ID "Renesas-RX65N-RSK")
    afr_set_board_metadata(DISPLAY_NAME "Renesas Starter Kit+ for RX65N-2MB")
    afr_set_board_metadata(DESCRIPTION "The Renesas Starter Kit+ for RX65N-2MB connects to AWS IoT Cloud using Ethernet")
    afr_set_board_metadata(VENDOR_NAME "Renesas")
    afr_set_board_metadata(FAMILY_NAME "RX65N")
    afr_set_board_metadata(IS_ACTIVE "TRUE")
    afr_set_board_metadata(CODE_SIGNER "AmazonFreeRTOS-Default")
    afr_set_board_metadata(DATA_RAM_MEMORY "640KB")
    afr_set_board_metadata(PROGRAM_MEMORY "2MB")
    afr_set_board_metadata(SUPPORTED_IDE "E2Studio")
    afr_set_board_metadata(RECOMMENDED_IDE "E2Studio")
    afr_set_board_metadata(IDE_E2Studio_NAME "e2 studio")
    afr_set_board_metadata(IDE_E2Studio_COMPILER "CCRX")
    afr_set_board_metadata(KEY_IMPORT_PROVISIONING "TRUE")
    
    afr_set_board_metadata(IDE_E2Studio_PROJECT_LOCATION "${AFR_ROOT_DIR}/projects/renesas/rx65n-rsk/e2studio/aws_demos")
    afr_set_board_metadata(AWS_DEMOS_CONFIG_FILES_LOCATION "${CMAKE_CURRENT_LIST_DIR}/aws_demos/config_files")
    
    
    # -------------------------------------------------------------------------------------------------
    # Compiler settings
    # -------------------------------------------------------------------------------------------------
    afr_mcu_port(compiler)
    
    set(compiler_flags
        -isa=rxv2
        -branch=32
        -preinclude=${renesas_amazon_freertos_compiler_support_dir}/implicitlyinclude.h
        -lang=c99
        -nomessage=21644,20010,23034,23035,20177,23033
        -debug -g_line
        #-type_size_access_to_volatile
        -goptimize
    )
    
    target_compile_definitions(
        afr_3rdparty_mbedtls
        PUBLIC
            MBEDTLS_CONFIG_FILE=<aws_mbedtls_config.h$<ANGLE-R>
            CONFIG_MEDTLS_USE_AFR_MEMORY
    )
    
    target_include_directories(
        afr_3rdparty_mbedtls
        PUBLIC
            "${renesas_dir}/amazon_freertos_common/compiler_support/ccrx"
    )
    
    # Compiler flags.
    target_compile_options(
        AFR::compiler::mcu_port
        INTERFACE
            $<$<COMPILE_LANGUAGE:C>:${compiler_flags}>
    )
    
    set(assembler_flags
        -isa=rxv2
        -debug
        -goptimize
    )
    
    # Assembler flags
    target_compile_options(
        AFR::compiler::mcu_port
        INTERFACE
            $<$<COMPILE_LANGUAGE:ASM>:${assembler_flags}>
    )
    
    set(library_generator_flags
        -head=runtime,ctype,math,mathf,stdarg,stdio,stdlib,string,new,fenv,inttypes,wchar,wctype
    )
    
    # Library Generator flags
    target_library_generate_options(
        AFR::compiler::mcu_port
        INTERFACE
            ${library_generator_flags}
    )
    
    set(linker_flags
        -cpu=RAM=00000000-0003ffff,FIX=00080000-00083fff,FIX=00086000-00087fff,FIX=00088000-0009ffff,FIX=000a0000-000a3fff,RAM=000a4000-000a5fff,FIX=000a6000-000bffff,FIX=000c0000-000dffff,FIX=000e0000-000fffff,ROM=00100000-00107fff,FIX=007fc000-007fcfff,FIX=007fe000-007fffff,RAM=00800000-0085ffff,RAM=fe7f5d00-fe7f5d7f,RAM=fe7f7d70-fe7f7d9f,ROM=ffe00000-ffffffff
        -start=SU,SI,R_1,R_2,R,RPFRAM2/04,C_BOOTLOADER_KEY_STORAGE*/0100000,C_PKCS11_STORAGE*/0100800,C_SYSTEM_CONFIG*/0104800,B_ETHERNET_BUFFERS_1,B_RX_DESC_1,B_TX_DESC_1,B,B_1,B_2/0800000,C_1,C_2,C,C$*,D*,W*,L,P*/0FFF00300,EXCEPTVECT/0FFFFFF80,RESETVECT/0FFFFFFFC
        -rom=D=R,D_1=R_1,D_2=R_2,PFRAM2=RPFRAM2
        -vect=_undefined_interrupt_source_isr
        -list -show=all -total_size
        -debug
        -optimize=branch,symbol_delete
        -nomessage=1010,1320,0004,0101
    )
    
    # Linker flags
    target_link_options(
        AFR::compiler::mcu_port
        INTERFACE
            ${linker_flags}
    )
    
    # -------------------------------------------------------------------------------------------------
    # FreeRTOS portable layers
    # -------------------------------------------------------------------------------------------------
    
    # Kernel
    afr_mcu_port(kernel)
    target_sources(
        AFR::kernel::mcu_port
        INTERFACE
            "${AFR_KERNEL_DIR}/portable/MemMang/heap_4.c"
            "${AFR_KERNEL_DIR}/portable/Renesas/RX600v2/port.c"
            "${AFR_KERNEL_DIR}/portable/Renesas/RX600v2/portmacro.h"
            "${AFR_KERNEL_DIR}/portable/Renesas/RX600v2/port_asm.src"
    )
    
    set(kernel_inc_dirs
        "${rx65nrsk_aws_dir}/config_files"
        "${rx65nrsk_aws_dir}/src/smc_gen/r_config"
        "${rx65nrsk_aws_dir}/src/smc_gen/r_pincfg"
        "${rx_driver_package_dir}/r_bsp"
        "${rx_driver_package_dir}/r_bsp/board/generic_rx65n"
        "${renesas_amazon_freertos_common_dir}"
        "${AFR_KERNEL_DIR}/portable/Renesas/RX600v2"
        "$<IF:${AFR_IS_TESTING},${AFR_TESTS_DIR},${AFR_DEMOS_DIR}>/include"
    )
    
    target_include_directories(
        AFR::kernel::mcu_port
        INTERFACE $<$<NOT:$<COMPILE_LANGUAGE:ASM>>:${kernel_inc_dirs}>
    )
    
    # FreeRTOS Plus TCP
    afr_mcu_port(freertos_plus_tcp)
    target_sources(
        AFR::freertos_plus_tcp::mcu_port
        INTERFACE
            "${AFR_MODULES_FREERTOS_PLUS_DIR}/standard/freertos_plus_tcp/portable/BufferManagement/BufferAllocation_2.c"
            "${AFR_MODULES_FREERTOS_PLUS_DIR}/standard/freertos_plus_tcp/portable/NetworkInterface/RX/ether_callback.c"
            "${AFR_MODULES_FREERTOS_PLUS_DIR}/standard/freertos_plus_tcp/portable/NetworkInterface/RX/NetworkInterface.c"
            # Header files added to the target so that these are available in code downloaded from the FreeRTOS console.
            "${AFR_MODULES_FREERTOS_PLUS_DIR}/standard/freertos_plus_tcp/portable/Compiler/Renesas/pack_struct_end.h"
            "${AFR_MODULES_FREERTOS_PLUS_DIR}/standard/freertos_plus_tcp/portable/Compiler/Renesas/pack_struct_start.h"
    )
    
    target_include_directories(
        AFR::freertos_plus_tcp::mcu_port
        INTERFACE
            "${AFR_MODULES_FREERTOS_PLUS_DIR}/standard/freertos_plus_tcp/portable/Compiler/Renesas"
            "${AFR_MODULES_FREERTOS_PLUS_DIR}/standard/freertos_plus_tcp/include"
            "${rx_driver_package_dir}/r_ether_rx"
    )
    
    # PKCS11
    afr_mcu_port(pkcs11_implementation)
    target_sources(
        AFR::pkcs11_implementation::mcu_port
        INTERFACE
            "${rx65nrsk_ports_dir}/pkcs11/core_pkcs11_pal.c"
    )
    
    target_include_directories(
        AFR::pkcs11_implementation::mcu_port
        INTERFACE
            "${rx_driver_package_dir}/r_flash_rx"
            "${rx_driver_package_dir}/r_flash_rx/src"
            "${rx_driver_package_dir}/r_flash_rx/src/flash_type_4"
            "${rx_driver_package_dir}/r_flash_rx/src/targets"
    )
    
    target_link_libraries(
        AFR::pkcs11_implementation::mcu_port
        INTERFACE
            3rdparty::mbedtls
            AFR::pkcs11_mbedtls
    )
    
    # Secure sockets
    afr_mcu_port(secure_sockets)
    target_link_libraries(
        AFR::secure_sockets::mcu_port
        INTERFACE AFR::secure_sockets_freertos_plus_tcp
    )
    
    # Over-the-air Updates
    afr_mcu_port(ota)
    target_sources(
        AFR::ota::mcu_port
        INTERFACE
            "${rx65nrsk_ports_dir}/ota_pal_for_aws/ota_pal.c"
            "${rx65nrsk_ports_dir}/ota_pal_for_aws/ota_pal.h"
    )
    
    target_include_directories(
        AFR::ota::mcu_port
        INTERFACE
            "${rx65nrsk_ports_dir}/ota_pal_for_aws"
            "${rx_driver_package_dir}/r_flash_rx"
            "${rx_driver_package_dir}/r_flash_rx/src"
            "${rx_driver_package_dir}/r_flash_rx/src/flash_type_4"
            "${rx_driver_package_dir}/r_flash_rx/src/targets"
    )
    
    target_link_libraries(
        AFR::ota::mcu_port
        INTERFACE
            AFR::crypto
            AFR::ota
            AFR::pkcs11
    )
    
    if(AFR_ENABLE_TESTS)
        target_include_directories(
            AFR::ota::mcu_port
            INTERFACE "${PROJECT_SOURCE_DIR}/tests/integration_test/ota_pal"
        )
    endif()
    
    # -------------------------------------------------------------------------------------------------
    # FreeRTOS demos and tests
    # -------------------------------------------------------------------------------------------------
    
    afr_glob_src(renesas_amazon_freertos_common_src DIRECTORY "${renesas_amazon_freertos_common_dir}")
    afr_glob_src(renesas_amazon_freertos_compiler_support_src DIRECTORY "${renesas_amazon_freertos_compiler_support_dir}")
    afr_glob_src(renesas_amazon_freertos_network_support_src DIRECTORY "${renesas_amazon_freertos_network_support_dir}")
    
    set(renesas_afr_common_src
            ${renesas_amazon_freertos_common_src}
            ${renesas_amazon_freertos_compiler_support_src}
            ${renesas_amazon_freertos_network_support_src}
    )
    
    set(renesas_afr_common_include
        "${renesas_amazon_freertos_common_dir}"
        "${renesas_amazon_freertos_compiler_support_dir}"
        "${renesas_amazon_freertos_network_support_dir}"
    )
    
    # It is better to avoid using `RECURSE` for `rx_driver_package_dir` because this folder contains source files
    # which are not necessary for RX65N's target and flash type.
    afr_glob_src(rbsp_board_genericrx65n_src DIRECTORY "${rx_driver_package_dir}/r_bsp/board/generic_rx65n")
    afr_glob_src(rbsp_mcu_all_src DIRECTORY "${rx_driver_package_dir}/r_bsp/mcu/all")
    afr_glob_src(rbsp_mcu_rx65n_src DIRECTORY "${rx_driver_package_dir}/r_bsp/mcu/rx65n")
    
    # r_cmt_rx, r_riic_rx, r_sci_iic_rx are excluded
    afr_glob_src(rbyteq_src DIRECTORY "${rx_driver_package_dir}/r_byteq/src")
    afr_glob_src(retherrx_src DIRECTORY "${rx_driver_package_dir}/r_ether_rx/src")
    afr_glob_src(retherrx_phy_src DIRECTORY "${rx_driver_package_dir}/r_ether_rx/src/phy")
    afr_glob_src(retherrx_target_src DIRECTORY "${rx_driver_package_dir}/r_ether_rx/src/targets/rx65n")
    afr_glob_src(rflashrx_src DIRECTORY "${rx_driver_package_dir}/r_flash_rx/src")
    afr_glob_src(rflashrx_flashtype_src DIRECTORY "${rx_driver_package_dir}/r_flash_rx/src/flash_type_4")
    afr_glob_src(rs12adrx_src DIRECTORY "${rx_driver_package_dir}/r_s12ad_rx/src")
    afr_glob_src(rs12adrx_target_src DIRECTORY "${rx_driver_package_dir}/r_s12ad_rx/src/targets/rx65n")
    afr_glob_src(rscirx_src DIRECTORY "${rx_driver_package_dir}/r_sci_rx/src")
    afr_glob_src(rscirx_target_src DIRECTORY "${rx_driver_package_dir}/r_sci_rx/src/targets/rx65n")
    
    # resetprg.c should be linked at the top of objects and libraries to get the best symbol deletion optimization result.
    set(rbsp_link_first_src
        "${rx_driver_package_dir}/r_bsp/mcu/all/resetprg.c"
    )
    
    set(rx_driver_package_src
        ${rbsp_board_genericrx65n_src}
        ${rbsp_mcu_all_src}
        ${rbsp_mcu_rx65n_src}
        ${rbyteq_src}
        ${retherrx_src}
        ${retherrx_phy_src}
        ${retherrx_target_src}
        ${rflashrx_src}
        ${rflashrx_flashtype_src}
        ${rs12adrx_src}
        ${rs12adrx_target_src}
        ${rscirx_src}
        ${rscirx_target_src}
    )
    
    set(rx_driver_package_include
        "${rx_driver_package_dir}/r_bsp"
        "${rx_driver_package_dir}/r_bsp/board/generic_rx65n"
        "${rx_driver_package_dir}/r_ether_rx"
        "${rx_driver_package_dir}/r_flash_rx"
        "${rx_driver_package_dir}/r_flash_rx/src"
        "${rx_driver_package_dir}/r_flash_rx/src/flash_type_4"
        "${rx_driver_package_dir}/r_flash_rx/src/targets"
        "${rx_driver_package_dir}/r_byteq"
        "${rx_driver_package_dir}/r_byteq/src"
        "${rx_driver_package_dir}/r_sci_rx"
        "${rx_driver_package_dir}/r_sci_rx/src"
        "${rx_driver_package_dir}/r_s12ad_rx"
        "${rx_driver_package_dir}/r_s12ad_rx/src"
        "${rx_driver_package_dir}/r_s12ad_rx/src/targets/rx65n"
    )
    
    # It is not worse to use `RECURSE` for `smc_gen` folder because this folder contains source files
    # which are necessary for RX65N's target and flash type.
    afr_glob_src(smc_gen_src DIRECTORY "${rx65nrsk_aws_dir}/src/smc_gen" RECURSE)
    
    set(smc_gen_include
        "${rx65nrsk_aws_dir}/src/smc_gen/r_config"
        "${rx65nrsk_aws_dir}/src/smc_gen/r_pincfg"
        "${rx65nrsk_aws_dir}/src/smc_gen/general"
    )
    
    afr_glob_src(board_code_src DIRECTORY "${rx65nrsk_aws_dir}/application_code/renesas_code")
    afr_glob_src(config_files_src DIRECTORY "${rx65nrsk_aws_dir}/config_files")
    
    # Do not add demos or tests if they're turned off.
    if(AFR_ENABLE_DEMOS OR AFR_ENABLE_TESTS)
        add_executable(${exe_target}
            ${rbsp_link_first_src}
            ${renesas_afr_common_src}
            ${rx_driver_package_src}
            ${smc_gen_src}
            ${board_code_src}
            ${config_files_src}
            "${rx65nrsk_aws_dir}/application_code/main.c"
            "${rx65nrsk_aws_dir}/application_code/renesas_code/utility/r_simple_filesystem_on_dataflash.c"
        )
        target_include_directories(
            ${exe_target}
            PRIVATE 
                ${renesas_afr_common_include}
                ${rx_driver_package_include}
                ${smc_gen_include}
                "${rx65nrsk_aws_dir}/application_code/renesas_code/utility"
        )
        target_link_libraries(
            ${exe_target}
            PRIVATE
                AFR::freertos_plus_tcp
                AFR::utils
        )
    endif()
    

     
    以下、画面コピーです。(無償評価版で試している都合で、サイズ制限によりリンクエラーになりますので、そこまで、です。)

    Ninjaの場合:


    Unix Makefilesの場合:

     

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

    FreeRTOS with IoT librariesのamazon-freertos-202107.00-rx-1.0.1でCMakeでリンクの最後までは辿り着くようにパッチを当てたファイルを以下のzipファイルに固めました。(CC-RX V3.04の無償評価版で試している都合で、サイズ制限によりリンクエラーになりますので、そこまで、ですけれども。動くかどうかはやってみないと、、、です。) (Azure RTOSの方は、後回しになってしまいましたけれども、これからです。)

    Renesas_GitHub_FreeRTOS_202107_101_20220609.zip    次の投稿の件で差し替えました
    Renesas_GitHub_FreeRTOS_202107_101_20220610.zip    次の次の投稿の件で差し替えました
    Renesas_GitHub_FreeRTOS_202107_101_20220611.zip

    org/amazon-freertos-202107.00-rx-1.0.1/CMakeLists.txt
    org/amazon-freertos-202107.00-rx-1.0.1/tools/cmake/toolchains/cc-rx.cmake
    org/amazon-freertos-202107.00-rx-1.0.1/tools/cmake/toolchains/find_compiler.cmake
    org/amazon-freertos-202107.00-rx-1.0.1/vendors/renesas/amazon_freertos_common/entropy_hardware_poll.c
    org/amazon-freertos-202107.00-rx-1.0.1/vendors/renesas/boards/rx65n-rsk/CMakeLists.txt
    org/amazon-freertos-202107.00-rx-1.0.1/vendors/renesas/boards/rx65n-rsk/ports/pkcs11/core_pkcs11_pal.c
    patch/amazon-freertos-202107.00-rx-1.0.1/CMakeLists.txt
    patch/amazon-freertos-202107.00-rx-1.0.1/r_build.bat ← build用バッチファイル(絶対パスを含みません)
    patch/amazon-freertos-202107.00-rx-1.0.1/r_configure.bat ← configure用バッチファイル(絶対パスを含みます(要修正))
    patch/amazon-freertos-202107.00-rx-1.0.1/tools/cmake/cmake-3.23.1-patch/...略...
    (中身はCMake_Ninja_XXSC_CCXX_examples_20220606.zipのものと同一)
    ...略...
    patch/amazon-freertos-202107.00-rx-1.0.1/tools/cmake/toolchains/cc-rx.cmake
    patch/amazon-freertos-202107.00-rx-1.0.1/tools/cmake/toolchains/find_compiler.cmake
    patch/amazon-freertos-202107.00-rx-1.0.1/vendors/renesas/amazon_freertos_common/entropy_hardware_poll.c
    patch/amazon-freertos-202107.00-rx-1.0.1/vendors/renesas/boards/rx65n-rsk/CMakeLists.txt
    patch/amazon-freertos-202107.00-rx-1.0.1/vendors/renesas/boards/rx65n-rsk/ports/pkcs11/core_pkcs11_pal.c


    以下、CC-RXとRSK-RX65N 2MBの場合のToolchainファイルとCMakeLists.txtです。

    tools/cmake/toolchains/cc-rx.cmake

    cc-rx.cmake.20220609.txt
    set(CMAKE_MODULE_PATH "${CMAKE_CURRENT_LIST_DIR}/../cmake-3.23.1-patch/Modules")
    
    include("${CMAKE_CURRENT_LIST_DIR}/find_compiler.cmake")
    
    set(CMAKE_SYSTEM_NAME Generic)
    
    # Find Renesas CC-RX.
    afr_find_compiler(AFR_COMPILER_CC ccrx)
    afr_find_compiler(AFR_COMPILER_CXX ccrx)
    afr_find_compiler(AFR_COMPILER_ASM asrx)
    afr_find_external_toolchain(AFR_RENESAS_XCONVERTER renesas_cc_converter)
    
    # Specify the cross compiler.
    set(CMAKE_C_COMPILER ${AFR_COMPILER_CC} CACHE FILEPATH "C compiler")
    set(CMAKE_CXX_COMPILER ${AFR_COMPILER_CXX} CACHE FILEPATH "C++ compiler")
    set(CMAKE_ASM_COMPILER ${AFR_COMPILER_ASM} CACHE FILEPATH "ASM compiler")
    set(CMAKE_RENESAS_XCONVERTER ${AFR_RENESAS_XCONVERTER} CACHE FILEPATH "Renesas X Converter")
    
    # Add target system root to cmake find path.
    get_filename_component(AFR_COMPILER_DIR "${AFR_COMPILER_CC}" DIRECTORY)
    get_filename_component(CMAKE_FIND_ROOT_PATH "${AFR_COMPILER_DIR}" DIRECTORY)
    
    # Don't look for executable in target system prefix.
    set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
    
    # Look for includes and libraries only in the target system prefix.
    set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
    set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
    

     
    vendors/renesas/boards/rx65n-rsk/CMakeLists.txt
    CMakeLists.txt.20220611.txt
    # Set variables.
    set(renesas_dir "${AFR_VENDORS_DIR}/renesas")
    set(renesas_amazon_freertos_common_dir "${renesas_dir}/amazon_freertos_common")
    set(renesas_amazon_freertos_compiler_support_dir "${renesas_amazon_freertos_common_dir}/compiler_support/ccrx")
    set(renesas_amazon_freertos_network_support_dir "${renesas_amazon_freertos_common_dir}/network_support/onchip_rx_ether")
    set(rx_driver_package_dir "${renesas_dir}/rx_driver_package/v133")
    set(rx65nrsk_dir "${renesas_dir}/boards/rx65n-rsk")
    set(rx65nrsk_ports_dir "${rx65nrsk_dir}/ports")
    
    if(AFR_IS_TESTING)
        set(rx65nrsk_aws_dir "${rx65nrsk_dir}/aws_tests")
        set(exe_target aws_tests)
    else()
        set(rx65nrsk_aws_dir "${rx65nrsk_dir}/aws_demos")
        set(exe_target aws_demos)
    endif()
    
    # -------------------------------------------------------------------------------------------------
    # FreeRTOS Console metadata
    # -------------------------------------------------------------------------------------------------
    
    afr_set_board_metadata(ID "Renesas-RX65N-RSK")
    afr_set_board_metadata(DISPLAY_NAME "Renesas Starter Kit+ for RX65N-2MB")
    afr_set_board_metadata(DESCRIPTION "The Renesas Starter Kit+ for RX65N-2MB connects to AWS IoT Cloud using Ethernet")
    afr_set_board_metadata(VENDOR_NAME "Renesas")
    afr_set_board_metadata(FAMILY_NAME "RX65N")
    afr_set_board_metadata(IS_ACTIVE "TRUE")
    afr_set_board_metadata(CODE_SIGNER "AmazonFreeRTOS-Default")
    afr_set_board_metadata(DATA_RAM_MEMORY "640KB")
    afr_set_board_metadata(PROGRAM_MEMORY "2MB")
    afr_set_board_metadata(SUPPORTED_IDE "E2Studio")
    afr_set_board_metadata(RECOMMENDED_IDE "E2Studio")
    afr_set_board_metadata(IDE_E2Studio_NAME "e2 studio")
    afr_set_board_metadata(IDE_E2Studio_COMPILER "CCRX")
    afr_set_board_metadata(KEY_IMPORT_PROVISIONING "TRUE")
    
    afr_set_board_metadata(IDE_E2Studio_PROJECT_LOCATION "${AFR_ROOT_DIR}/projects/renesas/rx65n-rsk/e2studio/aws_demos")
    afr_set_board_metadata(AWS_DEMOS_CONFIG_FILES_LOCATION "${CMAKE_CURRENT_LIST_DIR}/aws_demos/config_files")
    
    
    # -------------------------------------------------------------------------------------------------
    # Compiler settings
    # -------------------------------------------------------------------------------------------------
    afr_mcu_port(compiler)
    
    set(compiler_flags
        -isa=rxv2
        -branch=32
        -preinclude=${renesas_amazon_freertos_compiler_support_dir}/implicitlyinclude.h
        -lang=c99
        -nomessage=21644,20010,23034,23035,20177,23033
        -debug -g_line
        #-type_size_access_to_volatile
        -goptimize
    )
    
    target_compile_definitions(
        afr_3rdparty_mbedtls
        PUBLIC
            MBEDTLS_CONFIG_FILE=<aws_mbedtls_config.h$<ANGLE-R>
            CONFIG_MEDTLS_USE_AFR_MEMORY
    )
    
    target_include_directories(
        afr_3rdparty_mbedtls
        PUBLIC
            "${renesas_dir}/amazon_freertos_common/compiler_support/ccrx"
    )
    
    # Compiler flags.
    target_compile_options(
        AFR::compiler::mcu_port
        INTERFACE
            $<$<COMPILE_LANGUAGE:C>:${compiler_flags}>
    )
    
    set(assembler_flags
        -isa=rxv2
        -debug
        -goptimize
    )
    
    # Assembler flags
    target_compile_options(
        AFR::compiler::mcu_port
        INTERFACE
            $<$<COMPILE_LANGUAGE:ASM>:${assembler_flags}>
    )
    
    set(library_generator_flags
        -head=runtime,ctype,math,mathf,stdarg,stdio,stdlib,string,new,fenv,inttypes,wchar,wctype
    )
    
    # Library Generator flags
    target_library_generate_options(
        AFR::compiler::mcu_port
        INTERFACE
            ${library_generator_flags}
    )
    
    set(linker_flags
        -cpu=RAM=00000000-0003ffff,FIX=00080000-00083fff,FIX=00086000-00087fff,FIX=00088000-0009ffff,FIX=000a0000-000a3fff,RAM=000a4000-000a5fff,FIX=000a6000-000bffff,FIX=000c0000-000dffff,FIX=000e0000-000fffff,ROM=00100000-00107fff,FIX=007fc000-007fcfff,FIX=007fe000-007fffff,RAM=00800000-0085ffff,RAM=fe7f5d00-fe7f5d7f,RAM=fe7f7d70-fe7f7d9f,ROM=ffe00000-ffffffff
        -start=SU,SI,R_1,R_2,R,RPFRAM2/04,C_BOOTLOADER_KEY_STORAGE*/0100000,C_PKCS11_STORAGE*/0100800,C_SYSTEM_CONFIG*/0104800,B_ETHERNET_BUFFERS_1,B_RX_DESC_1,B_TX_DESC_1,B,B_1,B_2/0800000,C_1,C_2,C,C$*,D*,W*,L,P*/0FFF00300,EXCEPTVECT/0FFFFFF80,RESETVECT/0FFFFFFFC
        -rom=D=R,D_1=R_1,D_2=R_2,PFRAM2=RPFRAM2
        -vect=_undefined_interrupt_source_isr
        -list -show=all -total_size
        -debug
        -optimize=branch,symbol_delete
        -nomessage=1010,1320,0004,0101
    )
    
    # Linker flags
    target_link_options(
        AFR::compiler::mcu_port
        INTERFACE
            ${linker_flags}
    )
    
    # -------------------------------------------------------------------------------------------------
    # FreeRTOS portable layers
    # -------------------------------------------------------------------------------------------------
    
    # Kernel
    afr_mcu_port(kernel)
    target_sources(
        AFR::kernel::mcu_port
        INTERFACE
            "${AFR_KERNEL_DIR}/portable/MemMang/heap_4.c"
            "${AFR_KERNEL_DIR}/portable/Renesas/RX600v2/port.c"
            "${AFR_KERNEL_DIR}/portable/Renesas/RX600v2/portmacro.h"
            "${AFR_KERNEL_DIR}/portable/Renesas/RX600v2/port_asm.src"
    )
    
    set(kernel_inc_dirs
        "${rx65nrsk_aws_dir}/config_files"
        "${rx65nrsk_aws_dir}/src/smc_gen/r_config"
        "${rx65nrsk_aws_dir}/src/smc_gen/r_pincfg"
        "${rx_driver_package_dir}/r_bsp"
        "${rx_driver_package_dir}/r_bsp/board/generic_rx65n"
        "${renesas_amazon_freertos_common_dir}"
        "${AFR_KERNEL_DIR}/portable/Renesas/RX600v2"
        "$<IF:${AFR_IS_TESTING},${AFR_TESTS_DIR},${AFR_DEMOS_DIR}>/include"
    )
    
    target_include_directories(
        AFR::kernel::mcu_port
        INTERFACE $<$<NOT:$<COMPILE_LANGUAGE:ASM>>:${kernel_inc_dirs}>
    )
    
    # FreeRTOS Plus TCP
    afr_mcu_port(freertos_plus_tcp)
    target_sources(
        AFR::freertos_plus_tcp::mcu_port
        INTERFACE
            "${AFR_MODULES_FREERTOS_PLUS_DIR}/standard/freertos_plus_tcp/portable/BufferManagement/BufferAllocation_2.c"
            "${AFR_MODULES_FREERTOS_PLUS_DIR}/standard/freertos_plus_tcp/portable/NetworkInterface/RX/ether_callback.c"
            "${AFR_MODULES_FREERTOS_PLUS_DIR}/standard/freertos_plus_tcp/portable/NetworkInterface/RX/NetworkInterface.c"
            # Header files added to the target so that these are available in code downloaded from the FreeRTOS console.
            "${AFR_MODULES_FREERTOS_PLUS_DIR}/standard/freertos_plus_tcp/portable/Compiler/Renesas/pack_struct_end.h"
            "${AFR_MODULES_FREERTOS_PLUS_DIR}/standard/freertos_plus_tcp/portable/Compiler/Renesas/pack_struct_start.h"
    )
    
    target_include_directories(
        AFR::freertos_plus_tcp::mcu_port
        INTERFACE
            "${AFR_MODULES_FREERTOS_PLUS_DIR}/standard/freertos_plus_tcp/portable/Compiler/Renesas"
            "${AFR_MODULES_FREERTOS_PLUS_DIR}/standard/freertos_plus_tcp/include"
            "${rx_driver_package_dir}/r_ether_rx"
    )
    
    # PKCS11
    afr_mcu_port(pkcs11_implementation)
    target_sources(
        AFR::pkcs11_implementation::mcu_port
        INTERFACE
            "${rx65nrsk_ports_dir}/pkcs11/core_pkcs11_pal.c"
    )
    
    target_include_directories(
        AFR::pkcs11_implementation::mcu_port
        INTERFACE
            "${rx_driver_package_dir}/r_flash_rx"
            "${rx_driver_package_dir}/r_flash_rx/src"
            "${rx_driver_package_dir}/r_flash_rx/src/flash_type_4"
            "${rx_driver_package_dir}/r_flash_rx/src/targets"
    )
    
    target_link_libraries(
        AFR::pkcs11_implementation::mcu_port
        INTERFACE
            3rdparty::mbedtls
            AFR::pkcs11_mbedtls
    )
    
    # Secure sockets
    afr_mcu_port(secure_sockets)
    target_link_libraries(
        AFR::secure_sockets::mcu_port
        INTERFACE AFR::secure_sockets_freertos_plus_tcp
    )
    
    # Over-the-air Updates
    afr_mcu_port(ota)
    target_sources(
        AFR::ota::mcu_port
        INTERFACE
            "${rx65nrsk_ports_dir}/ota_pal_for_aws/ota_pal.c"
            "${rx65nrsk_ports_dir}/ota_pal_for_aws/ota_pal.h"
    )
    
    target_include_directories(
        AFR::ota::mcu_port
        INTERFACE
            "${rx65nrsk_ports_dir}/ota_pal_for_aws"
            "${rx_driver_package_dir}/r_flash_rx"
            "${rx_driver_package_dir}/r_flash_rx/src"
            "${rx_driver_package_dir}/r_flash_rx/src/flash_type_4"
            "${rx_driver_package_dir}/r_flash_rx/src/targets"
    )
    
    target_link_libraries(
        AFR::ota::mcu_port
        INTERFACE
            AFR::crypto
            AFR::ota
            AFR::pkcs11
    )
    
    if(AFR_ENABLE_TESTS)
        target_include_directories(
            AFR::ota::mcu_port
            INTERFACE "${PROJECT_SOURCE_DIR}/tests/integration_test/ota_pal"
        )
    endif()
    
    # -------------------------------------------------------------------------------------------------
    # FreeRTOS demos and tests
    # -------------------------------------------------------------------------------------------------
    
    afr_glob_src(renesas_amazon_freertos_common_src DIRECTORY "${renesas_amazon_freertos_common_dir}")
    afr_glob_src(renesas_amazon_freertos_compiler_support_src DIRECTORY "${renesas_amazon_freertos_compiler_support_dir}")
    afr_glob_src(renesas_amazon_freertos_network_support_src DIRECTORY "${renesas_amazon_freertos_network_support_dir}")
    
    set(renesas_afr_common_src
            ${renesas_amazon_freertos_common_src}
            ${renesas_amazon_freertos_compiler_support_src}
            ${renesas_amazon_freertos_network_support_src}
    )
    
    set(renesas_afr_common_include
        "${renesas_amazon_freertos_common_dir}"
        "${renesas_amazon_freertos_compiler_support_dir}"
        "${renesas_amazon_freertos_network_support_dir}"
    )
    
    # It is better to avoid using `RECURSE` for `rx_driver_package_dir` because this folder contains source files
    # which are not necessary for RX65N's target and flash type.
    afr_glob_src(rbsp_board_genericrx65n_src DIRECTORY "${rx_driver_package_dir}/r_bsp/board/generic_rx65n")
    afr_glob_src(rbsp_mcu_all_src DIRECTORY "${rx_driver_package_dir}/r_bsp/mcu/all")
    afr_glob_src(rbsp_mcu_rx65n_src DIRECTORY "${rx_driver_package_dir}/r_bsp/mcu/rx65n")
    
    # r_cmt_rx, r_riic_rx, r_sci_iic_rx are excluded
    afr_glob_src(rbyteq_src DIRECTORY "${rx_driver_package_dir}/r_byteq/src")
    afr_glob_src(retherrx_src DIRECTORY "${rx_driver_package_dir}/r_ether_rx/src")
    afr_glob_src(retherrx_phy_src DIRECTORY "${rx_driver_package_dir}/r_ether_rx/src/phy")
    afr_glob_src(retherrx_target_src DIRECTORY "${rx_driver_package_dir}/r_ether_rx/src/targets/rx65n")
    afr_glob_src(rflashrx_src DIRECTORY "${rx_driver_package_dir}/r_flash_rx/src")
    afr_glob_src(rflashrx_flashtype_src DIRECTORY "${rx_driver_package_dir}/r_flash_rx/src/flash_type_4")
    afr_glob_src(rs12adrx_src DIRECTORY "${rx_driver_package_dir}/r_s12ad_rx/src")
    afr_glob_src(rs12adrx_target_src DIRECTORY "${rx_driver_package_dir}/r_s12ad_rx/src/targets/rx65n")
    afr_glob_src(rscirx_src DIRECTORY "${rx_driver_package_dir}/r_sci_rx/src")
    afr_glob_src(rscirx_target_src DIRECTORY "${rx_driver_package_dir}/r_sci_rx/src/targets/rx65n")
    
    # resetprg.c should be linked at the top of objects and libraries to get the best symbol deletion optimization result.
    set(rbsp_link_first_src
        "${rx_driver_package_dir}/r_bsp/mcu/all/resetprg.c"
    )
    
    set(rx_driver_package_src
        ${rbsp_board_genericrx65n_src}
        ${rbsp_mcu_all_src}
        ${rbsp_mcu_rx65n_src}
        ${rbyteq_src}
        ${retherrx_src}
        ${retherrx_phy_src}
        ${retherrx_target_src}
        ${rflashrx_src}
        ${rflashrx_flashtype_src}
        ${rs12adrx_src}
        ${rs12adrx_target_src}
        ${rscirx_src}
        ${rscirx_target_src}
    )
    
    set(rx_driver_package_include
        "${rx_driver_package_dir}/r_bsp"
        "${rx_driver_package_dir}/r_bsp/board/generic_rx65n"
        "${rx_driver_package_dir}/r_ether_rx"
        "${rx_driver_package_dir}/r_flash_rx"
        "${rx_driver_package_dir}/r_flash_rx/src"
        "${rx_driver_package_dir}/r_flash_rx/src/flash_type_4"
        "${rx_driver_package_dir}/r_flash_rx/src/targets"
        "${rx_driver_package_dir}/r_byteq"
        "${rx_driver_package_dir}/r_byteq/src"
        "${rx_driver_package_dir}/r_sci_rx"
        "${rx_driver_package_dir}/r_sci_rx/src"
        "${rx_driver_package_dir}/r_s12ad_rx"
        "${rx_driver_package_dir}/r_s12ad_rx/src"
        "${rx_driver_package_dir}/r_s12ad_rx/src/targets/rx65n"
    )
    
    # It is not worse to use `RECURSE` for `smc_gen` folder because this folder contains source files
    # which are necessary for RX65N's target and flash type.
    afr_glob_src(smc_gen_src DIRECTORY "${rx65nrsk_aws_dir}/src/smc_gen" RECURSE)
    
    set(smc_gen_include
        "${rx65nrsk_aws_dir}/src/smc_gen/r_config"
        "${rx65nrsk_aws_dir}/src/smc_gen/r_pincfg"
        "${rx65nrsk_aws_dir}/src/smc_gen/general"
    )
    
    afr_glob_src(board_code_src DIRECTORY "${rx65nrsk_aws_dir}/application_code/renesas_code")
    afr_glob_src(config_files_src DIRECTORY "${rx65nrsk_aws_dir}/config_files")
    
    # Do not add demos or tests if they're turned off.
    if(AFR_ENABLE_DEMOS OR AFR_ENABLE_TESTS)
        add_executable(${exe_target}
            ${rbsp_link_first_src}
            ${renesas_afr_common_src}
            ${rx_driver_package_src}
            ${smc_gen_src}
            ${board_code_src}
            ${config_files_src}
            "${rx65nrsk_aws_dir}/application_code/main.c"
            "${rx65nrsk_aws_dir}/application_code/renesas_code/utility/r_simple_filesystem_on_dataflash.c"
        )
        target_include_directories(
            ${exe_target}
            PRIVATE 
                ${renesas_afr_common_include}
                ${rx_driver_package_include}
                ${smc_gen_include}
                "${rx65nrsk_aws_dir}/application_code/renesas_code/utility"
        )
        target_link_libraries(
            ${exe_target}
            PRIVATE
                AFR::freertos_plus_tcp
                AFR::utils
        )
    endif()
    

     
    以下、画面コピーです。(無償評価版で試している都合で、サイズ制限によりリンクエラーになりますので、そこまで、です。)

    Ninjaの場合:


    Unix Makefilesの場合:

     

Children
No Data