Embedded World – prezentacje o RTOSach

Podczas Embedded World jednym z często powtarzających się tematów były systemy operacyjne czasu rzeczywistego, czyli RTOSy. Nie zabrakło także Linuxa. W tym wpisie opiszę kilka prezentacji na ten temat.

Jakob Benningo – „42 Reasons Using FreeRTOS Should Scare Developers”

Tytuł prezentacji był trochę click-baitowy. Większość z tych 42 powodów nie była jakaś wielce odkrywcza. Poza tym często nie były to wcale argumenty przeciwko FreeRTOSowi, tylko ogólne informacje dotyczące działania RTOSów.

FreeRTOS wykorzystuje dynamiczną alokację pamięci. Mamy do wyboru kilka różnych strategii alokacji takie jak np. tylko alokacja bez zwalniania, korzystanie z wrapperów na malloc z biblioteki standardowej, czy implementacja alokacji ze zwalnianiem i łączeniem zwolnionych bloków. Od niedawna FreeRTOS umożliwia też statyczną alokację pamięci. Jeżeli nasz system ma długo działać bez restartu, powinniśmy unikać dynamicznej alokacji.

Jeżeli chodzi o performance, to płatne RTOSy często osiągają zdecydowane lepsze wyniki. Autor podpierał się benchmarkiem z THREAD Metric Benchmark Test Suite pokazującym 300% lepszą wydajność płatnego ThreadX od darmowego FreeRTOSa. Jednak benchmark może być trochę tendencyjny, skoro robiła go ta sama firma co system ThreadX.

Ciekawą obserwacją był fakt, że producenci procesorów w swoich bibliotekach i notach aplikacyjnych często umieszczają przestarzałe wersje FreeRTOSa. Dlatego powinniśmy zawsze ściągać najnowszą wersję bezpośrednio z oficjalnej strony projektu. Jest to szczególnie ważne w dobie IoT i znalezionych luk bezpieczeństwa we FreeRTOSie.

Wybierając RTOS do projektu zespół powinien kierować się wieloma czynnikami. Nie tylko tymi rzucającymi się w oczy jak dostępne funkcje, performance i wcześniejsze doświadczenie developerów z systemem. Powinniśmy również brać pod uwagę np. kwestie prawne (czy mogę użyć kodu open-source w swoim projekcie), portowalność, czy koszty utrzymania. To ostatnie może mieć znaczenie w systemach safety, gdzie mimo, że program jest darmowy, musimy zapewnić odpowiednią dokumentację i testy. Wtedy często lepszym rozwiązaniem będzie RTOS dedykowany pod safety-critical. W dokonaniu wyboru może nam pomóc tabela w excelu z odpowiednimi cechami RTOSa i ich wagami. Niestety nie znalazłem tego excela na stronie autora. Mam tylko zdjęcie z prezentacji.

Andrew Longhurst – Safety Critical RTOS: Adapting Across Applications

Kolejna prezentacja była prowadzona przez przedstawiciela WITTENSTEIN, czyli firmy rozwijającej SafeRTOSa. Tematem było dostosowanie RTOSa do aplikacji safety-critical. Po pierwsze taki RTOS musi spełniać normy. SafeRTOS wyewoluował z FreeRTOSa, który nie był rozwijany z myślą o systemach safety-critical. Dlatego aby stworzyć SafeRTOSa wzięto API z FreeRTOSa i potraktowano je jako wymagania, a następnie zaimplementowano je od zera zgodnie z V-modelem wykonując wymagane czynności związane z planowaniem, dokumentacją i testowaniem.

Trochę miejsca poświęcono kompilacji RTOSa na docelowy procesor. Nie tylko kod źródłowy musi spełniać odpowiednie standardy, ale również kompilator. Najczęściej popularne kompilatory są uznawane jako „proven in use”. Zakłada się, że mają wystarczająco dużą bazę użytkowników i są wystarczająco dojrzałe. Nie mając pewności co do kompilatora, musimy przeprowadzić pełne testy zapewniające odpowiedni code coverage MC/DC.

Jean Labrosse – Uncovering Real-Time bugs with specialized RTOS tools

Kolejna prezentacja była prowadzona przez autora systemu operacyjnego Micrum uC/OS. Skupiała się na pokazaniu jak graficzne toole monitorujące pracę RTOSa wspomagają wykrywanie typowych błędów takich jak:

  • przepełnienie stosu,
  • zagłodzenie wątku,
  • deadlock,
  • zbyt duże zużycie CPU,
  • problemy z sekcjami krytycznymi.

Jeżeli używamy do debugowania takich problemów dedykowanych tooli, możemy zaoszczędzić ogromne ilości czasu. Nie musimy szukać informacji o każdym tasku w podglądzie pamięci w debugerze. Zamiast tego mamy wszystkie liczby na jednym ekranie, a do tego jakieś grafy, oś czasu i inne bajery. Przykłady były na dedykowanym toolu do uC/OS. Istnieją również alternatywne narzędzia jak Percepio Tracealyzer, czy Segger SystemView.

Tego typu narzędzia graficzne pokazują:

  • procentowe zużycie CPU każdego wątku,
  • zużycie stosu każdego wątku,
  • ilość wywołań wątku,
  • długość przebywania w sekcji krytycznej,
  • ilość wejść do sekcji krytycznej przez każdy wątek,
  • wykorzystanie CPU na osi czasu,
  • przepływ sterowania między taskami, kolejkami, muteksami itp.

