Silicon Labs OpenOCD Support
VS Code extension for flashing, debugging and erasing Silicon Labs OpenOCD boards. Designed to work with Simplicity Studio 6 projects compiled by the Simplicity Studio for VS Code extension.
Supported hardware:
Features
- Right-click context menu support for files and project folders
- Integrates into the Simplicity Studio for VS Code extension
- Flash
.hex files or Simplicity Studio projects using OpenOCD
- Debug
.out (ELF) files or Simplicity Studio projects via cortex-debug
- Erase the chip flash memory
- Configurable interface and target
- Works with CMSIS-DAP (onboard debugger)
Usage
Flash
- Right-click a project root folder → Flash project to Silicon Labs OpenOCD board
- Right-click a
.hex file → Flash file to Silicon Labs OpenOCD board
Debug
- Right-click a project root folder → Debug project on Silicon Labs OpenOCD board
- Right-click a
.out file → Debug file on Silicon Labs OpenOCD board (flashes the matching .hex first, then starts a debug session)
Erase
- Right-click a project root folder → Erase Silicon Labs OpenOCD board
- Right-click a
.hex or .out file → Erase Silicon Labs OpenOCD board
Status Bar Icons
The extension adds three icons to the right side of the VS Code status bar for quick access to the most common actions:
- ⚡ Flash — flashes the current project to the board
- 🐛 Debug — flashes the project and starts a debug session
- 🗑️ Erase — erases the chip's flash memory
Clicking any of these icons triggers the corresponding command on the active project.
Setup
This extension requires a custom Arduino fork of OpenOCD (0.12.0-arduino1-static). Mainline OpenOCD does not support the boards listed above yet.
Option 1: Install via Arduino IDE (recommended)
Install the Silicon Labs Arduino Core in the Arduino IDE. This automatically downloads the correct OpenOCD version.
On first activation, the extension automatically detects the OpenOCD installation in the default Arduino15 location for your OS. If found, it sets the OpenOCD Install Directory setting automatically — no manual configuration needed.
To set the OpenOCD Install Directory manually to Arduino's install directory - use the following table as a reference:
| OS |
Path |
| macOS |
~/Library/Arduino15/packages/SiliconLabs/tools/openocd/0.12.0-arduino1-static |
| Linux |
~/.arduino15/packages/SiliconLabs/tools/openocd/0.12.0-arduino1-static |
| Windows |
%LOCALAPPDATA%\Arduino15\packages\SiliconLabs\tools\openocd\0.12.0-arduino1-static |
Option 2: Download prebuilt binaries
Download the appropriate archive for your OS and extract it anywhere:
Then set the OpenOCD Install Directory to the extracted folder.
Option 3: Build from source
Build from the Arduino fork: https://github.com/facchinm/OpenOCD/tree/arduino-0.12.0-rtx5
Configuration
- OpenOCD Install Directory — path to the OpenOCD root folder
- Interface Configuration — OpenOCD interface config file (e.g.
interface/cmsis-dap.cfg)
- Target Configuration — OpenOCD target config file (e.g.
target/efm32s2_g23.cfg)
- Adapter Speed — JTAG/SWD adapter speed in kHz (default: 4000)
Creating Simplicity Studio v6 Projects
The supported boards are not auto-detected by Simplicity Studio. To create a project, target the MCU part directly instead of selecting a board:
| Board |
MCU Part |
| Arduino Nano Matter |
MGM240SD22VNA |
| Seeed Studio XIAO MG24 |
EFR32MG24B220F1536IM48 |
Steps
- On the Home screen in Simplicity Studio v6, select a technology (e.g. Bluetooth LE, Zigbee, Matter) or click (all projects & demos)
- Select an example project
- In the Target Device dialog, tick the Part checkbox (it's off by default — only boards are shown initially)
- Search for the MCU part name from the table above and select it
- Proceed with project creation as usual
- When the project is opened in VS Code use the OpenOCD flash/debug/erase options from the right-click context menu of the project folder
GPIO Pin Configuration
Some example projects come with pre-defined GPIO pins for LEDs or buttons (e.g. led0, button0 components) that are only mapped on official development kit boards. These pin mappings won't be set by default on the OpenOCD boards. You'll need to manually configure the correct GPIO pins for your board in the project's hardware configuration or source code.
Refer to the board's pinout diagram for the available GPIO pins:
Requirements
- OpenOCD Arduino fork installed
- Any of the supported hardware connected