As the final testing of the CH32V series RISC-V MCU development environment on Mac, I tried whether I could debug a program running on WCH’s CH32V307RCT6 evaluation board (CH32V307V-EVT-R1) or not with Visual Studio Code in the same way as I did before on my Ubuntu 20.04 environment.
I tested Visual Studio Code using the same CH32V307 example as the previous post. This time, to generate debugging information, I added -g
and -O0
to the GCC options in the Makefile
(Here is the updated file) and rebuilt the example.
After installing Visual Studio Code to my MacBook Pro (intel, 13inch, 2020), I added the Native Debug extension by WebFreak.
I saved a workspace of Visual Studio Code into the ch32v307/EVT/EXAM/GPIO/GPIO_Toggle/User
directory and added this directory to the workspace also. Then I created a launch.json file by clicking create a launch.json file(1), (2) and selecting the workplace (3) and GDB(4) items.
I replaced the contents of the created JSON file with the following.
{ "tasks": { "version": "2.0.0", "tasks": [ { "label": "run_openocd", "type": "process", "isBackground": true, "command": "${userHome}/csfs/openocd/openocd", "args": ["-f", "${userHome}/csfs/openocd/wch-riscv.cfg"], "problemMatcher": [ { "pattern": [ { "regexp": ".", "file": 1, "location": 2, "message": 3 } ], "background": { "activeOnStart": true, "beginsPattern": ".", "endsPattern": ".", } } ] } ] }, "folders": [ { "path": "." } ], "launch": { "version": "0.2.0", "configurations": [ { "name": "gdb-openocd", "type": "gdb", "request": "attach", "executable": "gpio_toggle.elf", "remote": true, "target": ":3333", "cwd": "${workspaceRoot}", "gdbpath": "${userHome}/csfs/x-tools/riscv32-unknown-elf/bin/riscv32-unknown-elf-gdb", "preLaunchTask": "run_openocd", "autorun": [ "set mem inaccessible-by-default off", "set architecture riscv:rv32", "set remotetimeout unlimited", "monitor reset halt", "load" ] } ] } }
Before starting the debugging with Visual Studio Code, I mounted the disk image I made in a new Terminal window.
hdid -nomount csfs.sparseimage mount -t hfs /dev/disk2s2 csfs export PATH="$HOME/csfs/x-tools/riscv32-unknown-elf/bin:$HOME/csfs/openocd:$PATH"
Then I added the following line to the end of OpenOCD’s config file $HOME/csfs/openocd/wch-riscv.cfg
to avoid the Restart and Disconnection issue I found when I tried to run Visual Studio Code on Ubuntu.
$_TARGETNAME.0 configure -event gdb-detach { shutdown }
I set a breakpoint in main.c
and started debugging by selecting the Start Debugging (F5)
item under the Run
menu.
As far as I tested briefly, debugging on Visual Studio Code worked pretty well. This time I was able to figure out a way to avoid the Restart (Ctrl+Shift F5)
and Disconnect (Shift+F5)
operation issues that I found when I tried Visual Studio Code on Ubuntu by modifying OpenOCD’s config file and defining preLaunchTask
to the Visual Studio Code setting.
[Added on 2022-07-08]
I uploaded my ch32v307/EVT/EXAM/GPIO/GPIO_Toggle/
directory as the tgz file just for reference. My Visual Studio Code project file (GPIO_Toggle.code-workspace
) with the above setting is also included in the tgz file.