Visual Studio 2022 Community EditionでRX MCUやRL78 MCUのSoftware Developmentが出来るか試してみようと思います

こんにちは。NoMaYです。

昨日Visual Studio 2022 Community Editionをインストールしたのですが、ゴソゴソと触っていたところ、以下のブログ記事に辿り付きました。ちょうど、別スレッドにてVSCodeでRX MCU/RL78 MCUのCC-RX/CC-RLを使っていてもプログラムのビルド/デバッグが出来るようになり始めたところですが(多分ですけどRH850のCC-RHでも出来そう)、どうやら、そちらでやっていたことと話が重なるようでした。ひょっとしたら、Visual Studio 2022でもVSCodeと同様にCC-RX/CC-RL(及びCC-RH)でもビルド/デバッグが出来るようになるかも知れない、という気がして来ました。そこで、これから試して行こうと思います。

なお、以下のブログ記事はVisual Studio 2017について書かれたものですが、Visual Studio 2022で試してみると同じようには出来ないようだ、ということまでは分かって来ました。ただ、Makefileでは無く、CMakeLists.txtであれば、出来るようになるかも知れない、という気がして来たところです。(まだ、気がする、程度ですけれど。)

ARM GCC Cross Compilation in Visual Studio
devblogs.microsoft.com/cppblog/arm-gcc-cross-compilation-in-visual-studio/

Debugging an embedded ARM device in Visual Studio
devblogs.microsoft.com/cppblog/debugging-an-embedded-arm-device-in-visual-studio/

[追記]

あぁっ、以下の記事のようにすればCMakeを使わなくてもやれるのかも、、、

