Donanım Soyutlama Katmanı ( Hardware Abstraction Layer) nedir?

Mikrodenetleyicilerin çevrebirim zenginliğinin artması ve ürün tasarım süreçlerinin de hızlanması ile birlikte artık tasarımcıların zaman kazandırıcı önlemlere ihtiyacı oluyor. Geçmişte herşeyi baştan tek tek yazma alışkanlıkları yerine modüler yazılım parçalarını ve sürücüleri hazır olarak kullanma eğitimlerine bırakıyor. Bu nedenle yarı iletken üreticileri de ürünlerini öne çıkarmak ve sadık bir tasarımcı kitlesi oluşturmak için çip üretmek yanında yazılım araçları, sürücüler de yayınlamaya başladılar. Yarı iletken üreticisi olmak yanında yazılım geliştirme konusunda da birşeyler yapmak durumunda olmaya geçişin sancıları da yaşanmıyor değil. ST firması da başlangıçta “Standard Peripheral Library” adı altında STM32 serisi için “sürücü” kütüphanesi yayınladı. Bu kütüphanede de birçok problem vardı ancak zamanla düzeltildi. ST firması sanırım başlangıçta dışarıda bir ekibe yazdırdıktan sonra “bu iş böyle olmayacak” deyip kendi içerisinde de yazılımcı istihdam etmeye başladı.

Peki bu kadar tantanaya gerek var mı? Eskiden olduğu gibi yazılımlarımızı FALAN_REGISTER = 0x12, FILAN_REGISTER = 0b00001000 şeklinde yazmaya devam edemez miyiz? Edebiliriz tabii ki ama. Bütün bunlar boşuna ortaya çıkmıyor. Mikrodenetleyiciler geçmişte birkaç kb’lık program belleğine sahipken ve kısıtlı imkanlara sahip 8 bit mikrodenetleyicilerle çalışırken böyle çalışmak kolaydı. Ancak bugün 200-300 mhz hızlarında çalışan MB’lara çıkmış program belleğine sahip içerisinde ekran sürücüsünden, DSP komut setine kadar birçok gelişmiş özelliği barındıran, on binlerce satır kod yazılabilen mikrodenetleyicilerle yapılan projelerde takdir edersiniz ki bu şekilde bir çalışmayla projelerin zamanında yetiştirilmesi çok zor. Yani aslında elektroniğin yazılım mühendisliğine yaklaştığı döneme gelmiş bulunuyoruz. Bir anlamda yazılım mühendisliğinde yıllar önce çözülmüş ve artık oldukça “normal” kabul edilen şeyleri bizler yeni yeni tartışmak durumuna geldik. Nedir bunlar? “Yeniden kullanılabilirlik – reusability, soyutlama (abstraction), modülerlik (modularity), bakımı kolay yapılabilirlik (maintainability) gibi şeyler. Aslında konu sonuçta “yazılım kalitesi” ne geliyor. Söz konusu gömülü yazılımlar olunca da hayatımızda birçok yerde önemli işler yapan sistemlerin doğru düzgün çalışması (ya da çalışmaması) konusuna geliyor.

HAL (Hardware Abstraction Layer) : Donanım soyutlama katmanı

Soyutlama kavramının yazılım dünyasındaki karşılığı bir sistemde alt detayları kullanıcıdan gizleme ve ona basit bir arayüz sunmaktır. Günlük hayattan örnek verecek olursak bir otomobili kullanmak için 3 pedal, 1 vites ve direksiyon simidi bize arayüz olarak sunulmuştur. Arabanın iç detayları, çalışma sistemi bizden gizlenmiştir. Biz arabayı bize sunulan arayüz ile kolayca kullanabiliriz. Arabaların markası, modeli, iç yapısı değişik olsa da bütün arabalarda bu ortak arayüz vardır. Dolayısıyla araba kullanmayı bir kere öğrendiğimizde farklı modeller arasında geçiş yapmamız da kolay olur.

Yazılımlardaki donanım soyutlama katmanı da benzer şekilde 2 avantaj sunar: Farklı uygulama katmanındaki yazılımda alt katmandaki donanım değişse de benzer şekilde yazılabilirler. İkinci avantaj ise alt sistemlerin karmaşıklığından soyutlanmaktır.

HAL

Bu anlamda Arduino platformu donanım soyutlama katmanına güzel bir örnektir. Arduino aslında Atmel AVR serisi mikrodenetleyiciler için yazılmış bir “DSK”dır. Farklı Arduino modellerinde farklı mikrodenetleyiciler de olsa bunları aynı fonksiyonlarla programlayabiliyoruz. Buradaki karmaşıklık ve donanım farklılıkları için yapılan işlemler bizden “gizlenmiştir”.

arduino-hal

Bundan sonra sık sık karşılaşacağımız HAL kütüphanelerinin ne olduğuna giriş yapmış olduk.

STM32 serisi için yayınlanan HAL kütüphaneleri yazım ile devam edebilirsiniz.

2 thoughts on “Donanım Soyutlama Katmanı ( Hardware Abstraction Layer) nedir?

  1. Çok açıklayıcı ve güzel bilgilendirme yazısı. Yazılarınızda kullandığınız kavram ve terimlerin doğru kullanımı konusunda gösterdiğiniz özeni de takdir ediyorum.

Bir Cevap Yazın

E-posta hesabınız yayımlanmayacak.