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
# Préparation des sources
git clone https://github.com/tinygo-org/tinygo.git
cd tinygo
git checkout dev
# Mise à jour des dépendances
git submodule update --init --recursive
make gen-device
make llvm-source // nb: Tinygo n'a pas besoin des sources llvm , mais a besoin des fichiers du répertoire "llvm-project/compiler-rt"
# compilation
go build
go install
Si vous souhaitez spécifier la version de llvm de votre système, vous pouvez utiliser un tag:
$ go build -tags llvm18
$ go install
NB:
A voir s'il est nécessaire de mettre à jour les sous modules:
$ git pull --recurse-submodules
Test 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
...