Czym jest system wbudowany (embedded system) na przykładzie układów procesorowych typu bare metal

Opublikowane: 2022-09-16
Autor: Łukasz Sojka

System embedded, czy po polsku system wbudowany to hasło, z którym często możemy się spotkać w bardzo wielu dziedzinach współczesnej technologii. Wszędzie tam, gdzie mamy do czynienia z oprogramowaniem oraz sprzętem elektronicznym. Ale czym właściwie jest taki system wbudowany?

System wbudowany – czym NIE JEST?

Bardzo ogólna definicja takiego systemu mogłaby ograniczyć się do stwierdzenia, że jest to połączenie oprogramowania i sprzętu ściśle powiązanych ze sobą oraz zaprojektowanych do wykonywania ściśle określonych zadań. Jednak nie jest to zbyt precyzyjne określenie. Dociekliwy czytelnik w tym momencie zauważy, że przecież każde oprogramowanie jest projektowane do jakichś celów, a do jego uruchomienia wymagany jest jakiś sprzęt. Chcąc zatem sprecyzować tę definicję, powiedzmy sobie, czym system wbudowany nie jest. Takim systemem nie nazwiemy na pewno komputerów osobistych, smartfonów ani tym bardziej serwerów świadczących usługi chmurowe.

Dlaczego? Ponieważ te systemy owszem, łączą ze sobą hardware oraz software, ale są to systemy uniwersalne, niezaprojektowane do jednego zastosowania, a sam software tylko w niewielkim stopniu jest zależny od sprzętu.

 

Specjalizujemy się w budowaniu i testowaniu systemów safety-critical. Sprawdź co jeszcze potrafimy w dziedzinie embedded.

 

System wbudowany na przykładzie muzycznego odtwarzacza

Aplikacja do słuchania muzyki – to nie jest embedded

Przykładowo, możemy uruchomić na komputerze PC lub smartfonie aplikację odtwarzacza muzyki, której efektem działania będzie sygnał dźwiękowy na wyjściu warstwy sprzętowej (tu karty dźwiękowej). Ten komputer nie został jednak zaprojektowany tylko na potrzeby odtwarzania muzyki. Jest to urządzenie złożone, posiadające podzespoły o dużej mocy obliczeniowej, a do uruchomienia takiej aplikacji wymagany jest system operacyjny i szereg dodatkowego oprogramowania jak np. sterowniki wspomnianej karty dźwiękowej.

Posiadając już to wszystko, w bardzo prosty sposób możemy taki system wykorzystać do niezliczonej liczby zadań, w tym m.in. do odtwarzania muzyki. Niezaprzeczalną zaletą w tym przypadku jest spora niezależność oprogramowania od sprzętu. Tworząc taką aplikację bardziej musimy skupić się na rodzaju docelowego systemu operacyjnego, a ten załatwi już za nas kwestie zamiany danych na sygnał dźwiękowy.

Jednak nie zawsze jest to rozwiązanie optymalne pod względem kosztów, energii czy np. mobilności. Przede wszystkim należy pamiętać, że im bardziej złożony system posiadamy, tym większe występuje ryzyko pojawienia się w nim błędów i tym mniejsza jego niezawodność.

Odtwarzacz MP3 – prosty system wbudowany

Możemy zatem rozważyć drugą możliwość: stworzenie urządzenia dedykowanego do spełnienia tylko jednego celu. W tym momencie możemy przytoczyć nie tak dawno bardzo popularny przenośny odtwarzacz MP3, które śmiało możemy nazwać systemem wbudowanym. Takie urządzenia były zarówno od strony hardware jak i software projektowane do jasno sprecyzowanego celu – odtwarzania muzyki. Wyposażone w niewielki procesor o dość skąpych parametrach, jednak wystarczających do zrealizowania założonego celu, a przede wszystkim tani i energooszczędny. Do tego nie wymaga systemu operacyjnego czy złożonego oprogramowania, co jeszcze bardziej upraszcza proces jego zaprojektowania i zmniejsza ryzyko wystąpienia potencjalnych błędów.

Systemy embedded – tam gdzie nie dotrze komputer

Oczywiście systemy wbudowane to też nie tylko wykrojona funkcjonalność, którą można zrealizować za pomocą komputera. Drugą i najbardziej znaczącą dziedziną, gdzie spotkamy systemy embedded, to systemy, których zastąpienie klasycznym komputerem jest praktycznie niemożliwe.

Weźmy dla przykładu sterownik pralki automatycznej. O ile jeszcze można sobie wyobrazić interfejs użytkownika takiej pralki oparty o system Windows czy Android (choć zdecydowanie byłoby to przerostem formy nad treścią), o tyle niezmiernie trudno byłoby wydajnie połączyć taki system z niezbędnymi do pracy pralki podzespołami: sterownikiem silnika, czujnikami itp.

I tutaj dochodzimy do najistotniejszej cechy systemów wbudowanych – dedykowanej warstwy sprzętowej często wyposażonej w liczne peryferia umożliwiające zarówno zadawanie sygnałów sterujących i wykonawczych, jak również bardzo szybką reakcję na odbierane sygnały wejściowe.

Peryferia w systemach wbudowanych

Ale o jakich peryferiach konkretnie mowa? Patrząc na rys historyczny, jeszcze kilkanaście lat temu rynek mikrokontrolerów, czyli procesorów do zastosowań embedded, był dość ograniczony. Królowały głównie proste jednostki o architekturze 8-bitowej, taktowane zegarami o częstotliwości najwyżej pojedynczych MHz, wyposażone w kilka, może kilkanaście kB pamięci operacyjnej. Już wtedy pozwalały one jednak na tworzenie, może niezbyt rozbudowanych systemów, ale mocno związanych z hardwarem. Posiadały kilkukanałowe przetworniki analogowo-cyfrowe, timery, interfejsy cyfrowe jak SPI, czy bardziej do zastosowań przemysłowych: RS232 lub RS485.