Prezentacja przy okazji może być dobrym wprowadzeniem do typowych problemów w systemach operacyjnych. Mogę ją śmiało polecić jako wprowadzenie do tematu. Szkoda, że nie mogłem jej nigdzie znaleźć w sieci.

Nicolas McGuire – Using Linux in Safety-Critical Environments: Update on SIL2LinuxMP Project

Ostatnia prezentacja, jaką opiszę dotyczyła Linuxa i próby utworzenia dystrybucji certyfikowanej do wykorzystania w systemach safety. Pracuje nad tym specjalna grupa i autor prezentacji jest właśnie przewodniczącym tej grupy.

Certyfikacja Linuxa jest wielkim wyzwaniem. RTOSy wykorzystywane najczęściej w systemach safety-critical mają zwykle 10k-50k linii kodu. Zwykle powstają też w całości w jednej organizacji pisane przez stosunkowo niewielki zespół programistów. Można więc odpowiednio zarządzać procesem wytwarzania oprogramowania, dokumentować, reviewować, testować, czy certyfikować. Linux jest kompletnym przeciwieństwem takiego systemu. Baza kodu Linuxa jest niemożliwa do ogarnięcia za pomocą zwykłego V-modelu. Kod jest liczony w milionach linii, a kontrybutorzy w tysiącach. Normy nie zostały przystosowane do takiego przypadku, dlatego jej zapisy nie nadają się do bezpośredniego zaaplikowania. Trzeba je odnosić do specyficznego kontekstu. Poza tym często są niejednoznaczne, czy ogólnikowe. Na potrzeby certyfikacji Linuxa zaadaptowano pewne techniki z norm lotniczych oraz wykorzystuje się zmienioną wersję V-modelu pasującą do dostosowywania istniejącego oprogramowania.

Postępy grupy pracującej nad Linuxem spełniających SIL2 można śledzić na stronie projektu sil2.osadl.org. Istnieje również projekt skupiający firmy pracujące nad safety-critical Linuxem o nazwie ELISA (Enabling Linux in Safety Applications).

To tyle jeżeli chodzi o relację z prezentacji o systemach operacyjnych na Embedded World. Prezentacji było znacznie więcej. Była cała ścieżka o embedded linuxie i ścieżka o RTOSach. Prezentacje, na które poszedłem, nie wchodziły za bardzo w szczegóły i ciężko było na nich np. o fragmenty kodu.

Podobne wpisy

  • Ile kosztuje system safety-critical?

    Systemy safety-critical – wszystkie wpisy Ile kosztuje system safety-critical? SOUP – Wykorzystanie zewnętrznego softu w safety-critical Analiza ryzyka w systemach safety-critical Języki programowania w safety-critical Techniki zalecane przy tworzeniu systemów safety-critical Poziomy bezpieczeństwa w systemach safety-critical V-model – proces wytwarzania systemów safety-critical Ariane 5 – int overflow, który wysadził w powietrze rakietę Therac-25, czyli błąd…

  • Inicjalizacja tablic

    Jakiś czas temu widziałem taki kod inicjalizujący tablicę: Celem autora było zainicjalizowanie wszystkich elementów tą samą wartością. Pewnie dla wielu z Was błąd w tej linijce wyda się oczywisty. Ale skoro inicjalizuje wszystkie wartości na zero, to można pomyśleć, że analogiczny zapis inicjalizuje wszystko na -1. Niestety tylko indeks zerowy przyjmie wartość -1, natomiast cała…

  • |

    Architektura systemu

    Koncepcję robota opisałem już jakiś czas temu i od razu zabrałem się za realizacje hardware. Soft na razie został zepchnięty na dalszy plan, ale powoli to się zmienia. W ramach przygotowań do implementacji postanowiłem więc określić architekturę systemu. Jako, że to projekt po godzinach, nie ma żadnych narzuconych procedur dotyczących dokumentacji. Nie oznacza to jednak,…

  • |

    Nowa zabawka

    Nad kupnem drukarki 3D zastanawiałem się już od dłuższego czasu, ale do tej pory na zastanawianiu się kończyło. Moim zdaniem jest to technologia przyszłości i za kilkanaście lat będzie tak popularna jak zwykłe drukarki. Takiego przekonania nabrałem oglądając reklamówki, na których gospodynie domowe drukowały sobie foremki do ciast. Kiedy więc ostatnio pojawiła się okazja kupienia…

  • Testy RAM – wprowadzenie

    Pamięć RAM, jak każdy inny element systemu mikroprocesorowego może się zepsuć. Skutki złego działania RAM mogą być bardzo niebezpieczne. Szczególnie kiedy system wykonuje jakieś odpowiedzialne zadanie. Dlatego testy RAM są wymagane do zapewnienia odpowiedniego SIL (Safety Integrity Level – Poziom Nienaruszalności Bezpieczeństwa) przez różne normy: IEC 60730 – Safety standard for household appliances. IEC 61508…

  • Projekt embedded od zera – nowa seria na YT!

    Widzieliście już nową serię filmów na moim kanale YT? To jest coś, czego do tej pory brakowało w świecie embedded. Pokazuję w niej prawdziwy projekt. Nie tylko z ostateczną wersją kodu, ale również z całą ewolucją, decyzjami i czynnikami wpływającymi na te decyzje. A wszystko to bez zbędnego lania wody – same konkrety. Aby utrzymać…

Jeden komentarz

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Wymagane pola są oznaczone *