cancel
Showing results for 
Search instead for 
Did you mean: 

SWO doesn't work in VScode

vector
Associate

Good afternoon,

I'm trying to use the SWO with a NUCLEO-G431KB board in VScode.

I've generated a project with CubeMX, imported it with the VScode extension and modified the launch.json file by adding 

"swoConfig": {
                "enabled": true,
                "cpuFrequency": 170000000,
                "swoFrequency":  2000000,
                "source": "probe",
                "decoders": [
                    { 
                        "type": "console",
                        "label": "ITM",
                        "showOnStartup": true,
                        "port": 0,
                        "encoding": "ascii"
                    }
                ]
            },

However, when I launch the debugger, I get the warning "SWO support is not available from the probe when using the ST-Link GDB server. Disabling SWO.". Looking online it seems that it should work with the ST-Link GDB server, so am I misisng something obvious?

Is there a way to have SWO working in VScode?

Thanks you!

I add the full launch.json file for completeness:

{
    // Use IntelliSense to learn about possible attributes.
    // Hover to view descriptions of existing attributes.
    // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
    "version": "0.2.0",
    "configurations": [
        {
            "name": "Build & Debug Microcontroller - ST-Link",
            "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": "stlink",
            "device": "STM32G431KBTx", //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/STM32G431.svd",
            "v1": false,               //Change it depending on ST Link version
            "serverpath": "${config:STM32VSCodeExtension.cubeCLT.path}/STLink-gdb-server/bin/ST-LINK_gdbserver",
            "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",            
            "serverArgs": [
                "-m","0",
            ],
            "swoConfig": {
                "enabled": true,
                "cpuFrequency": 170000000,
                "swoFrequency":  2000000,
                "source": "probe",
                "decoders": [
                    { 
                        "type": "console",
                        "label": "ITM",
                        "showOnStartup": true,
                        "port": 0,
                        "encoding": "ascii"
                    }
                ]
            },
            //"preLaunchTask": "Build + Flash"
            /* If you use external loader, add additional arguments */
            //"serverArgs": ["--extload", "path/to/ext/loader.stldr"],
        },
        {
            "name": "Attach to Microcontroller - ST-Link",
            "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": "stlink",
            "device": "STM32G431KBTx", //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/STM32G431.svd",
            "v1": false,               //Change it depending on ST Link version
            "serverpath": "${config:STM32VSCodeExtension.cubeCLT.path}/STLink-gdb-server/bin/ST-LINK_gdbserver",
            "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",            
            "serverArgs": [
                "-m","0",
            ],
            /* If you use external loader, add additional arguments */
            //"serverArgs": ["--extload", "path/to/ext/loader.stldr"],
        }
            ]
}

 

2 REPLIES 2
Sarra.S
ST Employee

Hello @vector

Are yo using this cortex debug extension Marus/cortex-debug: Visual Studio Code extension for enhancing debug capabilities for Cortex-M Microcontrollers? It has partial support textane/stlink (st-util) GDB Servers (SWO can only be captured via a serial port)

Also, have you been able to debug with default debug configuration? 

"Build & Debug Microcontroller - ST-Link"

 

To give better visibility on the answered topics, please click on Accept as Solution on the reply which solved your issue or answered your question.

hi @Sarra.S ,

Yes I'm using that extension. I just noticed that the description I see on vscode says that it doesn't support SWO on STLink. I guess it's an older version. I will try to update it manually and see if this solves the issue.

Yes, I can debug correctly with the default configuration, only SWO doesn't work. 

Thank you for your help!