Telefon ekranına dokunduğunuzda bir şeyin olmasını beklersiniz. Araba frenine bastığınızda ABS devreye girer. Çamaşır makineniz programın kaçıncı dakikasında olduğunu bilir. Bu olayların hiçbirinin arkasında bir masaüstü bilgisayar veya sunucu yoktur — hepsinin arkasında bir gömülü sistem vardır.
Bu yazının sonunda şunları anlayacaksınız: Gömülü sistemin ne olduğunu ve genel amaçlı bilgisayardan nasıl ayrıldığını; nerede kullanıldığını; donanım ve yazılım bileşenlerini; bu alanda öğrenmeniz gereken temel kavramları.
Bir gömülü sistem (embedded system), belirli bir görevi yerine getirmek üzere tasarlanmış, daha büyük bir cihazın içine entegre edilmiş bilgisayar sistemidir. "Gömülü" kelimesi buradan gelir — sistem, bir ürünün içine gömülmüştür ve kullanıcı çoğunlukla onun orada olduğunun farkında bile değildir.
Genel amaçlı bir bilgisayarla karşılaştıralım:
| Özellik | Genel Amaçlı Bilgisayar | Gömülü Sistem |
|---|---|---|
| Görev sayısı | Sonsuz (tarayıcı, oyun, ofis) | Tek veya az sayıda |
| Kaynak kullanımı | Yüksek (GB RAM, GHz CPU) | Kısıtlı (KB–MB RAM, MHz CPU) |
| İşletim sistemi | Windows, macOS, Linux | Genellikle yok veya RTOS |
| Kullanıcı arayüzü | Masaüstü, ekran | Genellikle yok |
| Güç tüketimi | Watt–yüzlerce Watt | Mikrowatt–mW |
| Maliyet | Yüksek | Çok düşük (birkaç sent–birkaç dolar) |
{anecdote:Dünyada her yıl üretilen mikrodenetleyici sayısı, kişisel bilgisayar sayısının yaklaşık 50 katıdır. Çevrenizde gördüğünüz her ekranlı cihazın içinde en az bir, çoğunlukla onlarca gömülü sistem vardır.}
Modern bir araç 70 ila 100 arasında elektronik kontrol ünitesi (ECU) içerir. Her biri ayrı bir gömülü sistemdir:
Bu alanda güvenilirlik hayati önemdedir:
Gömülü sistemlerin kalbidir. CPU, Flash bellek, SRAM ve periferalleri (GPIO, Timer, ADC, UART, SPI, I²C) tek bir silikon çip üzerinde birleştirir.
/* ATmega328P'de PA5 pinini çıkış yapıp LED yakma */
DDRA |= (1 << PA5); /* PA5 → çıkış */
PORTA |= (1 << PA5); /* PA5 → HIGH */
Bu iki satır; bir register adresine bit yazmak anlamına gelir. Arada işletim sistemi yoktur, sürücü yoktur, API yoktur — donanım anında tepki verir.
Gömülü sistem, gerçek dünyayla sensörler aracılığıyla veri alır, aktüatörler aracılığıyla etki eder:
Tasarımın kritik parçasıdır. Pil ile çalışan cihazlarda MCU'nun uyku modları (deep sleep, standby) yıllarca pil ömrü sağlar. Bazı MCU'lar mikrowatt seviyesinde uyku akımı çeker.
Gömülü sistemler nadiren izole çalışır. Diğer sistemlerle konuşmak için:
Gömülü yazılım, genel amaçlı yazılımdan farklı bir katman yapısına sahiptir:
Uygulama Kodu ← sizin yazdığınız mantık
─────────────────────
HAL / Sürücüler ← peripheral soyutlama (STM32 HAL, AVR libc)
─────────────────────
CMSIS / Başlangıç Kodu ← CPU başlatma, kesme vektörleri
─────────────────────
Donanım (MCU Silikon)
Başlangıç seviyesinde çoğunlukla register seviyesinde çalışırsınız — HAL'in altına inerek peripheral register'larını doğrudan yapılandırırsınız. Bu, donanımın nasıl çalıştığını anlamanın en doğrudan yoludur.
Gömülü sistemlerin büyük bir kısmı gerçek zamanlı kısıtlar altında çalışır: bir görevin belirli bir süre içinde tamamlanması zorunludur.
Sert gerçek zamanlı (hard real-time): Süre aşımı kabul edilemez. Hava yastığı kontrolcüsü 30 ms içinde ateşlemelidir, bir milisaniye gecikme bile kabul edilmez.
Yumuşak gerçek zamanlı (soft real-time): Ara sıra gecikme tolere edilebilir, ama sistem kalitesini düşürür. Video akışı, ses işleme.
Bu gereksinim, gömülü sistemlerde çöp toplayıcılı diller veya öngörülemeyen gecikme kaynakları yaratabilecek her şeyin kaçınıldığı anlamına gelir.
{anecdote:İlk gerçek zamanlı gömülü sistem uygulamalarından biri Apollo Güdüm Bilgisayarı'dır (1960'lar). 4 KB RAM ve 72 KB ROM ile Ay'a iniş manevralarını yönetiyordu. Yazılımı bugün bile çalışırdı.}
Gömülü sistemler dünyasına girmek için ihtiyacınız olan temel kavramlar şunlardır:
| Konu | Neden Gerekli |
|---|---|
| C programlama dili | Register erişimi, bellek yönetimi, taşınabilir kod |
| Dijital elektronik temelleri | Voltaj seviyeleri, pull-up/down, debounce |
| Mikrodenetleyici mimarisi | CPU, bellek haritası, register yapısı |
| GPIO, Timer, ADC, UART | En temel peripheral'lar |
| Veri tipleri ve bit işlemleri | uint8_t, uint16_t, ` |
Bu yazı, o yolculuğun başlangıç noktasıdır. Sonraki makaleler ve dersler her konuyu uygulamalı olarak ele alır.
Kurslara göz at →