CodeBlanks Logo Icon CodeBlanks

Embedded Go

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 °C

Uygulama 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

main.go
package main

import (
    "fmt"
    "strconv"
    "strings"
)

func main() {
    // buraya yaz
}

Örnek çözüm

main.go
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

Soru
go build -ldflags="____" -o sensor
Cevap
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ı

Uzman bölümündeki tüm dersler