logo elektroda
logo elektroda
X
logo elektroda
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

Czy potrzebujesz własnej warstwy abstrakcji sprzętowej?

ghost666 20 Paź 2023 10:57 822 0
  • Warstwy abstrakcji sprzętowej (HAL) odgrywają kluczową rolę w rozwoju oprogramowania wbudowanego. HAL umożliwia deweloperom odseparowanie ich kodu na wyższym poziomie aplikacji od obsługi sprzętu. Skutkiem tego jest rozbicie zależności od sprzętu, co zwiększa przenośność i testowalność kodu danej aplikacji oraz poprawia możliwość ponownego wykorzystywania oprogramowania. Wielu producentów układów scalonych w przestrzeni mikrokontrolerów dostarcza swoim klientom własne warstwy abstrakcji sprzętowej, ale pomimo prób standaryzacji, kłopot stanowi rozbieżna metodologia. Czy oznacza to, że potrzebujemy własnej warstwy abstrakcji sprzętu?

    Problem z dostarczanymi przez dostawców warstwami abstrakcji sprzętu (HAL)

    Niedogodność ww. to fakt, że wszystkie one są ze sobą niekompatybilne. Kończy się to tym, że osoba korzystająca z HAL zapewnianego przez dostawcę A nie może łatwo przejść do opcji HAL oferowanej przez podmiot B. Chociaż każdy dostawca dostarcza sterowniki HAL w celu zabezpieczenia niskopoziomowych szczegółów urządzeń i ułatwienia użytkowania ich, robią to w sposób, który nadal zamyka klientów w korzystaniu z ich sprzętu. Przełączenie lub ponowne spożytkowanie kodu nie jest niemożliwe, ale na pewno jest bardzo czasochłonne i kosztowne.

    Drugi problem polega na tym, że chociaż istnieje abstrakcja sprzętowa, to ta jest często ściśle powiązana z hardware. Interfejs to zazwyczaj nic więcej niż bezpośrednie wywołanie funkcji zawierającej kod niskopoziomowy. Deweloperzy, którzy chcą przeprowadzać testy jednostkowe lub symulacje poza docelowym środowiskiem, muszą polegać na podstawieniu łączników, co może być bardziej skomplikowane niż po prostu przemapowanie interfejsu.

    Przyjęcie własnej warstwy abstrakcji sprzętu (HAL)

    Jednym z rozwiązań problemu jest przyjęcie standaryzowanej warstwy abstrakcji sprzętowej. Na przykład można rozważyć użycie ARM CMSIS lub przyjęcie OSAL NASA. Te standardy mogą być pomocne, ale zauważyłem, że deweloperzy często borykają się z nimi z kilku powodów. Po pierwsze, są one nierzadko nadmiernie skomplikowane, ponieważ próbują uwzględnić wszystkie przypadki użycia dla wszelkich wariacji sprzętu. Po drugie, ta złożoność zwiększa nachylenie krzywej uczenia, więc próg wejścia dla nowych użytkowników jest wyższy. Wreszcie, standardy te mogą nie odpowiadać preferowanemu stylowi kodowania developerów i wykorzystywać mechanizmy abstrakcji, które nie spełniają potrzeb danej aplikacji.

    Drugą opcją jest przejrzenie istniejących standardów warstwy abstrakcji sprzętu i stworzenie własnej. Jeśli dostosujesz HAL według swoich potrzeb, możesz zapewnić, że interfejs pasuje do naszego stylu kodowania, zawiera testy jednostkowe i spełnia twoje wymagania techniczne. Tak, oznacza to trochę więcej pracy, ale daje to elastyczność w przełączaniu się między różnymi dostawcami sprzętu, środowiskami testowymi i nawet w symulacji kodu aplikacji. To są nowoczesne konieczności rozwoju, których nie można sobie odmówić, jeśli chcesz, aby twoja drużyna była elastyczna i odnosiła sukces.

    Czy potrzebujesz własnej warstwy abstrakcji sprzętu?

    Każdy developer musi sobie odpowiedzieć na proste pytanie: Czy potrzebujemy własnej warstwy abstrakcji sprzętu? Ogólna odpowiedź zależy od potrzeb firmy i danej aplikacji. Autor artykułu wspomina, że on sam stosuje warstwę abstrakcji sprzętowej we własnym oprogramowaniu od ostatniej dekady i uważa, że HAL jest niezastąpiony. Jednak to nie oznacza, że taka będzie sytuacja w każdym innym przypadku. Jeśli chcemy dowiedzieć się trochę więcej na temat pisania własnej warstwy abstrakcji sprzętu, możemy zajrzeć na przykład tutaj [jeśli czytelnicy forum chcą, mogę również i ten tekst przetłumaczyć — przyp.red.].

    Źródło: https://www.embedded.com/do-you-need-your-own-hardware-abstraction-layer-hal/

    Fajne? Ranking DIY
    O autorze
    ghost666
    Tłumacz Redaktor
    Offline 
    Fizyk z wykształcenia. Po zrobieniu doktoratu i dwóch latach pracy na uczelni, przeszedł do sektora prywatnego, gdzie zajmuje się projektowaniem urządzeń elektronicznych i programowaniem. Od 2003 roku na forum Elektroda.pl, od 2008 roku członek zespołu redakcyjnego.
    https://twitter.com/Moonstreet_Labs
    ghost666 napisał 11960 postów o ocenie 10197, pomógł 157 razy. Mieszka w mieście Warszawa. Jest z nami od 2003 roku.
REKLAMA