crazy_coder
Moderatör
- Katılım
- 20 Şub 2026
- Mesajlar
- 204
- Tepkime puanı
- 0
- Puanları
- 16
Gömülü Sistemler: Donanım ve Yazılımın Buluşması
Gömülü programlamada kaynaklar (RAM ve İşlemci hızı) sınırlıdır. Bu yüzden kodun verimliliği ve bellek yönetimi hayati önem taşır. C++'ın nesne yönelimli özellikleri kod düzenini sağlarken, C'nin yalınlığı performansı zirveye taşır.
1. Arduino: Hızlı Prototipleme ve Kolay Giriş
Arduino, aslında ATMEL tabanlı bir mikrodenetleyici üzerine inşa edilmiş bir ekosistemdir. C++ tabanlı bir dil kullanır ancak karmaşık kısımları kütüphanelerle gizleyerek size iki temel fonksiyon sunar:
setup(): Cihaz açıldığında bir kez çalışır. Pin modları ve haberleşme ayarları burada yapılır.
loop(): Program açık olduğu sürece sonsuz bir döngüde çalışır. Oyun döngüsüne benzer.
C++:
void setup() {
pinMode(13, OUTPUT); // 13. pini cikis olarak ayarla
}
void loop() {
digitalWrite(13, HIGH); // LED'i yak
delay(1000); // 1 saniye bekle
digitalWrite(13, LOW); // LED'i sondur
delay(1000);
}
2. STM32: Endüstriyel Güç ve ARM Mimarisi
STM32, 32-bit ARM Cortex-M çekirdeğine sahip, çok daha yüksek performanslı ve karmaşık bir mikrodenetleyici ailesidir. Arduino'nun aksine, burada donanımın her detayına (Register seviyesi) hakim olmanız gerekir.
HAL (Hardware Abstraction Layer): Donanım detaylarını basitleştiren, ST'nin sunduğu bir kütüphane katmanıdır.
Interrupts (Kesmeler): Bir olay olduğunda (buton basılması gibi) ana döngüyü durdurup hatayı işleyen sistemlerdir.
3. Arduino vs. STM32 Karşılaştırması
| Özellik | Arduino (AVR) | STM32 (ARM) |
|---|---|---|
| İşlemci Mimarisi | 8-bit | 32-bit |
| Hız | 16 MHz | 72 MHz - 400+ MHz |
| Gerilim | 5V | 3.3V |
| Zorluk Seviyesi | Başlangıç (Hobi) | İleri (Endüstriyel) |
4. Gömülü C/C++'ta Kritik Kavramlar
Gömülü sistem kodlarken normal masaüstü programlamadan farklı bazı kurallara dikkat etmelisiniz:
volatile Değişkenler: Derleyiciye, "Bu değişken her an dışarıdan (donanımdan) değişebilir, optimize etme!" demenizi sağlar.
Bit Manipülasyonu: &, |, ^ ve << gibi operatörlerle bir register içindeki tek bir biti değiştirmek çok yaygındır.
Pointer Kullanımı: Donanım adreslerine (Memory-mapped I/O) doğrudan erişmek için pointerlar vazgeçilmezdir.
Sonuç
Eğer yeni başlıyorsanız ve hızlıca bir proje (akıllı saksı, engelleyen robot vb.) çıkarmak istiyorsanız Arduino en mantıklı yoldur. Ancak profesyonel bir gömülü sistem mühendisi olmak, RTOS (Real-Time Operating Systems) öğrenmek ve karmaşık kontrol sistemleri kurmak istiyorsanız STM32 ve ARM dünyasına girmelisiniz.