Gömülü Sistemler
- Gömülü Sistem adı ne anlama gelmektedir?
- Bir gömülü sistemin planlanması aşamasında göz önünde bulundurulması gereken unsurlar nelerdir?
- Bir gömülü sistem uygulamasında kullanılabilecek hesaplama üniteleri neler olabilir? Avantaj ve dezavantajları ile karşılaştırarak açıklayınız.
- RISC-V organizasyonu nedir?
MCU & MPU Mimarisi
- Bir MCU’nun işlemci çekirdeği mimarisi aşağıda verilmektedir.

Buna göre;
- Bu diyagramda yer alan “Program Counter” (PC) hangi görevi üstlenir?
- “Memory Address Register” (MAR) ve “Memory Data Register” (MDR) arasındaki fark nedir?
- Kontrol Birimi (Control Unit) CPU içerisindeki iş akışını nasıl düzenler?
- ALU (Aritmetik Mantık Birimi) hangi temel işlemleri yerine getirir?
- Sistem saati (System Clock) CPU’nun çalışmasını nasıl etkiler?
- Interrupt kavramını ve sistem performansı üzerindeki etkilerini açıklayınız. Kesme (interrupt) mekanizmasının normal program akışını nasıl değiştirdiğini, kesme vektör tablosunun rolünü ve kesme servis rutinlerinin (ISR) işleyiş biçimini detaylandırınız. Ayrıca, kesme meydana geldiğinde CPU’nun hangi adımları izlediğini ve sistemin bu durumdan nasıl güvenli bir şekilde çıktığını açıklayınız.
- GPIO pinlerinde buffer (ara bellek) devrelerinin ve enable hattının (enable line) rolü nedir? Hem giriş hem de çıkış yönünde veri akışını yöneten buffer devrelerinin nasıl çalıştığını, enable hattının bu süreçteki fonksiyonunu ve inverting (ters çevirme) mekanizmasının hangi durumlarda kullanıldığını açıklayınız.
- ADC’nin analog sinyali dijital forma çevirme sürecini, örnekleme hızının ve örnek bit genişliğinin önemini değerlendiriniz.
- DMA kontrolcüsünün (DMA Controller) veri transferlerini nasıl kendi başına yönetebildiğini, CPU üzerindeki yükü hangi yöntemlerle azalttığını açıklayınız.
- Watch Dog Timer’nin temel çalışma prensiplerini, zaman aşımı süresi sonunda sistemin nasıl otomatik olarak yeniden başlatıldığını ve yazılım tarafından düzenli olarak “yenileme” (kick) işleminin neden kritik olduğunu bir örnek ile açıklayınız.
Arayüzler (UART)
- Bir UART paketinde 1 start bit, 8 data bit, even parity bit ve 1 stop bit kullanıldığında, nominal baud rate 9600 olduğuna göre efektif veri aktarım hızı kaç bit/s’dir?
- Verilen 8 bit veri “10101100” için even parity bit değeri nedir?
- Verilen 8 bit veri “11010110” için odd parity bit değeri nedir?
- Bir sistemde 8 data bit, parity’siz, 1 start bit ve 1 stop bit kullanılarak UART ile veri iletimi yapıldığında, baud rate 38400 olduğuna göre efektif veri aktarım hızı ve saniyede gönderilebilecek bit sayısı nedir?
- Aşağıda verilen UART transfer diyagramına göre karşı tarafa gönderilen 8 bitlik bilgi nedir? Even Parity için gönderilen parity bit’i doğru mudur?
- Arayüzler (CAN)
- CAN mesaj çerçevesinin yapısında hangi alanlar bulunur?
- CAN arayüzünde mesaj iletiminde arbitraj süreci nasıl gerçekleşir?
- CAN protokolünde hata tespiti nasıl gerçekleştirilir?
Arayüzler (I2C)
- I2C arayüzünde master ve slave cihazlar arasındaki haberleşme nasıl organize edilir ve bu cihazlar hangi sinyalleri paylaşırlar?
- I2C hattında kullanılan pull-up dirençlerinin görevi nedir ve neden bu dirençler olmadan iletişim sağlanamaz?
- Bir veri aktarımı sırasında ACK/NACK bitleri hangi durumlarda kullanılır ve bu bitler iletişim akışını nasıl etkiler?
- Bir I2C Master cihazı 0x15 adresli cihazın içindeki 0x10 nolu saklayıcıyı okumak istiyor. Bu saklayıcıdaki değerin ise 0x5 olduğu bilinmektedir. Buna göre master ve slave arasındaki iletim yapmayı sağlayan DATA (SDA) kablosundaki beklenen aktiviteyi bir waveform olarak çiziniz. Çizimde CLOCK (SCL) hattındaki aktiviteyi de gösteriniz.
- Aşağıda bir I2C yazma aktivitesi diyagramı verilmektedir. Buna göre hangi adresli cihazın hangi saklayıcısına ne bilgisi yazılmıştır?
Arayüzler (SPI)
- SPI protokolünde kullanılan hatlar (SCK, MOSI, MISO, SS) nelerdir ve her birinin işlevi nedir?
- SPI modları (Clock Polarity ve Clock Phase) hangi kombinasyonlardan oluşur ve veri örnekleme zamanlamasını nasıl etkiler?
- Birden fazla slave cihazın bağlandığı SPI hattında “Chip Select” (SS) sinyalleri nasıl yönetilir?
- Aşağıda verilen SPI waveform’una göre (CPOL=0, CPHA=0), gönderilen ve alınan veri nedir?
Sensörler ile Sistem Tasarımı – Baremetal
Bu başlık altındaki soruları aşağıda UART, I2C, SPI erişim örnekleri içeren kod parçasındaki sözdizimi kullarına uyacak şekilde yanıtlayabilirsiniz.
int main(void) {
init_system_clock();
init_gpio();
init_i2c();
init_uart();
init_spi();
uint8_t sensor_data[2];
char message[50];
uint8_t sensor_address = 0x48; // Örnek I2C cihaz adresi
uint8_t sensor_reg = 0x00; // Okunacak kayıt
while (1) {
i2c_read(sensor_address, sensor_reg, 2, sensor_data);
sprintf(message, "Sensor Data: %02X %02X\n", sensor_data[0], sensor_data[1]);
uart_send(message);
spi_transfer(sensor_data, 2);
uint8_t button_state = gpio_read(BUTTON_PIN);
if (button_state) {
gpio_write(LED_PIN, 1);
uart_send("Button pressed: LED ON\n");
} else {
gpio_write(LED_PIN, 0);
uart_send("Button not pressed: LED OFF\n");
}
delay(1000); // 1 saniye bekle
}
return 0;
}
- Bir ev otomasyon sisteminde, ortam sıcaklığını izlemek amacıyla bir sıcaklık sensörü kullanılmaktadır. Bu sensör, I2C arayüzü ile MCU’ya bağlıdır ve iki register içermektedir:
0. Register: Sensörün aktif/pasif durumunu kontrol etmekte olup, 0 değeri sensörün kapalı olduğunu, 1 değeri ise sensörün aktif olduğunu göstermektedir.
1. Register: 8-bitlik sıcaklık ölçüm değerini içermektedir.
Sistem, aşağıdaki işlemleri gerçekleştirecek şekilde tasarlanacaktır:
– I2C üzerinden sensörün 0. register’ı okunarak, sensörün aktif olup olmadığı kontrol edilecektir.
– Eğer sensör kapalı ise, I2C üzerinden gerekli komut gönderilerek sensör açılacaktır.
– Sensör aktif olduğunda, 1. register’dan 8-bitlik sıcaklık verisi okunacaktır.
– Okunan sıcaklık değeri, UART arayüzü üzerinden “Mevcut Sıcaklık: XX °C” formatında iletilecektir.
– Bu işlem her 1 saniyede bir tekrarlanacaktır.
Yukarıdaki senaryoyu gerçekleştirecek baremetal C kodunu yazınız. - Bir ev otomasyon sisteminde, odada insan varlığını algılayarak ışıkları otomatik olarak kontrol eden bir sistem tasarlanacaktır. Sistemde, I2C arayüzüne bağlı, iki register içeren bir varlık sensörü bulunmaktadır:
0. Register: Sensörün çalışma durumunu içermektedir. Bu register 0 değerini içeriyorsa sensör kapalı; 1 değerini içeriyorsa sensör aktif durumdadır.
1. Register: İnsan varlığını algılayan 8-bitlik veri içermektedir. (0: İnsan yok, 1: İnsan var)
Ayrıca, MCU üzerinde bir GPIO çıkışı, odadaki ışığın kontrolünü sağlamaktadır (HIGH: Işık açık, LOW: Işık kapalı).
Sistem, aşağıdaki işlemleri gerçekleştirmektedir:
– I2C üzerinden sensörün 0. register’ı okunarak sensörün aktif olup olmadığı kontrol edilmektedir.
– Eğer sensör kapalı ise, I2C komutları kullanılarak sensör aktif hale getirilmektedir.
– Sensör aktif olduğunda, I2C üzerinden 1. register’dan insan varlığı durumu okunmaktadır.
– Eğer sensör insan varlığı tespit ederse, GPIO çıkışı kullanılarak odanın ışığı açılmaktadır.
– Işık, açıldıktan sonra 10 saniye boyunca açık kalmakta, sonrasında otomatik olarak kapatılmaktadır.
– Her işlem döngüsünün sonunda UART üzerinden “İnsan var: Işık Açıldı” veya “İnsan Yok: Işık Kapalı” mesajı gönderilmektedir.
– Tüm bu işlemler, 1 saniyelik periyodik döngüler şeklinde tekrarlanmaktadır.
Yukarıdaki senaryoyu gerçekleştirecek baremetal C kodunu yazınız.
Sensörler ile Sistem Tasarımı – FreeRTOS
- FreeRTOS nedir? FreeRTOS’un temel tanımı, özellikleri ve gerçek zamanlı işletim sistemi olarak kullanım avantajları nelerdir?
- FreeRTOS’un gömülü sistemlerde tercih edilmesinin nedenleri, düşük kaynak tüketimi, esnek görev yönetimi ve güvenilirlik gibi avantajları nelerdir?
- Görevlerin oluşturulması, zamanlanması (preemptive vs. cooperative scheduling) ve senkronizasyon araçları (semafor, mutex, kuyruk) kullanılarak çoklu görevlerin yönetimi nasıl sağlanır?
- Bir akıllı ev sisteminde, oda içinde hareket algılandığında hem uyarı mesajı gönderilmesi hem de aydınlatmanın (LED kontrolü) aktif hale getirilmesi gerekmektedir. Bu sistemde, FreeRTOS kullanılarak iki farklı fonksiyon paralel olarak çalıştırılacaktır:
– Hareket İzleme Fonksiyonu: Belirli aralıklarla hareket sensöründen (örneğin, dijital giriş pininden) veri okuyacaktır. Hareket tespit edildiğinde, bu bilgiyi bir kuyruk (queue) aracılığıyla diğer göreve iletecektir.
-Raporlama ve LED Kontrol Fonksiyonu: Kuyruktan gelen hareket bilgisine göre, LED’i aktif hale getirecek (örneğin, GPIO çıkışı ile LED açılacak) ve UART üzerinden “Hareket Algılandı” mesajını gönderecektir. LED 5 saniye süre ile açık kaldıktan sonra otomatik olarak kapatılacaktır.
Uygulamada, bu iki farklı fonksiyonun (hareket izleme ve raporlama/LED kontrol) ayrı FreeRTOS görevleri olarak tanımlanması ve paralel olarak çalıştırılması gerekmektedir. Ayrıca, görevler arası iletişim için kuyruk veya semafor gibi FreeRTOS senkronizasyon araçlarının kullanımı da zorunludur.
Bu senaryoya göre, FreeRTOS kullanarak hareket sensörü verilerini okuyan ve bu veriye göre LED kontrolü ile UART üzerinden mesaj ileten bir uygulama geliştirin. Kodunuzda en az iki farklı fonksiyon tanımlanmalı (örneğin, “Hareket İzleme Fonksiyonu” ve “Raporlama ve LED Kontrol Fonksiyonu”), bu fonksiyonlar FreeRTOS görevleri olarak paralel başlatılmalı ve görevler arası iletişim kuyruk (queue) veya semafor kullanılarak sağlanmalıdır. FreeRTOS c kodunu yazınız.
Sensörler ile Sistem Tasarımı – Embedded Linux
- Embedded Linux nedir? FreeRTOS ve baremetal uygulamalarla karşılaştırıldığında avantaj ve dezavantajlarını yorumlayınız.
- Embedded Linux ortamında bash scriptlerinin kullanımıyla otomasyon nasıl sağlanır?