A comprehensive TinyGo development environment for Visual Studio Code. This extension provides a full-featured IDE experience for developing embedded applications with TinyGo.

Features
SDK Version Management
- Multiple SDK Support: Manage multiple TinyGo installations and switch between them easily
- Auto-Detection: Automatically detects TinyGo installations in common locations
- Version Display: See the active SDK version in the status bar
Target/Board Selection
- 170+ Supported Boards: Quick access to all TinyGo-supported targets
- Categorized Browser: Boards organized by manufacturer (Arduino, Raspberry Pi, ESP32, Nordic, STM32, etc.)
- Board Information: View detailed specs including CPU, flash size, RAM, and features
- Search & Filter: Quickly find boards by name, CPU, or features
Driver Browser
- Dynamic Driver Discovery: Automatically fetches the latest drivers from tinygo-org/drivers
- One-Click Installation: Install drivers directly from the sidebar
- Documentation Links: Quick access to driver documentation and examples
- Category Organization: Drivers grouped by type (Sensors, Displays, Motors, Communication, etc.)
- Offline Support: Falls back to built-in driver list when offline
Examples Browser
- 40+ SDK Examples: Browse examples directly from your TinyGo SDK
- Categorized View: Examples organized by type (Basics, GPIO, Communication, USB, Display, Audio, WASM)
- Quick Preview: Click to open and view example code
- Copy to Workspace: One-click copy of examples to your project
- Search & Filter: Find examples by name or description
Build System
- Build Command: Build your project with
Ctrl+Shift+B (Cmd+Shift+B on Mac)
- Flash Command: Flash directly to your board with
Ctrl+Shift+F
- Run Command: Run on simulator targets
- Error Highlighting: Build errors shown directly in the editor
- Binary Size Analysis: View detailed memory usage breakdown
- Heap Analysis: Identify heap allocations in your code
- Configurable Options: Set scheduler, garbage collector, and optimization level
Serial Monitor
- Integrated Terminal: Built-in serial monitor for debugging
- Port Auto-Detection: Automatically detects available serial ports
- Configurable Baud Rate: Support for 9600 to 921600 baud
Project Management
- Project Initialization: Create new TinyGo projects with proper structure
- IntelliSense Configuration: Automatically configures gopls for TinyGo's
machine package
- Go Extension Integration: Seamless integration with the official Go extension
- Makefile Generation: Generate build scripts for CI/CD
- Dependency Updates: Update project dependencies with confirmation
Code Snippets
- TinyGo Snippets: Quick templates for common patterns
tgmain - Main function with LED blink
tgpin - Pin configuration
tgi2c - I2C bus setup
tgspi - SPI bus setup
tguart - UART configuration
tgadc - ADC reading
tgpwm - PWM configuration
tgneo - WS2812/NeoPixel setup
tgssd1306 - OLED display setup
tgbme280 - BME280 sensor setup
- And more!
Requirements
Installation
- Install the extension from the VS Code Marketplace
- Install TinyGo from tinygo.org
- The extension will automatically detect your TinyGo installation
Manual SDK Configuration
If TinyGo is not auto-detected, you can manually add SDK paths:
- Open Command Palette (
Ctrl+Shift+P)
- Run "TinyGo: Add SDK Path"
- Select your TinyGo installation directory
Usage
Quick Start
- Open a Go project or create a new folder
- Run "TinyGo: Initialize TinyGo Project" from the Command Palette
- Select your target board from the TinyGo sidebar or status bar
- Write your code
- Press
Ctrl+Shift+B to build or Ctrl+Shift+F to flash
Selecting a Target
Click on the target indicator in the status bar or:
- Open the TinyGo sidebar (click the TinyGo icon in the Activity Bar)
- Expand the "Boards" section
- Click on a board to select it as the current target
Using Drivers
- Open the TinyGo sidebar
- Expand the "Drivers" section
- Find the driver you need
- Right-click and select "Install Driver" to add it to your project
- Use the provided snippets for quick setup
Using Examples
- Open the TinyGo sidebar
- Expand the "Examples" section
- Browse by category or use the filter
- Click an example to preview it
- Right-click and select "Copy to Workspace" to use it in your project
Serial Monitor
- Select your serial port: "TinyGo: Select Serial Port"
- Start the monitor: "TinyGo: Start Serial Monitor" or
Ctrl+Shift+M
Extension Settings
| Setting |
Description |
Default |
tinygo.sdk.paths |
List of TinyGo SDK paths |
[] |
tinygo.sdk.current |
Active SDK path |
"" |
tinygo.target |
Current target board |
"" |
tinygo.port |
Serial port for flashing |
"" |
tinygo.serialBaudRate |
Serial monitor baud rate |
115200 |
tinygo.build.scheduler |
Scheduler type |
"tasks" |
tinygo.build.gc |
Garbage collector |
"conservative" |
tinygo.build.opt |
Optimization level |
"z" |
tinygo.build.extraFlags |
Additional build flags |
[] |
tinygo.autoDetectSDK |
Auto-detect TinyGo |
true |
tinygo.configureGoExtension |
Configure Go extension |
true |
Commands
| Command |
Description |
TinyGo: Select Target |
Choose a target board |
TinyGo: Select SDK Version |
Switch between TinyGo versions |
TinyGo: Add SDK Path |
Add a TinyGo installation |
TinyGo: Build |
Build the project |
TinyGo: Flash |
Build and flash to device |
TinyGo: Run |
Run on simulator target |
TinyGo: Select Serial Port |
Choose serial port |
TinyGo: Start Serial Monitor |
Open serial terminal |
TinyGo: Show Binary Size |
Analyze memory usage |
TinyGo: Analyze Heap Allocations |
Find heap allocations |
TinyGo: Initialize TinyGo Project |
Create new project |
TinyGo: Configure IntelliSense |
Set up gopls for TinyGo |
TinyGo: Generate Makefile |
Create build scripts |
Keyboard Shortcuts
| Shortcut |
Command |
Ctrl+Shift+B |
Build |
Ctrl+Shift+F |
Flash |
Ctrl+Shift+M |
Serial Monitor |
Supported Boards
The extension supports all TinyGo targets including:
- Arduino: Uno, Nano, Mega, Nano 33 IoT, MKR1000, Zero
- Raspberry Pi: Pico, Pico W, Pico 2
- Espressif: ESP32, ESP32-C3, ESP32-C6, ESP8266, M5Stack
- Nordic: nRF52840, micro:bit, micro:bit V2
- STM32: Nucleo boards, Blue Pill, Discovery
- Adafruit: Feather, ItsyBitsy, Circuit Playground, PyGamer, PyPortal
- Seeed: XIAO, Wio Terminal
- Amken: Trio (STM32G0B1)
- And many more...
Supported Drivers
Browse and install drivers for:
- Sensors: BME280, DHT, MPU6050, VL53L1X, and more
- Displays: SSD1306, ST7789, ILI9341, E-Paper
- LEDs: WS2812/NeoPixel, APA102/DotStar
- Communication: LoRa, WiFi (ESP-AT), Bluetooth, CAN bus
- Motors: Servo, DC motors, TMC2209, TMC5160 stepper drivers
- Storage: SD cards, EEPROM, Flash
Troubleshooting
TinyGo not detected
- Ensure TinyGo is installed:
tinygo version
- Add the SDK path manually: "TinyGo: Add SDK Path"
- Check that
tinygo is in your PATH
IntelliSense errors with machine package
- Run "TinyGo: Configure IntelliSense" after selecting a target
- Reload the window after changing targets
- The extension uses TinyGo's cached GOROOT for proper package resolution
Build errors with Go extension
- The Go extension may conflict with TinyGo's custom GOROOT
- Ensure
tinygo.configureGoExtension is enabled
- Reload the window after changing targets
Flash fails
- Check that the correct port is selected
- Ensure the device is connected and in bootloader mode
- Verify you have write permissions to the serial port
Contributing
Contributions are welcome! Please feel free to submit issues and pull requests at GitHub.
License
LICENSE for details.
Acknowledgments
Brought to you by

Amken LLC - Virginia, USA
| |