Firma Siemens oferuje zarówno oprogramowanie wbudowane dla motoryzacji , jak i rozwiązania inżynieryjne w zakresie oprogramowania wbudowanego . Zaprzestała natomiast oferowania samodzielnego oprogramowania wbudowanego dla układów typu SoC wraz z wycofaniem w listopadzie 2023 r. produktów Nucleus, Nucleus Hypervisor, Nucleus ReadyStart, Sokol Flex Linux, Sokol Omni Linux i Sourcery CodeBench (łącznie z powiązanymi dodatkami). Obowiązujące umowy serwisowe dotyczące tych produktów są nadal honorowane; aby uzyskać więcej informacji, należy skontaktować się z centrum wsparcia firmy Siemens.
Jakie są rodzaje oprogramowania wbudowanego i do czego służą?
- System operacyjny – szeroko pojęty system operacyjny (OS), to oprogramowanie, które umożliwia użytkownikowi uruchamianie innych aplikacji na urządzeniu komputerowym. System operacyjny zarządza zasobami sprzętowymi procesora, w tym urządzeniami wejściowymi, takimi jak klawiatura i mysz, urządzeniami wyjściowymi, takimi jak wyświetlacze lub drukarki, połączeniami sieciowymi oraz urządzeniami pamięci masowej, takimi jak dyski twarde i pamięć. System operacyjny zapewnia również usługi ułatwiające efektywne wykonywanie aplikacji, zarządzanie nimi oraz przydzielanie do nich zasobów pamięci.
- Oprogramowanie sprzętowe – to rodzaj oprogramowania, które jest tworzone bezpośrednio dla sprzętu. Nie wymaga interfejsów API, systemu operacyjnego ani sterowników urządzenia i zapewnia instrukcje oraz wytyczne niezbędne do obsługi komunikacji z innymi urządzeniami lub wykonywania podstawowych zadań i funkcji.
- Oprogramowanie pośredniczące – to warstwa oprogramowania znajdująca się między aplikacjami i systemami operacyjnymi. Oprogramowanie pośredniczące jest często używane w systemach rozproszonych, gdzie upraszcza rozwój oprogramowania, zapewniając następujące korzyści:
- Ukrywanie zawiłości aplikacji rozproszonych
- Maskowanie niejednorodności sprzętu, systemów operacyjnych i protokołów
- Zapewnienie jednolitych interfejsów wysokiego poziomu służących do tworzenia interoperacyjnych, przenośnych aplikacji wielokrotnego użytku
- Realizacja zestawu usług wspólnych w celu zminimalizowania powielanych działań i usprawnienia współpracy między aplikacjami
- Aplikacja – użytkownik końcowy opracowuje aplikację końcową, która działa w systemie operacyjnym, używa oprogramowania pośredniczącego i sprzętowego lub współdziała z nimi oraz jest głównym elementem docelowej funkcji systemu wbudowanego. Każda aplikacja końcowa jest niepowtarzalna, natomiast systemy operacyjne i oprogramowanie sprzętowe na różnych urządzeniach mogą być identyczne.
Oprogramowanie wbudowane a systemy wbudowane
Komponenty sprzętowe w urządzeniu, na którym działa oprogramowanie wbudowane, są nazywane „systemem wbudowanym”. Do przykładów takich komponentów sprzętowych należą obwody zasilania, procesory, urządzenia pamięci flash, timery i porty łączności szeregowej. Decyzje dotyczące tych komponentów i ich konfiguracji podejmuje się na wczesnych fazach projektowania urządzenia. Następnie tworzy się od podstaw oprogramowanie wbudowane pod kątem działania w określonym systemie wbudowanym i danej jego konfiguracji. W związku z tym projektowanie oprogramowania wbudowanego jest specjalistyczną dziedziną wymagającą dogłębnej wiedzy na temat możliwości sprzętu i programowania komputerowego.
Przykłady funkcji opartych na oprogramowaniu wbudowanym
W niemal każdym urządzeniu zawierającym płytki drukowane i układy scalone te komponenty stanowią element systemu oprogramowania wbudowanego. W rezultacie systemy oprogramowania wbudowanego są wszechobecne w życiu codziennym i powszechnie stosowane w technologiach niewykorzystywanych przez branżę produktów konsumpcyjnych, motoryzacyjną, lotniczą i kosmiczną, wyrobów medycznych, handlową, telekomunikacyjną i wojskową.
Do typowych przykładów funkcji opartych na oprogramowaniu wbudowanym należą:
- Systemy przetwarzania obrazu stosowane w urządzeniach do obrazowania medycznego
- Systemy sterowania fly-by-wire stosowane w statkach powietrznych
- Systemy detekcji ruchu w kamerach monitorowania bezpieczeństwa
- Systemy sterowania ruchem w sygnalizacji świetlnej
- Systemy pomiaru czasu i automatyki spotykane w urządzeniach rozwiązań inteligentnego domu
Jakie są rodzaje systemów wbudowanych?
Na podstawie wymagań dotyczących wydajności i funkcjonalności można wyróżnić pięć głównych klas systemów wbudowanych:
- Systemy wbudowane czasu rzeczywistego wykonują zadania w sposób deterministyczny i powtarzalny, na co wpływa podstawowa architektura i harmonogram systemów operacyjnych, a także wykonywanie wątków, rozgałęzienia i opóźnienia wynikające z zakłóceń. Systemy wbudowane ogólnego przeznaczenia nie zawierają wymagań dotyczących czasu rzeczywistego i mogą zarządzać zakłóceniami lub rozgałęzieniami bez zależności od czasu ukończenia. Przykładami takich systemów są wyświetlacze graficzne oraz funkcje zarządzania klawiaturą i myszą.
- Autonomiczne systemy wbudowane mogą wykonywać zadania bez systemu hosta ani zewnętrznych zasobów przetwarzania. Mogą wyprowadzać lub odbierać dane z podłączonych urządzeń, ale nie są od nich uzależnione pod względem wykonywania zadań.
- Autonomiczne systemy wbudowane mogą wykonywać swoje zadania bez systemu hosta lub zewnętrznych zasobów przetwarzania. Mogą wyprowadzać lub odbierać dane z podłączonych urządzeń, ale nie są od nich uzależnione pod względem wykonywania zadań.
- Sieciowe systemy wbudowane są uzależnione od połączenia z siecią pod względem wykonywania wyznaczonych zadań.
- Ze względu na złożoność architektury sprzętowej systemu wyróżnia się trzy główne typy systemów wbudowanych: Sieciowe systemy wbudowane są uzależnione od połączenia z siecią pod względem wykonywania wyznaczonych zadań.
Jak rynki końcowe wpływają na systemy wbudowane
Wymagania i komponenty systemu wbudowanego różnią się w zależności od wymagań rynku docelowego. Do przykładów należą:
- Produkty konsumpcyjne – w zastosowaniach takich jak produkty konsumpcyjne, np. pralki, urządzenia noszone czy telefony komórkowe, najważniejszym kryterium jest niewielki rozmiar systemu wbudowanego.
- Układy typu system-on-chip, niskie zużycie energii lub zasilanie bateryjne i interfejsy graficzne. W zastosowaniach tego typu istotna jest możliwość konfiguracji systemu operacyjnego i wyłączania niedziałających „domen” projektu.
- Sieciowe – aplikacje, które umożliwiają łączność, komunikację, działania i zarządzanie siecią przedsiębiorstwa. Zapewniają ścieżkę komunikacji i usługi między użytkownikami, procesami, aplikacjami, usługami oraz sieciami zewnętrznymi / Internetem. Sieciowe aplikacje wbudowane są ukierunkowane na szybkość odpowiedzi, przetwarzanie pakietów i obsługę ścieżek urządzeń peryferyjnych.
- Przemysłowe – w przypadku zastosowań przemysłowych, takich jak zarządzanie halą produkcyjną, silniki i wiatraki, głównym kryterium jest łączność z chmurą i deterministyczne działanie w czasie rzeczywistym, z możliwością ukierunkowania na oprogramowanie pośredniczące.
- Medycyna, motoryzacja i lotnictwo – te branże wymagają mieszanych systemów o kluczowym znaczeniu dla bezpieczeństwa, których poszczególne części są odizolowane od siebie, aby zapewnić, że tylko niezbędne dane będą wchodzić do systemu lub opuszczać go (funkcje zabezpieczeń), gwarantując jednocześnie bezpieczeństwo użytkownika końcowego. Przykładem mogą być systemy autonomicznej jazdy w samochodach oraz wyroby medyczne. Te wbudowane systemy mogą stanowić połączenie otwartych systemów operacyjnych (Linux) i deterministycznych systemów operacyjnych czasu rzeczywistego (RTOS, ang. real-time operating system) oraz polegać w znacznym stopniu na sprawdzonym oprogramowaniu pośredniczącym.
Co wyróżnia oprogramowanie wbudowane stosowane w branży motoryzacyjnej?
W elektronice samochodowej w wielu systemach wbudowanych, z których każdy steruje funkcjami, takimi jak hamowanie, kierowanie, zawieszenie, układ napędowy itp., zachodzą złożone interakcje w czasie rzeczywistym, Fizyczna obudowa każdego systemu wbudowanego jest określana mianem elektronicznej jednostki sterującej (ECU). Każda jednostka ECU i jej oprogramowanie wbudowane stanowi część złożonej architektury elektrycznej określanej mianem systemu rozproszonego.
Komunikując się ze sobą, jednostki ECU składające się na system rozproszony w pojeździe mogą obsługiwać różne funkcje, takie jak automatyczne hamowanie awaryjne, adaptacyjny tempomat, kontrola stabilności, adaptacyjne reflektory i wiele innych. Jedna funkcja może wymagać interakcji między 20 aplikacjami oprogramowania wbudowanego, które są rozsiane między różnymi ECU i połączone różnymi protokołami sieciowymi. Złożone algorytmy sterowania wdrożone wraz z wbudowanym oprogramowaniem zapewniają prawidłową synchronizację funkcji, niezbędne wejścia i wyjścia oraz bezpieczeństwo danych.
Do typowych przykładów funkcji motoryzacyjnych opartych na oprogramowaniu wbudowanym należą:
- Funkcje systemu ADAS (zaawansowanego systemu wspomagania kierowcy, ang. Advanced Driver Assist Systems), takie jak adaptacyjny tempomat, automatyczne hamowanie awaryjne, asystent utrzymania pasa ruchu, asystent ruchu drogowego, ostrzeżenia o niezamierzonej zmianie pasa ruchu
- Zarządzanie akumulatorem
- Kompensacja momentu obrotowego
- Regulacja szybkości wtrysku paliwa
Stos oprogramowania jednostki ECU
Elektroniczna jednostka sterująca (ECU) składa się z głównej jednostki komputerowej ze sprzętem na poziomie układu scalonego i stosu wbudowanego oprogramowania. Można jednak zaobserwować nasilającą się tendencję wśród producentów samochodów do projektowania jednostek ECU ze złożonymi układami scalonymi, które zawierają wiele rdzeni obliczeniowych na jednym chipie, czyli układami typu system-on-chip (SoC). Układy SoC mogą obsługiwać wiele abstrakcji ECU, co umożliwia konsolidację sprzętu. Stos oprogramowania jednostki ECU zazwyczaj obejmuje szereg rozwiązań, od oprogramowania sprzętowego niskiego poziomu po aplikacje oprogramowania wbudowanego wysokiego poziomu.
Stos jednostki ECU | Opis |
Aplikacja oprogramowania wbudowanego | Algorytmy sterowania, przetwarzanie, usługi |
Ramy strukturalne aplikacji | Ramy strukturalne zabezpieczeń i bezpieczeństwa |
Środowisko operacyjne | AUTOSAR classic, AUTOSAR Adaptive, kanały wejść/wyjść |
Wirtualizacje wbudowane | System operacyjny czasu rzeczywistego, abstrakcje ECU |
Oprogramowanie sprzętowe | Programy rozruchowe, bezpieczna pamięć masowa, bezpieczne wątki |
Sprzęt | Urządzenia krzemowe, mikrokontrolery, płytki jedno lub wielowarstwowe |