Getting started
Updated: 2025-08-21
Prerequisites
-
Go complier
You can download it from go.dev/dl.
-
Git command
To install git on Linux use the package manager provided by your Linux distribution (apt, pacman, rpm, …).
Windows users may check the git for Windows website.
The Mac users may use the git command provided by the Xcode commandline tools. Another way is to use the Homebrew package manager.
-
Alternatively you can use the Teensy 4.x or one of the supported STM32 boards.
-
It’s needed if you want to use our tool (egtool) to program your board. But you can use a hardware-specific tool instead, for example the picotool for Raspberry Pi Pico 2.
Follow the instruction provided by gousb. Windows users should read this gousb note.
Embedded Go toolchain
The Embedded Go is released as as Go toolchain. All you need to get started is this toolchain, along with a simple utility for loading compiled programs onto your hardware.
-
Install the Embedded Go toolchain.
Make sure the
$GOPATH/bindirectory is in yourPATH, as tools installed with thego installcommand will be placed here. If you didn’t set theGOPATHenvironment variable manually you can find its default value using thego env GOPATHcommand.Then install the Embedded Go toolchain using the following two commands:
go install github.com/embeddedgo/dl/go-embedded@latest go1.24.5-embedded download -
Install egtool.
go install github.com/embeddedgo/tools/egtool@latest
First program
As an example we will write a simple program for Raspberry Pi Pico 2. See also the similar descriptions for Teensy 4.x and STM32.
-
Create a project directory containing the
main.gofile with your first Go program for RPi Pico 2.package main import ( "time" "github.com/embeddedgo/pico/devboard/pico2/board/leds" ) func main() { for { leds.User.Toggle() time.Sleep(time.Second / 2) } } -
Initialize your project.
go mod init firstprog go mod tidy -
Copy the
go.envfile suitable for your board (here is one for Pico 2 and another one for a board with 16 MB flash). -
Compile your first program.
export GOENV=go.env go buildor
GOENV=go.env go buildor
egtool buildThe last one is like
GOENV=go.env go buildbut looks for thego.envfile up the current module directory tree. -
Connect your Pico 2 to the computer in the BOOT mode (press the onboard button while connecting it to the USB).
-
Load and run.
egtool load
More information
Read Embedded Go blog.
Ask questions on the Embedded Go user group or reddit.