TinyGo
- Go kursu
- Uzman
- Ders 29/34
- 4 dk
TinyGo alternatif derleyicisini öğrenirsin.
TinyGo
TinyGo, LLVM tabanlı alternatif bir Go derleyicisidir. Mikrodenetleyiciler (Arduino, ESP32, Raspberry Pi Pico) ve küçük WASM modülleri için tasarlanmıştır; standart Go'nun MB'lık ikilisi yerine KB'lık çıktılar üretir.
tinygo flash -target=pico ./blink
tinygo build -o app.wasm -target=wasm ./webBedeli: standart kütüphanenin bir kısmı ve reflect desteği sınırlıdır; GC daha basittir.
machine paketi
TinyGo'nun machine paketi pinlere doğrudan erişir. Klasik "LED yak-söndür" örneği:
led := machine.LED
led.Configure(machine.PinConfig{Mode: machine.PinOutput})
for {
led.High()
time.Sleep(500 * time.Millisecond)
led.Low()
time.Sleep(500 * time.Millisecond)
}Kısıtlı RAM'de (ör. 264 KB) heap ayırmayı en aza indirmek ve sabit boyutlu diziler kullanmak önemlidir.
Uygulama Yanıp sönme deseni
Donanım olmadan blink mantığını yaz: type Pin struct{ acik bool } ve func (p *Pin) Toggle() durumu tersine çevirsin. Bir pini 3 kez Toggle et ve her adımda durumu yazdır.
Başlangıç kodu
package main
import "fmt"
func main() {
// buraya yaz
}Örnek çözüm
package main
import "fmt"
type Pin struct{ acik bool }
func (p *Pin) Toggle() { p.acik = !p.acik }
func main() {
led := &Pin{}
for i := 0; i < 3; i++ {
led.Toggle()
fmt.Println(led.acik)
}
}Beklenen çıktı
true false true
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 İşletim sistemi olmayan bir mikrodenetleyici için hangisi uygundur?
- GOOS=linux go build
- GOOS=js go build
- cgo
- TinyGo Doğru cevap
Açıklama: Standart Go bir işletim sistemi bekler; TinyGo doğrudan donanım (bare metal) hedeflerini destekler.
2 Karta yükle
tinygo ____ -target=pico ./blink
tinygo flash -target=pico ./blink
Açıklama: tinygo flash derleyip programı doğrudan karta yazar.
3 Derleyici ve hedef
| Kavram | Anlamı |
|---|---|
go build |
Sunucu, masaüstü |
tinygo flash |
Mikrodenetleyici |
tinygo -target=wasm |
Küçük WASM |
machine.LED |
Kart üstü LED |