Docs / Visual Studio / IDE / 開発 / プロジェクトやソリューションなしで開発する / ビルドのカスタマイズとタスクのデバッグ
"フォルダーを開く" の開発のためにビルド タスクとデバッグ タスクをカスタマイズする
docs.microsoft.com/visualstudio/ide/customize-build-and-debug-tasks-in-visual-studio?view=vs-2022
 

  • こんにちは。NoMaYです。

    今回、主に以下の対応をしてみました。ファイル一式を以下のzipファイルに固めました。

    (1) リンク時のエラー/ワーニング等がVisual Studio 2022のエラー一覧ウィンドウに表示されるようにした
    (2) コンパイル時のInformationメッセージがVisual Studio 2022のエラー一覧ウィンドウに表示されるようにした
    (2') もっとも、結局、Informationメッセージとして認識させることは出来なくて、ワーニングメッセージへと加工しました

    visualstudio2022_helper_files_rl78_20211213.zip
    visualstudio2022_helper_files_rx_20211213.zip

    以下、今回のやり方でのVisual Studio 2022の画面コピーです。



    なお、e2 studioやCS+では以下のように表示されるものです。



     

  • こんにちは。NoMaYです。

    Visual Studio 2022やVSCodeからCC-RXやCC-RLのヘルプを開きたい時に便利そうな小技のメモです。(たぶんe2 studioインストール時に一緒にインストール可能なCC-RXやCC-RLでも同じヘルプが含まれていると思うのですけれども未確認です。)

    CC-RXの場合の例

    hh.exe "C:\Renesas\CS+\CC\CC-RX\V3.03.00\Help\Compiler-CCRX.chm"

     
    CC-RLの場合の例

    hh.exe "C:\Renesas\CS+\CC\CC-RL\V1.10.00\Help\Compiler-CCRL.chm"

     

  • こんにちは。NoMaYです。

    今回、主に以下の対応をしてみました。ファイル一式を以下のzipファイルに固めました。

    (1) GNURXに対応させた
    (1') CC-RX版とファイルを共通にしたので以下の画面コピーのようにVisual Studio 2022上で“構成”を切り替えて下さい
    (1'') 併せてVisual Studio 2022上でIntelliSenseの設定も変更して下さい(ファイルを共通にしたことによる事情です)

    (2) Visual Studio 2022上からCC-RXのヘルプファイルを開くコンテキストメニューを追加した
    (2') なおGNURX時にもメニューが表示されてしまいますがGNURX時にはメニューを実行しても何も起きません

    visualstudio2022_helper_files_rx_20211222.zip

    Visual Studio MCU.elf ← 注: Visual Studio 2022にMCU向けプロジェクトだと判定させる小細工のダミーファイルです
    CppProperties.json
    .vs/c_cpp_intellisense_helper.h
    .vs/launch.vs.json
    .vs/tasks.vs.json
    .vs/VS setup for e2 studio.launch
    .vs/VS start and open this folder.launch
    .vs/.script/build.bat
    .vs/.script/build.ps1
    .vs/.script/exec.bat
    .vs/.script/gdb.bat
    .vs/.script/gdbserver.bat
    .vs/.script/gdb_custom_launch_setup.gdb
    .vs/.script/gdb_setup.gdb
    .vs/.script/inherit_environments.bat
    .vs/.script/update_properties_json.bat

     
    以下、今回のやり方でのVisual Studio 2022の画面コピーです。

    Visual Studio 2022上で“構成”を切り替えて下さい


    併せてVisual Studio 2022上でIntelliSenseの設定も変更して下さい


    以下、e2 studioやCC-RXの各種パス設定やプロジェクトの各種設定をまとめたCppProperties.jsonファイルの内容です。赤文字箇所がVS setup for e2 studio.launchの実行により更新されます。

    CppProperties.json

    CC-RX/GNURX用

    {
      // docs.microsoft.com/.../open-folder-projects-cpp
      // docs.microsoft.com/.../cppproperties-schema-reference
      "configurations": [
        {
          "name": "CC-RX",
          "includePath": [
            "${env.TCINSTALL}\\include\\**",
            "${env.PROJECT_ROOT}\\src\\**"
          ],
          "defines": [
          ],
          // docs.microsoft.com/.../std-specify-language-standard-version
          // Unfortunately MSVC cannot accept C99 standard.
          // "compilerSwitches": "/std:c99",
          "compilerSwitches": "/std:c11",
          "intelliSenseMode": "windows-msvc-x86",
          "forcedInclude": [
            ".\\.vs\\c_cpp_intellisense_helper.h"
          ],
          "inheritEnvironments": [
            "Renesas_R_CPUs"
          ]
        },
        {
          "name": "GNURX",
          "includePath": [
            "${env.PROJECT_ROOT}\\src\\**"
          ],
          "defines": [
          ],
          "compilers": {
            "c": {
              "path": "${env.TCINSTALL}\\bin\\rx-elf-gcc.exe",
              "standard": "gnu99",
              "args": "-mlittle-endian-data -misa=v3 -mdfpu"
            },
            "cpp": {
              "path": "${env.TCINSTALL}\\bin\\rx-elf-g++.exe",
              "standard": "gnu++17",
              "args": "-mlittle-endian-data -misa=v3 -mdfpu"
            }
          },
          "intelliSenseMode": "linux-gcc-x86",
          "inheritEnvironments": [
            "Renesas_R_CPUs"
          ]
        }
      ],
      "environments": [
        {
          // Do not edit the following line if you use 'VS setup for e2 studio.launch' program.
          "PROJECT_NAME": "!ProjectRootBaseName!",
          //
          // Do not edit the following two lines if you use 'VSCode setup for e2 studio.launch' program.
          "PROGRAM_NAME": "${env.PROJECT_NAME}",
          "PROGRAM_EXT": ".elf",
          //
          // Do not edit the following line if you use 'VS setup for e2 studio.launch' program.
          "E2STUDIO_WORKSPACE_FOLDER": "C:\\Renesas\\GitHubDesktop\\workspaces\\workspace_e2v202110",
          //
          "BUILD_CONFIG_RELEASE_NAME": "Release", // Reserved for future use.
          "BUILD_CONFIG_DEBUG_NAME": "HardwareDebug",
          //
          "DEBUG_CONFIG_HARDWAREDEBUG_NAME": "HardwareDebug",
          "DEBUG_CONFIG_HARDWAREDEBUG_LCFG": "${env.PROJECT_NAME} ${env.DEBUG_CONFIG_HARDWAREDEBUG_NAME}.launch",
          "DEBUG_CONFIG_HARDWAREDEBUG_SOPT": "",
          "DEBUG_CONFIG_SIMULATORDEBUG_NAME": "RenesasSimDebug",
          "DEBUG_CONFIG_SIMULATORDEBUG_LCFG": "${env.PROJECT_NAME} ${env.DEBUG_CONFIG_SIMULATORDEBUG_NAME}.launch",
          "DEBUG_CONFIG_SIMULATORDEBUG_SOPT": "",
          //
          "PROJECT_ROOT": "${projectRoot}.", // Note that this pre-defined dynamic macro ends with '\'.
          "MAKE_OPTIONS": "-r -j8 -k",
          //
          // Do not edit the following five lines if you use 'VS setup for e2 studio.launch' program.
          "ECLIPSE_HOME": "C:\\Renesas\\e2studio64_v202110\\eclipse",
          "SUPPORT_AREA": "C:\\Renesas\\e2studio64\\SupportFiles\\.eclipse\\com.renesas.platform_1643561029",
          "PYTHONHOME": "${env.ECLIPSE_HOME}\\runtimes\\python\\2.7.12_x86",
          "TCINSTALL": "C:\\Renesas\\GCCLLVM\\GNURX-ELF\\8.3.0.202104\\rx-elf\\rx-elf",
          "TC_NAME": "GNURX",
          //
          "environment": "Renesas_R_CPUs"
        }
      ]
    }

     

  • こんにちは。NoMaYです。

    今回、主に以下の対応をしてみました。ファイル一式を以下のzipファイルに固めました。(ファイルの合わせ込み/修正でRX版も更新しました。)

    (1) GNURL78とLLVM-RL78に対応させた
    (1') CC-RL版とファイルを共通にしたので以下の画面コピーのようにVisual Studio 2022上で“構成”を切り替えて下さい
    (1'') 併せてVisual Studio 2022上でIntelliSenseの設定も変更して下さい(ファイルを共通にしたことによる事情です)

    (2) Visual Studio 2022上からCC-RLのヘルプファイルを開くコンテキストメニューを追加した
    (2') なおGNURL78時やLLVM-RL78時にもメニューが表示されてしまいますが、これらではメニューを実行しても何も起きません

    visualstudio2022_helper_files_rl78_20211227.zip    14:30頃差し替えました
    visualstudio2022_helper_files_rx_20211227.zip    14:00頃差し替えました

    Visual Studio MCU.elf ← 注: Visual Studio 2022にMCU向けプロジェクトだと判定させる小細工のダミーファイルです
    CppProperties.json
    .vs/c_cpp_intellisense_helper.h
    .vs/launch.vs.json
    .vs/tasks.vs.json
    .vs/VS setup for e2 studio.launch
    .vs/VS start and open this folder.launch
    .vs/.script/build.bat
    .vs/.script/build.ps1
    .vs/.script/exec.bat
    .vs/.script/gdb.bat
    .vs/.script/gdbserver.bat
    .vs/.script/gdb_custom_launch_setup.gdb
    .vs/.script/gdb_setup.gdb
    .vs/.script/inherit_environments.bat
    .vs/.script/update_properties_json.bat

     
    以下、今回のやり方でのVisual Studio 2022の画面コピーです。

    Visual Studio 2022上で“構成”を切り替えて下さい


    併せてVisual Studio 2022上でIntelliSenseの設定も変更して下さい



    以下、e2 studioやCC-RLの各種パス設定やプロジェクトの各種設定をまとめたCppProperties.jsonファイルの内容です。赤文字箇所がVS setup for e2 studio.launchの実行により更新されます。

    CppProperties.json

    CC-RL/GNURL78/LLVM-RL78用

    {
      // docs.microsoft.com/.../open-folder-projects-cpp
      // docs.microsoft.com/.../cppproperties-schema-reference
      "configurations": [
        {
          "name": "CC-RL",
          "includePath": [
            "${env.TCINSTALL}\\inc\\**",
            "${env.PROJECT_ROOT}\\src\\**"
          ],
          "defines": [
          ],
          // docs.microsoft.com/.../std-specify-language-standard-version
          // Unfortunately MSVC cannot accept C99 standard.
          // "compilerSwitches": "/std:c99",
          "compilerSwitches": "/std:c11",
          "intelliSenseMode": "windows-msvc-x86",
          "forcedInclude": [
            ".vs\\c_cpp_intellisense_helper.h"
          ],
          "inheritEnvironments": [
            "Renesas_R_CPUs"
          ]
        },
        {
          "name": "GNURL78",
          "includePath": [
            "${env.PROJECT_ROOT}\\src\\**"
          ],
          "defines": [
          ],
          "compilers": {
            "c": {
              "path": "${env.TCINSTALL}\\bin\\rl78-elf-gcc.exe",
              "standard": "gnu99",
              "args": "-mg14 -mmul=g14"
            },
            "cpp": {
              "path": "${env.TCINSTALL}\\bin\\rl78-elf-g++.exe",
              "standard": "gnu++14",
              "args": "-mg14 -mmul=g14"
            }
          },
          "intelliSenseMode": "linux-gcc-x86",
          "forcedInclude": [
            ".vs\\c_cpp_intellisense_helper.h"
          ],
          "inheritEnvironments": [
            "Renesas_R_CPUs"
          ]
        },
        {
          "name": "LLVM-RL78",
          "includePath": [
            "${env.PROJECT_ROOT}\\src\\**"
          ],
          "defines": [
          ],
          "compilers": {
            "c": {
              "path": "${env.TCINSTALL}\\bin\\clang.exe",
              "standard": "gnu99",
              "args": "--target=rl78 -mcpu=s3 -frenesas-extensions"
            },
            "cpp": {
              "path": "${env.TCINSTALL}\\bin\\clang++.exe",
              "standard": "gnu++17",
              "args": "--target=rl78 -mcpu=s3 -frenesas-extensions"
            }
          },
          "intelliSenseMode": "windows-clang-x86",
          "forcedInclude": [
            ".vs\\c_cpp_intellisense_helper.h"
          ],
          "inheritEnvironments": [
            "Renesas_R_CPUs"
          ]
        }
      ],
      "environments": [
        {
          // Do not edit the following line if you use 'VS setup for e2 studio.launch' program.
          "PROJECT_NAME": "!ProjectRootBaseName!",
          //
          // Do not edit the following two lines if you use 'VS setup for e2 studio.launch' program.
          "PROGRAM_NAME": "${env.PROJECT_NAME}",
          "PROGRAM_EXT": ".elf",
          //
          // Do not edit the following line if you use 'VS setup for e2 studio.launch' program.
          "E2STUDIO_WORKSPACE_FOLDER": "C:\\Renesas\\GitHubDesktop\\workspaces\\workspace_e2v202110",
          //
          "BUILD_CONFIG_RELEASE_NAME": "Release", // Reserved for future use.
          "BUILD_CONFIG_DEBUG_NAME": "HardwareDebug",
          //
          "DEBUG_CONFIG_HARDWAREDEBUG_NAME": "HardwareDebug",
          "DEBUG_CONFIG_HARDWAREDEBUG_LCFG": "${env.PROJECT_NAME} ${env.DEBUG_CONFIG_HARDWAREDEBUG_NAME}.launch",
          "DEBUG_CONFIG_HARDWAREDEBUG_SOPT": "-uComPort= COM9",
          "DEBUG_CONFIG_SIMULATORDEBUG_NAME": "RenesasSimDebug",
          "DEBUG_CONFIG_SIMULATORDEBUG_LCFG": "${env.PROJECT_NAME} ${env.DEBUG_CONFIG_SIMULATORDEBUG_NAME}.launch",
          "DEBUG_CONFIG_SIMULATORDEBUG_SOPT": "",
          //
          "PROJECT_ROOT": "${projectRoot}.", // Note that this pre-defined dynamic macro ends with '\'.
          "MAKE_OPTIONS": "-r -j8 -k",
          //
          // Do not edit the following five lines if you use 'VS setup for e2 studio.launch' program.
          "ECLIPSE_HOME": "C:\\Renesas\\e2studio64_v202110\\eclipse",
          "SUPPORT_AREA": "C:\\Renesas\\e2studio64\\SupportFiles\\.eclipse\\com.renesas.platform_1643561029",
          "PYTHONHOME": "${env.ECLIPSE_HOME}\\runtimes\\python\\2.7.12_x86",
          "TCINSTALL": "C:\\Renesas\\GCCLLVM\\LLVM-RL78\\10.0.0.202111",
          "TC_NAME": "LLVM-RL78",
          //
          "environment": "Renesas_R_CPUs"
        }
      ]
    }

     

  • こんにちは。NoMaYです。

    今更ながら気付いたのですけれども、1つ前のバージョンのe2 studio(e2 studio 2022-01)からヘッドレスビルド用e2 studioのプログラムファイル名が変更されていますね。これまで投稿してきたものが動かなくなっている筈ですので、週末ぐらいに修正しようと思います。

    e2 studio 2021-10: eclipsec.exe

    e2 studio 2022-01: e2studioc.exe

    以下、Windowsエクスプローラでのファイル一覧の画面コピーです。(2021-10のものと2022-01のものです。)




     

  • こんにちは。NoMaYです。

    先日の投稿に書いた、ヘッドレスビルド用e2 studioのプログラムファイル名が変更されていた件に対応しました。

    visualstudio2022_helper_files_rl78_20220424.zip
    visualstudio2022_helper_files_rx_20220424.zip
     

  • こんにちは。NoMaYです。

    Microsoftさん自身のVisual StudioのSTM32CubeIDEへの対応が一般公開されていました。何かしらのニーズ/少なくともやる意義、といったようなことは、ある、ということみたいですね。

    Visual Studio 2022 バージョン 17.6
    リリース日: 2023 年 5 月 16 日
    Visual Studio 2022 バージョン 17.6 のこのリリースの新機能の概要
    learn.microsoft.com/ja-jp/visualstudio/releases/2022/release-notes#summary-of-whats-new-in-this-release-of-visual-studio-2022-version-176

    [ファイル] > [開く] > [STM32CubeIDE プロジェクトのインポート] を使用して、Visual Studio 内で埋め込み開発用の STM32CubeIDE プロジェクトをインポートできるようになりました。 これにより、STLink のデバイス フラッシュとデバッグ設定を含む CMake プロジェクトが生成されます。 デバイスのボード サポート パッケージと共に STM32CubeIDE がインストールされている必要があります。 詳しくは、こちらをご覧ください。


    [関連リンク]

    Importing ST projects into Visual Studio
    Marc Goodner    February 28th, 2023
    devblogs.microsoft.com/cppblog/importing-st-projects-into-visual-studio/

    Importing ST projects into Visual Studio Code
    Marc Goodner    September 1st, 2022
    devblogs.microsoft.com/cppblog/importing-st-projects-into-visual-studio-code/