Installation de TinyGo
Un memo pour préparer son environnement de développement TinyGo.
Pré-requis
Pour compiler TinyGO, il est nécessaire de disposer de llvm, clang :
$ pacman -Q go llvm llvm-libs clang
go 2:1.23.2-1
llvm 18.1.8-4
llvm-libs 18.1.8-4
clang 18.1.8-2
Compilation et installation Tinygo
# Téléchargement des sources de TinyGo
git clone https://github.com/tinygo-org/tinygo.git
cd tinygo
# Switch sur la branche de développement
git checkout dev
# Mise à jour des dépendances
git submodule update --init --recursive
# Générer les descripteurs de devices
go work use . // Needed to build tools/gen-device-avr
make gen-device
# Récupérer les sources de llvm
make llvm-source // nb: Tinygo n'a pas besoin des sources llvm , mais a besoin des fichiers du répertoire "llvm-project/compiler-rt"
# Mise à jour de go-llvm
go get tinygo.org/x/go-llvm
# Compilation (Le flag llvm21 est optionnel)
go build -tags llvm21
go install
NB: En cas d'upgrade, il peut être nécessaire de rejouer les commandes suivantes:
$ go get tinygo.org/x/go-llvm # Mise à jour go-llvm
$ git pull --recurse-submodules # Mise à jour des sub-modulesTest sur un RP2040
Le plus simple reste de récupérer le code LED Blink ici: https://tinygo.org/docs/tutorials/blinky/
package main
import (
"machine"
"time"
)
func main() {
led := machine.LED
led.Configure(machine.PinConfig{Mode: machine.PinOutput})
for {
println("Hello")
led.Low()
time.Sleep(time.Millisecond * 500)
led.High()
time.Sleep(time.Millisecond * 500)
}
}
$ # Pour flasher la carte
$ tinygo flash -target=pico
# Pour lire la console UART:
tinygo monitor -target=pico
Hello
Hello
...