From e8af45a59b08233ac7342b38c37c53faadd2141b Mon Sep 17 00:00:00 2001 From: Rob Riggs Date: Fri, 23 Aug 2024 16:30:19 -0700 Subject: [PATCH] Add OpenOCD debugging config for SWO output in VS Code. --- .vscode/launch.json | 83 +++++++++++++++++++++++++++++++++++++++++++++ .vscode/tasks.json | 16 ++++++++- stlink-tnc3.cfg | 8 ++--- 3 files changed, 102 insertions(+), 5 deletions(-) diff --git a/.vscode/launch.json b/.vscode/launch.json index 6ac8144..ef18695 100644 --- a/.vscode/launch.json +++ b/.vscode/launch.json @@ -31,6 +31,89 @@ /* If you use external loader, add additional arguments */ //"serverArgs": ["--extload", "path/to/ext/loader.stldr"], }, + { + "name": "Build & Debug Microcontroller - OpenOCD", + "cwd": "${workspaceFolder}", + "type": "cortex-debug", + "executable": "${command:cmake.launchTargetPath}", + // Let CMake extension decide executable: "${command:cmake.launchTargetPath}" + // Or fixed file path: "${workspaceFolder}/path/to/filename.elf" + "request": "launch", + "servertype": "openocd", + "configFiles": [ + "${workspaceFolder}/stlink-tnc3.cfg" + ], + "device": "STM32L433CCUx", //MCU used + "interface": "swd", + "serialNumber": "", //Set ST-Link ID if you use multiple at the same time + "runToEntryPoint": "main", + "svdFile": "${config:STM32VSCodeExtension.cubeCLT.path}/STMicroelectronics_CMSIS_SVD/STM32L4P5.svd", + "v1": false, //Change it depending on ST Link version + "serverpath": "/usr/bin/openocd", + "stm32cubeprogrammer":"${config:STM32VSCodeExtension.cubeCLT.path}/STM32CubeProgrammer/bin", + "stlinkPath": "${config:STM32VSCodeExtension.cubeCLT.path}/STLink-gdb-server/bin/ST-LINK_gdbserver", + "armToolchainPath": "${config:STM32VSCodeExtension.cubeCLT.path}/GNU-tools-for-STM32/bin", + "gdbPath":"${config:STM32VSCodeExtension.cubeCLT.path}/GNU-tools-for-STM32/bin/arm-none-eabi-gdb", + "swoConfig": { + "enabled": true, + "cpuFrequency": 16000000, + "swoFrequency": 2000000, + "source": "probe", + "decoders": [ + { + "type": "console", + "label": "ITM", + "showOnStartup": true, + "port": 0, + "encoding": "ascii" + } + ] + }, + "preLaunchTask": "Build project" + /* If you use external loader, add additional arguments */ + //"serverArgs": ["--extload", "path/to/ext/loader.stldr"], + }, + { + "name": "Attach to MCU OpenOCD", + "cwd": "${workspaceFolder}", + "type": "cortex-debug", + "executable": "${command:cmake.launchTargetPath}", + // Let CMake extension decide executable: "${command:cmake.launchTargetPath}" + // Or fixed file path: "${workspaceFolder}/path/to/filename.elf" + "request": "attach", + "servertype": "openocd", + "configFiles": [ + "${workspaceFolder}/stlink-tnc4.cfg" + ], + "device": "STM32L4P5RETx", //MCU used + "interface": "swd", + "serialNumber": "", //Set ST-Link ID if you use multiple at the same time + "runToEntryPoint": "main", + "svdFile": "${config:STM32VSCodeExtension.cubeCLT.path}/STMicroelectronics_CMSIS_SVD/STM32L4P5.svd", + "v1": false, //Change it depending on ST Link version + "serverpath": "/usr/bin/openocd", + "stm32cubeprogrammer":"${config:STM32VSCodeExtension.cubeCLT.path}/STM32CubeProgrammer/bin", + "stlinkPath": "${config:STM32VSCodeExtension.cubeCLT.path}/STLink-gdb-server/bin/ST-LINK_gdbserver", + "armToolchainPath": "${config:STM32VSCodeExtension.cubeCLT.path}/GNU-tools-for-STM32/bin", + "gdbPath":"${config:STM32VSCodeExtension.cubeCLT.path}/GNU-tools-for-STM32/bin/arm-none-eabi-gdb", + "swoConfig": { + "enabled": true, + "cpuFrequency": 16000000, + "swoFrequency": 2000000, + "source": "probe", + "decoders": [ + { + "type": "console", + "label": "ITM", + "showOnStartup": true, + "port": 0, + "encoding": "ascii" + } + ] + } + /* If you use external loader, add additional arguments */ + //"serverArgs": ["--extload", "path/to/ext/loader.stldr"], + }, { "name": "Attach to Microcontroller - ST-Link", "cwd": "${workspaceFolder}", diff --git a/.vscode/tasks.json b/.vscode/tasks.json index ce3b438..bffa9d4 100644 --- a/.vscode/tasks.json +++ b/.vscode/tasks.json @@ -36,7 +36,21 @@ "CubeProg: Flash project (SWD)", ] }, - { + { + "type": "cppbuild", + "label": "Build project", + "command": "cmake", + "args": ["--build", "${command:cmake.buildDirectory}", "-j", "16"], + "options": { + "cwd": "${workspaceFolder}" + }, + "problemMatcher": ["$gcc"], + "group": { + "kind": "build", + "isDefault": true + } + }, + { "type": "cmake", "label": "CMake: clean rebuild", "command": "cleanRebuild", diff --git a/stlink-tnc3.cfg b/stlink-tnc3.cfg index 6d6320d..c0ce922 100644 --- a/stlink-tnc3.cfg +++ b/stlink-tnc3.cfg @@ -1,12 +1,12 @@ # This is an TNC3 with a STM32L433CCU6 chip. -source [find interface/stlink-v2-1.cfg] +source [find interface/stlink.cfg] transport select hla_swd set WORKAREASIZE 0x4000 source [find target/stm32l4x.cfg] -reset_config srst_only -itm port 0 on -tpiu config internal swv uart off 72000000 +reset_config srst_only srst_nogate +# itm port 0 on +# tpiu config internal swv uart off 72000000