最近Atom IDEとかVisual Studio Codeとか新しい開発環境が出て来てますね(Renesas CSplusと連携させる方法を探したいですね)

最近、Atom IDE(まだC/C++サポートは無い模様)とかVisual Studio Code(C/C++サポートのプレビュー版は有る模様)とか、新しい開発環境が出て来ていますね。ルネサスCS+と連携させる方法を探してみたいですね。

Google検索: Atom IDE site:マイナビニュース
www.google.co.jp/search?q=Atom+IDE+site%3Anews.mynavi.jp

Google検索: Visual Studio Code site:マイナビニュース
www.google.co.jp/search?q=Visual+Studio+Code+site%3Anews.mynavi.jp

[リンク]

C/C++ for VS Code (Preview)
code.visualstudio.com/docs/languages/cpp

[案(当面)]

・ ビルドはCS+のコマンドラインモードを使用する
・ ビルドエラーメッセージパーサはVisual Studio Codeのソースを改造する
・ もちろんCS+のコマンドラインモードでビルドした.absファイルはCS+のGUIモードでデバッグ可能
・ e² studio同梱のrenesas_cc_converter.exeでCC-RXやCC-RLの.absファイルをGDBで読める.xファイルに変換可能
・ e² studio同梱のe2-server-gdb.exeでGDBとE1/E2Lite等を接続可能
・ Visual Studio CodeはGDBと接続可能(任意のGDBと接続可能かは分からないが少なくともARM GDBとは接続可能な模様)

[案(将来)]

