Gömülü Yazılımın Temelleri: HAL ve API nedir?

Öncelikle bu benim ilk yazım olduğunu belirtmek isterim. Kendime hedef koyarak, her hafta 1 adet konu yazmaya çalışacağım. Şimdiden sürç-i lisan ettiysem affola.

Eskiden nasıl gömülü yazılım yazılırdı hiç merak ettiniz mi? Eskiler elbet biliyordur. Günümüzde bu kadar piyasaya oturmuş mikrodenetleyici yoktu. Mikro kontrolcü piyasaya çıkar ve driver verilir gerisi sizden beklenirdi. Datasheetlerden registerlar hatim edilir projeler böyle ilerlerdi.

HAL dediğimiz zaman açılımı ile “Hardware Absraction Layer” diye açıyoruz ve “Donanım Soyutlama Katmanı” diye hemen türkçeye çeviriyoruz. HAL’ın geçmişine bakınca ilk işletim sistemlerinden sonra oluşan ihtiyaçtan kaynaklı olarak HAL kavramının oluştuğunu anlıyoruz. İlk işletim sistemlerinde HAL kavramı yoktu ve donanıma göre işletim sistemi yazılıyordu. Düşünsenize yazılımcı her bir donanımın nasıl çalıştığını bilmek zorunda. Yazılımcıların donanımı bilmeden donanıma şunu yap dediğinde onu yapan bir kütüphane dizini oluştursak yani Driver’ların üstüne bir katman çıksak nasıl olur demiş bir yazılımcı abimiz yada ablamız. Buna da HAL diyelim demişler.

Geldik şimdi API nedir düşüncesine. HAL ile gömülü programlamaya nasıl bir kolaylık kazandırdığını gördük. Bu noktadan sonra gömülü programlamayı karmaşık işler için daha kolay hale gelmek için Real-time olan ve olmayan işletim sistemleri yazılması akıl edilmiş. Bu şekilde uygulama kodu anlaşılabilir düzeyde implement edilebilir ve birbirine bağlı veya önem öncelikli tasklar kurulabilir. Bu temel özellikleri bize sağlayan fonkiyon dizinlerine API (Application Programming Interface) yani “Uygulama Programlama Arayüzü” adını kullanıyoruz.

Fügür 1: Mikro denetleyicinin Gömülü Yazım Katmanları

Sonuç olarak baktığımızda, HAL ile API katmanları birbirine çok benzer katmanlar olsa da HAL düşük seviyede donanımı bize register seviyesinde bilmeden kullanmamızı sağlamaktadır. API ise uygulama kodunu şekillendirmemizi ve gömülü seviyesinde algoritmayı kurmamızı sağlar.