Özet - Gömülü C++
- C++ kursu
- Uzman
- Ders 36/47
- 5 dk
MMIO, free-standing ve interrupt'ı birleştirerek bir LED yakma uygulaması yazarsın.
Özet - Gömülü C++
Bu grupta gömülü C++'ın temel araçlarını gördün: gömülü sistem, MMIO, freestanding, interrupt ve real-time. Hepsi kısıtlı donanım üzerinde güvenilir çalışma sağlar.
Şimdi bunları bir volatile değişken örneğinde birleştireceksin. volatile ile paylaşılan değişkenleri ve ISR-style bayrakları bir arada kullanacaksın; bu, gömülü programların nasıl kurulduğunu gösterir.
Volatile + bayrak
Gömülü bir programda volatile değişkenler hem donanım kayıtçısına işaret eder hem de ISR ile paylaşılan bayrak olarak kullanılır. counter bir sayaç, ready bir bayrak olabilir; ikisi de volatile olmalıdır.
Örnek: volatile int counter = 0; volatile bool ready = false;. counter = 7; ready = true; ataması ISR'nin işi bitirdiğini ve veriyi hazırladığını bildirir. Ana döngü ready'i kontrol eder, counter'ı okur. volatile olmadan derleyici bu erişimleri bir kez yapıp atlayabilir.
Uygulama Volatile counter + bayrak yaz
Global volatile int counter = 0; ve volatile bool ready = false; tanımla. main içinde counter = 7;, ready = true; ve std::cout << counter + (ready ? 1 : 0); yaz.
Başlangıç kodu
#include <iostream>
// counter ve ready volatile değişkenlerini buraya tanımla
int main() {
// counter'ı 7 yap, ready'yi true yap ve toplamı yazdır
return 0;
}Örnek çözüm
#include <iostream>
volatile int counter = 0;
volatile bool ready = false;
int main() {
counter = 7;
ready = true;
std::cout << counter + (ready ? 1 : 0);
return 0;
}Beklenen çıktı
8
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 MMIO için hangi anahtar kelime zorunludur?
volatile std::uint32_t* reg = ...;- const
- inline
- static
- volatile Doğru cevap
Açıklama: volatile, derleyicinin donanım erişimini eniyilemesini engeller.
2 volatile işaretçiyi tamamla
volatile std::uint32_t* ____ = reinterpret_cast<volatile std::uint32_t*>(&storage);
volatile std::uint32_t* reg = reinterpret_cast<volatile std::uint32_t*>(&storage);
Açıklama: reg, storage adresine işaret eder.
3 Aracı özelliğine eşle
| Kavram | Anlamı |
|---|---|
embedded |
Kısıtlı kaynak |
MMIO |
Bellek eşlemeli I/O |
volatile |
Donanım erişimi |
real-time |
Belirli zaman |