・ Visual Studio CodeをルネサスCS+と接続出来れば、、、(出来ればGDBを介さずに、、、)
・ Visual Studio CodeをルネサスCS+のmtpjファイル内のソース情報が読めるように改造出来れば、、、

  • CS+内のPythonにビルドとデバッグのAPIがあるので、それとVSCodeとで連携取れないですかね

  • Power Userさん、こんにちは。NoMaYです。

    > CS+内のPythonにビルドとデバッグのAPIがあるので、それとVSCodeとで連携取れないですかね

    そのあたりも考えたり試したりしてみたいと思います。

  • こんにちは。NoMaYです。

    VSCodeをダウンロードしてインストールしてみました。Microsoft C/C++ ExtensionやMicrosoft Japanese Language Packも入れてみました。環境設定を習得中です。

    VSCodeのダウンロード
    code.visualstudio.com/

    参考にさせて頂けそうな記事

    VSCodeを使ったRXマイコン開発環境の紹介 – d-satoのマイクロマウス研修 Part8
    rt-net.jp/mobility/archives/14199

    ルネサスのマイコンをVSCodeを使ってプログラム、そしてCS+でビルド、Flash Programmerで書き込みを行う。
    tofu-so.hatenablog.jp/entry/2019/06/09/090000

    HEWでVSCodeを使う
    japan.renesasrulz.com/cafe_rene/f/forum21/4757/hew-vscode

    [関連リンク]

    Google検索: Renesas RX C/C++ VSCode install
    www.google.com/search?q=Renesas+RX+C%2FC%2B%2B+VSCode+install

    Google検索: Windows C/C++ VSCode install
    www.google.com/search?q=Windows+C%2FC%2B%2B+VSCode+install

    [追記]

    以下、VSCodeのインストール時の画面コピーです。





     

  • こんにちは。NoMaYです。

    先日の投稿にURLを書いた記事を参考にして、まずはCS+の外部エディタの設定をしてみました。CS+のプロジェクトツリー上でソースファイル名をクリックするとVSCode側で開きますね。

    以下、CS+で設定した内容です。

    C:\Renesas\VSCode\Code.exe
    %FilePath% -g
    %FilePath%:%Line% -g

     
    以下、画面コピーです。




     

  • こんにちは。NoMaYです。

    今度も先日の投稿にURLを書いた記事を参考にして(というよりズバリ真似て)、VSCode内でコマンドライン版CS+を起動&ビルド出来るようにVSCodeを設定してみました。ただ、どうも昔と今では少し勝手が違っている部分があるようで、今はVSCodeにて、フォルダを信頼する、という操作をしないとビルド出来ないようですね。

    以下、VSCodeの設定ファイルの内容と設定時とビルド時のVSCodeの画面コピーです。

    .vscode/tasks.json

    {
        // See https://go.microsoft.com/fwlink/?LinkId=733558
        // for the documentation about the tasks.json format
        "version": "2.0.0",
        "tasks": [
            {
                "label": "Build",
                "type": "shell",
                "command": "C:/Renesas/CS+/CC/CubeSuite+.exe",
                "args": [
                    "/bb",
                    "${workspaceRoot}/${workspaceRootFolderName}.mtpj"
                ],
                "group": {
                    "kind": "build",
                    "isDefault": true
                }
            },
        ]
    }

     
    フォルダを開き、フォルダを信頼する。





    ビルド設定のテンプレートを生成し、テンプレートを修正する。






    ビルドする。



     

  • こんにちは。NoMaYです。

    先日の投稿にURLを書いた記事には、VSCode内でコマンドライン版RFPを起動&書き込み出来るようにするやり方も書かれていましたが、それはひとまず後回しにして、それから、ビルドにリビルドやクリーンを追加することとかエラーパーサー(VSCodeではProblemMatcherと呼ぶらしい)を追加することとかも後回しにして、次は以下のあたりでしょうかね、、、(うまくいくかどうかは分からないですけれども、、、)

    Google検索: VSCode gdb OpenOCD
    www.google.com/search?q=VSCode+gdb+OpenOCD

    Google検索: VSCode gdb gdbserver
    www.google.com/search?q=VSCode+gdb+gdbserver
     

  • こんにちは、尭です。

    >バス幅固定の外バス接続メモリの場合、__evenaccessがピッタリではないかと思っています。
    >今時は無いかも知れませんが、バス幅さえ守ってくれれば、最適化は行って欲しい、何て場合です。今は無いのかも知れませんが、小生が現役時代は結構あったものですから。。。
     1アクセスに付き1回セットアップするタイプのメモリであればアクセスのサイクル数を節約できそうですが、単にメモリとして使うならvolatile修飾子を付ける状況は限られるでしょうし、その場合はコンパイラによる最適化を期待出来るのではないでしょうか。
     またRXユーザーズマニュアルのSDRAMコントローラの所を確認してみたところ、
    >16.3.9 SDRAM アクセスモードレジスタ (SDAMOD)
    >BE ビット ( 連続アクセス許可ビット )
    >SDRAM 空間の連続アクセスの許可または禁止を設定します。
    >注 . EXDMAC 以外のバスマスタから SDRAM 領域へアクセスする場合、連続アクセス許可に設定することは禁止
    >しており、設定された場合の動作は保証していません。
     広帯域を活かしたければEXDMACを使ってバースト転送してくださいという方針のようです。

    >ただ、GCCのネームバリューのお陰で、最初から or 早期に、それらがケアされるようになっている、ということなのですね。
     VSCodeのC/C++インテリセンスはgcc以外にMSVC、Clangに対してもローカライズされているようなのでこれらの拡張言語仕様は問題なく処理されるはずです。拡張言語仕様に絡む問題はVSCodeだけでなく例えばソースコード解析ツールのSourcetrailも__evenaccess修飾子を認識できません。VSCodeと同様にマクロを定義すれば解消しますが・・・
     後方互換性を考えるとそう簡単に変更出来ないのは判りますが、最近はIoT関連などで組み込み界隈の作法をよく知っているとは限らない人が開発を行うケースも少なからずあるようですし、一般的なCコンパイラから外れる独自仕様はあまり好ましくないのではと思います。

    自分はコーディングをVSCodeに移しつつありますが当面の目標は
    ・アセンブラファイル用のシンタックスハイライトを用意する
    ・ビルド出来るようにする
    ・設定が面倒なレジスタ群をVSCodeからGUIでエディット出来るようにする
    ・VSCodeからデバッグできるようする
    ・VSCodeのデバッグコンソールを使えるようにする(CS+のPythonにも関連する物はなさそうなので方策不明)
    あたりでしょうか。何処まで実現できるか判りませんが。

    #それとも最近はお仕着せのライブラリやデバイスドライバを使用するのが主流になってきていますし、レジスタ関連まで解析できなくても問題はあまりないとか・・・?

  • こんにちは、エビスクラウンです。

    「一般的なCコンパイラ」とは何なのかに疑問が残ります。

    業界標準の拡張言語仕様がどこかで公になっていれば納得できますが。。。それがVSCodeのC/C++インテリセンスがローカライズしている拡張言語仕様ってことなんですかね。

  • こんにちは。NoMaYです。

    まだVSCode外で幾らか下準備が必要ですが、ひとまずrx-elf-gdb.exeとe2-server-gdb.exeを使用して、VSCode上で以下の画面コピーのようにデバッグが出来るようになりました。今のところVSCodeの設定ファイルの内容は以下の通りです。これからVSCode外の下準備を減らせるよう試行錯誤してみます。







    .vscode/launch.json

    {
        // IntelliSense を使用して利用可能な属性を学べます。
        // 既存の属性の説明をホバーして表示します。
        // 詳細情報は次を確認してください: https://go.microsoft.com/fwlink/?linkid=830387
        "version": "0.2.0",
        "configurations": [
            {
                "name": "(rx-elf-gdb) 起動",
                "type": "cppdbg",
                "request": "launch",
                "program": "${workspaceFolder}/HardwareDebug/TestProgRun.x",
                "args": [],
                "stopAtEntry": false,
                "cwd": "${workspaceRoot}",
                "externalConsole": false,
                "MIMode": "gdb",
                "miDebuggerPath": "C:\\Renesas\\e2studio64\\SupportFiles\\.eclipse\\com.renesas.platform_1643561029\\DebugComp\\RX\\rx-elf-gdb.exe",
                "miDebuggerArgs": "--silent -rx-force-isa=v3 -rx-force-double-fpu",
                "setupCommands": [
                    {
                        "text": "-gdb-set pagination off"
                    },
                    {
                        "text": "-gdb-set non-stop on",
                    },
                    {
                        "text": "-target-select extended-remote-rx localhost:60916",
                    },
                    {
                        "text": "-interpreter-exec console \"monitor enable_stopped_notify_on_connect\"",
                    },
                    {
                        "text": "-interpreter-exec console \"monitor enable_execute_on_connect\"",
                    },
                    {
                        "text": "-file-exec-and-symbols C:/Renesas/GitHubDesktop/workspaces/work_csplus/TestProgRun/HardwareDebug/TestProgRun.x",
                    },
                    {
                        "text": "-target-download",
                    },
                    {
                        "text": "-interpreter-exec console \"monitor reset\"",
                    }
                ]
            }
        ]
    }

     

  • こんにちは。NoMaYです。

    VSCodeの設定ファイルを修正して、rx-elf-gdb.exeだけでなくてe2-server-gdb.exeもVSCode内で起動&実行させるようにしてみました。これで、VSCode外で必要な下準備は、rx-elf-gdb.exeがPython 2.7を必要とすることによる、PathとPYTHONPATHの2つの環境変数設定だけで済むようになりました。(なお、今のところ、Renesas RX Simulatorで試しています。) そこで、まだ、rx-elf-gdb.exeやe2-server-gdb.exeの設定がミニマム過ぎである点とかVSCodeの設定ファイルの作成を簡素化出来ないものかとか(CS+のPythonコンソールのIronPythonスクリプトで生成させてみるとか?)といった件はありますが、それは後回しにして、週末にエラーパーサーについて調べてみたいと思います。

    以下、デバッグ開始時のVSCodeの画面コピーとVSCodeの設定ファイルの内容と環境変数設定に関しての情報です。



    .vscode/launch.json

    {
        // IntelliSense を使用して利用可能な属性を学べます。
        // 既存の属性の説明をホバーして表示します。
        // 詳細情報は次を確認してください: https://go.microsoft.com/fwlink/?linkid=830387
        // NoMaYメモ VSCode C/C++起動設定: https://code.visualstudio.com/docs/cpp/launch-json-reference
        // NoMaYメモ GDB/MIコマンド:       https://sourceware.org/gdb/onlinedocs/gdb/GDB_002fMI.html
        "version": "0.2.0",
        "configurations": [
            {
                "name": "(rx-elf-gdb) 起動",
                "type": "cppdbg",
                "request": "launch",
                "program": "C:/Renesas/GitHubDesktop/workspaces/work_csplus/TestProgRun/HardwareDebug/TestProgRun.x",
                "args": [],
                "cwd": "${fileDirname}",
                "environment": [],
                "externalConsole": false,
                "targetArchitecture": "x86",
                "debugServerPath": "C:/Renesas/e2studio64/SupportFiles/.eclipse/com.renesas.platform_1643561029/DebugComp/RX/e2-server-gdb.exe",
                "debugServerArgs": "-p 60916 -g SIMULATOR -t R5F572NN -uPeripheralClkRatio= 4 -uCpuClkFreq= 240 -uRegisterSetting= 0 -uModePin= 0 -uCacheDecode= 1 -uIOModule= IodllForCMT.dll -uIOModule= IodllForICU_dpfpu.dll -n 0 -uWorkRamAddress= 0 -uEmStopInt= 0 -uEmStopInterrupt= 0 -uEmStopFPexp= 0 -l -uCore= SINGLE_CORE|enabled|1|main -uSyncMode= async -uFirstGDB= main",
                "serverStarted": "GDB: ",
                "MIMode": "gdb",
                "miDebuggerPath": "C:/Renesas/e2studio64/SupportFiles/.eclipse/com.renesas.platform_1643561029/DebugComp/RX/rx-elf-gdb.exe",
                "miDebuggerArgs": "--silent -rx-force-isa=v3 -rx-force-double-fpu",
                "stopAtEntry": true,
                "stopAtConnect": true,
                "setupCommands": [
                    {
                        "text": "-gdb-set pagination off"
                    },
                    {
                        "text": "-gdb-set non-stop on",
                    },
                ],
                "customLaunchSetupCommands": [
                    {
                        "text": "-target-select extended-remote-rx localhost:60916",
                    },
                    {
                        "text": "-interpreter-exec console \"monitor enable_stopped_notify_on_connect\"",
                    },
                    {
                        "text": "-interpreter-exec console \"monitor enable_execute_on_connect\"",
                    },
                    {
                        "text": "-file-exec-and-symbols C:/Renesas/GitHubDesktop/workspaces/work_csplus/TestProgRun/HardwareDebug/TestProgRun.x",
                    },
                    {
                        "text": "-target-download",
                    },
                    {
                        "text": "-interpreter-exec console \"monitor reset\"",
                    },
                ],
                "logging": {
                    "exceptions": true,
                    "moduleLoad": false,
                    "programOutput": true,
                    "engineLogging": false,
                    "trace": false,
                    "traceResponse": false,
                },
            }
        ]
    }

     

    Path          C:\Renesas\e2studio64_v202110\eclipse\runtimes\python\2.7.12_x86
    PYTHONPATH    C:\Renesas\e2studio64_v202110\eclipse\runtimes\python\2.7.12_x86\lib