NuttXのソースコードに触れているのですが、shell上だけで作業/デバッグするのには限界があり、なにかよい方法はないかと調べたところ、VSCodeにてCortexのデバッグができるようなので、試してみたところ、とりあえず動いており、WSLとWindowsだけでコンフィグ・コンパイルし、ST-LINK経由でデバッグする方法は他には見当たらなかったので、備忘録を兼ねて本稿をUPしてみました。
まず、WSLをインストールします。筆者の場合はWSL2を使っています。次に、VSCodeをインストールしますが、VSCodeの起動はウィンドウズからではなく、WSLのシェルから起動します。
追記:2021/03/16 一番最初の起動は以下の通りです。
今回は以上です。それでは。
$ code . Installing VS Code Server for x64 (2b9aebd5354a3629c3aba0a5f5df49f43d6689f8) Downloading: 100% Unpacking: 100% Unpacked 1824 files and folders to /home/MyUserID/.vscode-server/bin/2b9aebd5354a3629c3aba0a5f5df49f43d6689f8.その後の起動は、.vscodeをnuttxのルートに置く場合
$ cd /usr/src/nuttx-9.1.0/nuttx $ codeで起動できます。起動に成功すると、Windowの左下に(WSL/Debianの場合)
WSL: Debianと表示されます。 続いてソースコードですが、/mnt/c以下に置くとファイルアクセスが遅いので、WSLからみた/usr/src上にソースを展開します。筆者の場合、前述のように、/usr/src/nuttx-9.1.0/以下にnuttxとappsを置いています。 続いて、wsl上でlinux機と同様にコンパイル環境を整えます。makeやhost用gcc/binutils、target用gcc/binutilsなどをインストールします。これに加えて、menuconfig用にkconfig-frontendsをインストールしてきます。ここまでで、nuttxの作業環境(コンフィグ・コンパイルまで)をlinux機と同じように、wsl上でできるようにしておきます。 次に、Windows上で、OpenOCD, gnu toolchain(arm-none-eabi-xxx等), makeをインストールします。筆者の場合、以下のディレクトリにインストールしています。
OpenOCD: C:\Devz\OCD toolchain: C:\Devz\ARM\gnu make.exe: C:\Devz\ARM\gnu\bin追記:OpenOCDはhttps://gnutoolchains.com/arm-eabi/openocd/ ( https://github.com/sysprogs/openocd )を使っています。 インストール後、windowsのパスをコントロールパネル、システム、システムの詳細設定、環境変数にて通しておいてください。ここまでできていると、WSLではないWindows上での開発環境も同時にできることになります。 さらに、続いて、WSL2から、VSCodeを起動し、マーケットプレースから"Cortex-Debug"をWSL/VSCODEにインストールします。Cortex-Debugをインストールしたら、メニューの"実行"->"構成の追加..."を選ぶと、コマンドパレットに、"cortex-debug"があるので、これを選びます。すると、launch.jsonの編集Windowが開くので、以下の様に記述します。
{ "version": "0.2.0", "configurations": [ { "name": "Cortex Debug", "cwd": "${workspaceRoot}", "executable": "/usr/src/nuttx-9.1.0/nuttx/nuttx", "request": "launch", "type": "cortex-debug", "servertype": "openocd", "serverpath": "/mnt/c/Devz/OCD/bin/openocd.exe", "gdbpath": "/mnt/c/Devz/ARM/gnu/bin/arm-none-eabi-gdb.exe", "configFiles": [ "interface/stlink.cfg", "target/stm32f4x.cfg" ] } ] }設定が済んだら保存しておきます。 続いて、nuttxのビルドですが、こちらはシェル経由のほうが早いので、tools/configure.sh xxx/yyyでdefconfigを流した後、デバッグ用にmake menuconfigで以下の設定を追加し、makeしておきます。
CONFIG_DEBUG_NOOPT (Optimization Level (Suppress Optimization) --->) CONFIG_DEBUG_SYMBOLS ([*] Generate Debug Symbols)これで、デバッグの開始ができるようになっていますので、vscodeから"実行"->"デバッグの開始"で実機デバッグを行います。Windows上のST-LINK経由でプログラムがロードされるとgdbデバッグが開始されますので、あとはお好きなようになさってください。
今回は以上です。それでは。
コメント
コメントを投稿