Embedded Go
- Go kursu
- Uzman
- Ders 28/34
- 4 dk
Go'nun gömülü sistemlerde kullanımını öğrenirsin.
Gömülü Linux'ta Go
Raspberry Pi, router ya da endüstriyel cihaz gibi gömülü Linux sistemlerinde Go çok kullanışlıdır: tek statik ikili, bağımlılık yok, kolay çapraz derleme.
CGO_ENABLED=0 GOOS=linux GOARCH=arm GOARM=7 go build -ldflags="-s -w" -o sensor
scp sensor pi@cihaz:/usr/local/bin/-ldflags="-s -w" sembol ve hata ayıklama bilgisini atarak ikiliyi küçültür.
Donanımla konuşmak
Linux'ta donanım çoğu zaman dosya gibi görünür: GPIO, I²C ve sensörler /sys ya da /dev altında okunur. periph.io gibi saf Go kütüphaneleri bunları sarmalar. Kısıtlı bellekte GOMEMLIMIT ayarlamak ve gereksiz goroutine'lerden kaçınmak önemlidir.
b, _ := os.ReadFile("/sys/class/thermal/thermal_zone0/temp")
// "48312\n" → 48.3 °CUygulama Sıcaklık ayrıştır
Sensör dosyasından okunmuş "48312\n" metnini strings.TrimSpace ve strconv.Atoi ile sayıya çevir, 1000'e bölerek santigrat yap ve %.1f ile yazdır.
Başlangıç kodu
package main
import (
"fmt"
"strconv"
"strings"
)
func main() {
// buraya yaz
}Örnek çözüm
package main
import (
"fmt"
"strconv"
"strings"
)
func main() {
ham := "48312\n"
n, err := strconv.Atoi(strings.TrimSpace(ham))
if err != nil {
fmt.Println(err)
return
}
fmt.Printf("%.1f\n", float64(n)/1000)
}Beklenen çıktı
48.3
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 32 bit ARMv7 için hangi değişken eklenir?
- GOARM=7 Doğru cevap
- GOARCH=arm64
- GOAMD64=v3
- GOOS=arm
Açıklama: GOARCH=arm 32 bit ARM'ı seçer; GOARM ise hangi ARM sürümüne göre kod üretileceğini belirler.
2 İkiliyi küçült
go build -ldflags="____" -o sensor
go build -ldflags="-s -w" -o sensor
Açıklama: -s sembol tablosunu, -w DWARF hata ayıklama bilgisini atar.
3 Ayar ve amaç
| Kavram | Anlamı |
|---|---|
GOARCH=arm |
32 bit ARM |
GOARM=7 |
ARMv7 kodu |
-ldflags="-s -w" |
Küçük ikili |
/sys/class |
Donanım dosyaları |