Te podstawowe peryferia pozwalały na przykład na obsługę nawet kilku czujników przetwarzających dowolną wartość (temperaturę, ciśnienie, przyspieszenie) na analogowy sygnał elektryczny, a także wykonywać operacje w ściśle określonym czasie. Systemy oparte o takie kontrolery znajdowały zastosowanie w głównej mierze właśnie w automatyce i przemyśle.

A jak sprawa ma się w dzisiejszych czasach? Dziś w kwestii możliwości, jakie dają nam mikrokontrolery czy procesory do zastosowań embedded można powiedzieć śmiało, że ogranicza nas jedynie wyobraźnia.

Platformy 32-bitowe, również kilkurdzeniowe, taktowane setkami MHz, megabajty pamięci operacyjnej z możliwością jej rozszerzenia przez zewnętrzne układy, kontrolery wyświetlaczy, szybkie interfejsy cyfrowe jak USB czy Ethernet, a nawet WiFi czy Bluetooth – to wszystko pozwala na tworzenie już nie tylko prostych sterowników pralki czy sterownika prostej taśmy produkcyjnej, ale daje możliwości, których nie sposób wymienić w tym krótkim artykule.

Embedded w IoT

Wybierzmy zatem dwie dziś chyba najprężniej rozwijające się dziedziny: IoT oraz Safety & Security. Pierwsza, IoT – czyli Internet of Things, to w uproszczeniu mówiąc, często dość proste urządzenia oparte o systemy wbudowane, jak np. sterowniki ogrzewania, klimatyzacji czy oświetlenia, które w pojedynkę może nie spowodują rewolucji, ale jeśli każde z nich wyposażymy w możliwość komunikowania się za pomocą sieci internetowej z innymi tego typu urządzeniami oraz z rozbudowanymi aplikacjami serwerowymi, otrzymujemy kompletną, w pełni zdalnie zarządzalną i „inteligentną” automatykę domu, hotelu, biurowca czy fabryki.

Kolejną przewagą systemów wbudowanych, a ściślej oprogramowania dedykowanego dla takich systemów jest możliwość zapewnienia znacznie większego poziomu bezpieczeństwa w porównaniu do aplikacji opartych na popularnych, rozbudowanych systemach operacyjnych. Biorąc pod uwagę, jak często otrzymujemy aktualizacje i poprawki bezpieczeństwa dla systemów w naszych komputerach czy smartfonach, możemy być pewni, że jeszcze wielu błędów i luk ich autorzy nie odnaleźli.

W codziennym użytkowaniu takich systemów może nie jest to duży problem, ale gdy w grę wchodzi bezpieczeństwo mienia lub życia ludzkiego, należy sięgnąć po dedykowane do tego środki. I tu znów zastosowanie znajdą systemy embedded.

Embedded w Safety & Security

Autorskie, mocno ograniczone oprogramowanie, które możemy znacznie dokładniej przetestować to tylko jedna z wielu zalet. Wspominaliśmy też o wbudowanych w procesory peryferiach. Bez problemu znajdziemy dziś mikrokontrolery wyposażone w akceleratory szyfrujące połączone z DMA, które pozwolą bez dodatkowego obciążania rdzenia procesora, szyfrować ogromne ilości danych używając przy tym najnowszych znanych algorytmów. Jeśli dodamy do zestawu dedykowaną pamięć kluczy tajnych, otrzymujemy system do bezpiecznej transmisji ściśle tajnych danych np. w systemach autoryzacji dostępu.

A co z niezawodnością? W wielu branżach, zwłaszcza safety & security wymagane jest, aby system działał bez przerwy niezawodnie przez 5, 10 czy nawet 25 lat często w niekorzystnie wysokich czy niskich temperaturach. Dla dobrze zaprojektowanego systemu wbudowanego to żadne wyzwanie. Znów, znajdziemy bez problemu kontrolery dedykowane do pracy w szerokim zakresie temperatur, z gwarantowanym stopniem niezawodności i wyposażone w tzw. Watchdoga czuwającego nad nieprzerwaną pracą oprogramowania.

Podsumowanie

Systemy embedded to systemy o praktycznie nieograniczonym zastosowaniu. Mają przewagę nad konwencjonalnymi systemami komputerowymi wszędzie tam, gdzie wymagana jest większa niezawodność, deterministyczność oprogramowania i integracja ze sprzętem, a jednocześnie nie wymagana jest bardzo wysoka moc obliczeniowa. Sprawdzą się tam, gdzie korzystne jest użycie dedykowanej platformy sprzętowej i możliwe jest poświęcenie większej ilości zasobów na przygotowanie dedykowanego oprogramowania.

W Solwit tworzymy i testujemy oprogramowanie wbudowane każdego typu. Zarówno systemy embedded jak i kompletne rozwiązania IoT z zachowaniem dbałości o odporność na ataki hackerów.

 

Jeśli szukasz partnera technologicznego do stworzenia Twojego oprogramowania, napisz do nas i umów się na bezpłatną konsultację

 

Autor: Łukasz Sojka,
Projektant-Programista

SKONTAKTUJ SIĘ
Wypełnij
formularz.
Skontaktujemy się z Tobą,
żeby umówić rozmowę
w dogodnym dla Ciebie terminie.