"Bare metal" firmware nedir?

taydin

Timur Aydın
Staff member
Katılım
24 Şubat 2018
Mesajlar
21,939
Firmware yazılımları, kategori olarak eskiden normal masaüstü yazılımlardan çok keskin bir şekilde ayrılıyordu. Ama günümüzde işlemciler artık o kadar yüksek performanslı ki, iki yazılım türü arasındaki farklar giderek azalıyor.

Genel olarak firmware dendiği zaman, bir elektronik cihazın içinde çalışan, donanımı doğrudan kontrol eden, gerçek zamanlı çalışan, ve kullanıcı ile doğrudan etkileşim kurmayan yazılımlar akla geliyor. Mesela internet servis sağlayıcının ADSL modeminde bir firmware yazılım çalışır ve bu yazılımı bir kere yapılandırırsın, bir daha da sorun çıkmadıkça ellemezsın. "Firm" burada sabit, değişmeyen, kalıcılığı ifade ediyor.

Firmware yazılımlarda da temelde iki kategori şekilleniyor günümüzde.

1) Bare metal: Herhangi bir işletim sistemi kullanmadan, doğrudan C/C++ ile yazılmış bir program akla geliyor. İşletim sistemlerinin sağladığı birçok kolaylık , örneğin birden fazla görevin paralel çalıştırılması (multithreading), senkronizasyon, gibi şeyler yoktur. Programda görev paylaşımının çok dikkatli bir tasarım ile bizzat programcı tarafından yapılması lazım.

2) RTOS: "Real Time Operating System" kısaltmasıdır. Eğer bir programda, bağımsız birden fazla görevin paralel olarak çalışması gerekiyorsa, bir RTOS kullanılması artık zorunlu hale gelmiş demektir. Bare metal bir firmware'de görev paylaşımı çok zordur. Programcı bunu başarsa bile hata ayıklama çok uzun sürmüştür. Köklü bir değişiklik gerektiğinde bütün hata ayıklama sürecinin tekrar yaşanması gerekir. Ama RTOS ile paralel görevler oluşturmak hem çok kolaydır, hem de oluşturulan görevler için belli zamanlama garantileri vardır. Her göreve bir öncelik tanımlanabilir (priority), düzenli peryotlarla bir görev çalıştırılabilir, iki görev arasında haberleşme ve senkronizasyon sağlanabilir.

MCU'larda son derece yaygın bir kullanımı olan FreeRTOS ile ilgili aşağıdaki siteden ilave bilgi edinilebilir:


Özellikle (eski versiyonu için olsa da) bur RTOS ile ilgili bir giriş niteliğinde olan "Mastering the FreeRTOS Real Time Kernel - a Hands On Tutorial Guide" dokümanı faydalı oluyor.


Bir kere işin temelini gördükten sonra FreeRTOS un kaynak kodu dağıtımında yer alan "Reference Manual" kullanılabilir.
 
Bir RTOS'u başarılı bir şekilde kullanmak için "multithreading" denen kavram üzerinde belli bir bilgi ve tecrübe gerekiyor. Yoksa 5 tane görev var, başlat bunları çalışsınlar paralel olarak demekle olmuyor. Gerçek bir programda bu görevlerin kendi aralarında mutlaka etkileşim oluyor, hatta sadece görevler değil, görevler ile sistem kesmeleri (interrupt) arasında da etkileşim gerekli oluyor. Bu etkileşimin sorunsuz gerçekleşmesi için multithreading programlamada karşımıza çıkan senkronizasyon yapıları ve metotlarını iyice öğrenmemiz lazım. Bu konudaki dokümanlar her işletim sistemine özgüdür, ama Linux için benim tavsiye edebileceğim kitap, David R Butenhof'un "Programming with POSIX Threads" kitabı


Linux'taki sistemi öğretmekle kalmıyor, genel kavramları da anlatıyor. Bu işi linux için öğrendikten sonra, diğer işletim sistemlerinde aynı bilgiyi kullanabiliyorsun. Tek öğrenmen gereken, aynı işi yapan API fonksiyonunun adını tespit etmek.
 

Forum istatistikleri

Konular
5,915
Mesajlar
100,906
Üyeler
2,501
Son üye
oguz0606

Son kaynaklar

Son profil mesajları

Lyewor_ wrote on taydin's profile.
Merhabalar. Elektrik laboratuvarınız varsa bunun hakkında bir konunuz var mı acaba? Sizin laboratuvarınızı merak ettim de :)
Lyewor_ wrote on taydin's profile.
Merhabalar forumda yeniyim! Bir sorum olacaktı lcr meterler hakkında. Hem bobini ölçen hemde bobin direnci ölçen bir lcr meter var mı acaba?
gruptaki arkadaşlara selamlar. sıteyi bu gün fark ettim. Asansör için 2x7 segment LCD gösterge üretmek istiyorum. acaba bu sayfadaki arkadaşlardan destek alabilirmiyim. LCD nin mantık açılımı ektedir.
deneyci wrote on TA3UIS's profile.
Selam.
Amatör telsiz lisansı nasıl alınıyor?
Lisansı olmayanı forumlarına almıyorlar. :)
Bilgi alamıyoruz.
m.white wrote on Altair's profile.
İyi akşamlar.Arabanız ne marka ve sorunu nedir.Ben araba tamircisi değilim ama tamirden anlarım.
Back
Top