Własna implementacja zaawansowanego rozwiązania, nawet z wykorzystaniem układu SOC, wiąże się z koniecznością użycia wielowarstwowej płytki PCB i przymusem prowadzenia ścieżek do układów pamięci, zgodnie ze sztuką projektowania obwodów wysokich częstotliwości. Zadanie staje skomplikowane i często nieopłacalne przy niskim nakładzie produkcyjnym.
Na fotografii 1 pokazano przykładowy widok płytki PCB, ukazujący połączenie pamięci DDR z układem SOC. Jak łatwo możemy zauważyć, przygotowanie takiej płytki wymaga dużego doświadczenia od projektanta oraz jest czasochłonne.
Problem został szybko dostrzeżony przez producentów układów elektronicznych i w ten sposób zaczęły powstawać komputery jednopłytkowe (SBC – Single Board Computer), integrujące procesor, pamięci oraz układy interfejsowe na jednym kawałku PCB. Jeżeli chcemy zastosować skomplikowany system mikroprocesorowy, wystarczy że skorzystamy z gotowego komputera SBC, oraz zaprojektujemy układ interfejsu, łączący komputer z układami zewnętrznymi. Dzięki temu przy produkcji niskonakładowej, znacząco zmniejszamy koszt projektu, ponieważ wystarczy zaprojektować układ interfejsu specyficznego dla danego produktu, który najczęściej realizowany jest w postaci nieskomplikowanego układu – prostej dwuwarstwowej płytki drukowanej.
Dla produkcji wysokonakładowej, warto rozważyć zaprojektowanie całego systemu mikroprocesorowego we własnym zakresie, ponieważ wysokie koszty projektu zostaną rozłożone na dużą ilość urządzeń, a producent komputerów SBC także musi zarobić na swoim produkcie. Istotną zaletą tego rozwiązania będą mniejsze wymiary urządzenia, ponieważ z układu SOC będziemy wyprowadzać tylko te sygnały, które będą potrzebne w projekcie, bez konieczności wpasowywania się w interfejs komputera SBC, przewidziany przez producenta.
Historia komputerów jednopłytkowych
Za pierwszy komputer jednopłytkowy uważa się urządzenie o nazwie „dyna-micro” powstały w 1976 roku (fotografia 2).
Został zbudowany na bazie mikroprocesora i8080 i zawierał wszystkie elementy typowe dla tego rodzaju urządzeń, czyli pamięć EPROM oraz RAM, układy wejścia-wyjścia, prostą klawiaturę oraz wyświetlacz. Do programowania nie potrzebne były żadne specjalistyczne narzędzia, ani dodatkowy zewnętrzny komputer, ponieważ kod maszynowy można było wprowadzać bezpośrednio z klawiatury. W analogicznym okresie powstała podobna konstrukcja o nazwie KIM1, bazująca na popularnym w tym czasie mikroprocesorze 6502.
Do połowy lat 90tych, we wczesnej fazie rozwoju, gdy architektura ARM była jeszcze w powijakach, zdecydowaną większość komputerów jednopłytkowych stanowiły platformy oparte na mikroprocesorach zgodnych z x86, z uwagi na najwyższą wydajność. Komputery SBC tego typu są zgodne z architekturą IBM-PC, a to co je wyróżnia, w porównaniu do klasycznych płyt głównych PCAT/ATX, to zdecydowanie mniejsze wymiary, dodatkowe porty IO, oraz często brak możliwości zastosowania kart rozszerzeń. Procesor oraz pamięć są przeważnie zintegrowane z płytą główną, aby zwiększyć odporność na wstrząsy, oraz zmniejszyć wymiary. W okolicach roku 2000, na popularności zaczęła zyskiwać architektura ARM, która przebojem zdobywała rynek mikrokontrolerów jednoukładowych, oraz rozwiązań bazujących na układach SOC. Przełomem było pojawienie się rdzeni CortexM, oraz układów serii CortexA dla procesorów aplikacyjnych. Moc obliczeniowa procesorów aplikacyjnych z 64-bitowym rdzeniem Cortex A53/A76/A78, jest porównywalna z mikroprocesorami Intel Core i3/5/7, przy znacząco mniejszym poborze prądu oraz prostszej architekturze, pozbawionej wielu naleciałości historycznych. O sukcesie oraz wydajności architektury ARM może świadczyć fakt, iż firma Apple w tym roku postanowiła zrezygnować z procesorów Intela w swoich komputerach na rzecz własnych autorskich procesorów bazujących na architekturze ARM. Wraz z pojawieniem się rdzeni CortexA, na rynku zaczęły się pojawiać komputery jednopłytkowe z układami ARM, w dużej części wypierając droższe i bardziej energochłonne rozwiązania x86. Komputery oparte na architekturze x86, w większości przypadków pozostały w użyciu tylko tam, gdzie jest potrzebna zgodność z architekturą PC, np. aplikacje dla systemu Windows.
Komputery SBC zgodne z x86
Komputery SBC, zgodne z x86, stanowią zminiaturyzowane wersje płyt głównych komputerów PC, co jest ich głównym atutem. W przeciwieństwie do komputerów z układami ARM, są one ustandaryzowane, zaczynając od oprogramowania, poprzez wymiary, na zestawie złącz kończąc. Istotny jest również fakt, iż często, jeśli posiadają jakieś wymienne moduły, możemy zastosować standardowe komponenty od laptopów czy komputerów PC, np. układy pamięci czy karty rozszerzeń, co znacząco zwiększa możliwości rozbudowy oraz obniża koszty. Dodatkowo do dyspozycji otrzymujemy zestaw zaawansowanych magistral, takich jak PCIE, SATA, USB 3.1 itp., które w płytkach opartych na architekturze ARM nie zawsze są standardem. Często komputery posiadają ustandaryzowane wymiary oraz są ze sobą zgodne programowo, zatem w teorii możemy wymiennie stosować płytki różnych producentów.
Do najpopularniejszych standardów komputerów jednopłytkowych należą:
- PC/104, PC/104 Plus – jeden z najpopularniejszych standardów powstały w 1997 roku (fotografia 3);
- EPIC Express – mający swój początek w 2004 roku. Standardowy rozmiar modułu wynosi 165×114 mm. Umożliwia wykorzystanie kart rozszerzeń formatu PC/104, a dzięki stosunkowo dużym rozmiarom, może zawierać wiele złącz znanych z komputerami PC (fotografia 4);
- Nano-ITX – zaprezentowany przez firmę VIA Technologies w 2003 roku. Posiada wymiary 120×120 mm. Nie jest to standard stricte dedykowany do systemów wbudowanych, a raczej do urządzeń typu STB, DVR, info kiosków itp., jednak, jeśli nie potrzebujemy dodatkowych kart rozszerzeń, może być również wykorzystany dla systemów wbudowanych (fotografia 5);
- ESM Express – standard opracowany przez konsorcjum VITA dla systemów wbudowanych o wymiarach 95×125 mm (fotografia 6);
- XTX – standard promowany przez firmę Advantech o wymiarach 95×114 mm. Definiuje on również standardowy zestaw złącz: 4 linie PCIE, złącze Ethernet, 2 złącza IDE, 4 złącza SATA, 6 interfejsów USB, oraz złącze audio. Napięcie zasilania płyty wynosi 5 V (fotografia 7);
- ETX – jeden ze standardów promowanych przez firmę Kontron, o wymiarach 95×114 mm (fotografia 8);
- NUC – jest to standard firmy Intel powstały w 2013 roku. Nie jest on stricte dedykowany dla systemów wbudowanych, a raczej to miniaturowych komputerów, jednak, jeśli nie potrzebujemy korzystać z dedykowanych kart rozszerzeń, może być również wykorzystywany we własnych konstrukcjach. Standard ten definiuje rozmiary płytki na 101×101 mm, jednak niektóre z modułów mogą posiadać inne wymiary (fotografia 9).
Najpowszechniej wykorzystywanym standardem wśród komputerów jednopłytkowych jest PC/104. Standard ten, poza samym rozmiarem, definiuje zestaw złącz, które płyta z nim zgodna powinna posiadać. Został opracowany przez firmę AMPRO, a później stał się częścią standardu IEEE, dzięki czemu płyty w tym formacie mogą być produkowane przez różne firmy. Główną zaletą rozwiązania jest możliwość stosowania dodatkowych kart rozszerzeń poprzez nakładanie jednej płytki na drugą – w formie kanapki. Z uwagi, iż jest to najbardziej rozpowszechniony standard na rynku, istnieje wiele kart rozszerzających różnych producentów. Wraz z rozwojem komputerów PC i zmianą magistral, standard ewaluował i występuje w następujących odmianach:
- PC/104 – pierwsza wersja z roku 1992. Zawiera zestaw sygnałów zgodnych ze standardem ISA. W zależności od rodzaju, do dyspozycji możemy mieć magistralę ISA 8 lub 16bitową (na dodatkowych 40 kontaktach);
- PC/104-Plus – kolejna wersja rozwojowa, gdzie poza złączem ISA, dołożono dodatkowe złącze magistrali PCI. Do układów tego typu możemy zarówno dołączać starsze rozszerzenia ISA jak i nowsze PCI;
- PCI-104 – wersja standardu z roku 2003, w której usunięto magistralę ISA, pozostawiając jedynie PCI oraz zmieniając złącze na 120to kontaktowe, kompatybilne z wersją PC/104Plus. Z uwagi na usunięcie magistrali ISA, nie jest on kompatybilny z PC/104;
- PCI-104/Express – najnowsza wersja standardu z 2008 roku, gdzie do magistrali PCI, w miejscu dawnego złącza ISA, wstawiono złącze magistrali PCIE. Standard definiuje dodatkowe 156-pinowe złącze, przeznaczone dla tych sygnałów. Poza samym PCIE, wyprowadzono dodatkowo magistrale: USB, SATA, oraz LPC. Zaznaczam, że złącze dodatkowe może występować w dwóch odmianach: Typ 1 oferuje PCIe x1, dwa porty USB oraz PCIe x16; Typ 2 posiada dodatkowo dwa porty USB 3.0, port SATA oraz LPC;
- PCIe/104 – jest to wersja standardu, która została pozbawiona przestarzałego złącza PCI, a złącze PCIE pozostało na tym samym miejscu. Z uwagi na brak złącza PCI, jest ono niekompatybilne z rozszerzeniami przeznaczonymi dla płytek PCI104/Express.
Wracając do oprogramowania, większość płyt x86 jest kompatybilna z oprogramowaniem dla komputerów PC, bez konieczności dokonywania modyfikacji. Zarówno system Windows, jak i Linux, obsłużone będą bez problemu, z wykorzystaniem standardowych sterowników dla portów szeregowych, złączy Ethernet, USB, czy kart graficznych. Oprogramowanie może być napisane przy użyciu standardowych narzędzi developerskich przeznaczonych dla PC. Nie potrzeba żadnych specyficznych narzędzi, a oprogramowanie, jeśli będzie działać na PC, to również zadziała na modułach PC. Jedynym problemem mogą być złącza wejścia-wyjścia, które nie są ustandaryzowane w architekturze PC, ale producenci najczęściej dostarczają stosowne sterowniki dla najpopularniejszych systemów operacyjnych. Często płyty tego typu posiadają zintegrowaną pamięć FLASH, w postaci wlutowanego niewielkiego dysku SSD, na którym może być przechowane oprogramowanie. Nowsze wersje standardu pozwalają dołączyć zewnętrzny dysk za pomocą złącza SATA. Należy wspomnieć, że istnieją również płyty w formacie PC/104, oparte na architekturze ARM czy PowerPC, jednak są one stosunkowo rzadko spotykane.
Jeśli chodzi o procesory, to podobnie jak dla komputerów PC, dostarczane są zasadniczo przez dwie firmy: Intel oraz AMD. Najbardziej wydajne komputery jednopłytkowe korzystają z klasycznych procesorów, przeznaczonych dla laptopów oraz desktopów. Wymagają one użycia dodatkowych układów zewnętrznych, co zwiększa koszty rozwiązania. Obie firmy produkują układy x86, przeznaczone dla urządzeń wbudowanych, które de facto są układami SOC, wymagającymi jedynie dołączenia układów pamięci FLASH oraz RAM. Firma AMD produkuje procesory o nazwie „Ryzen Embedded”, które zastąpiły procesory „AMD Geode”, natomiast Intel do zastosowań tego typu rekomenduje procesory Intel Celeron serii G, oraz niektóre procesory Intel Atom serii Z. Tabela 1 pokazuje rozwiązania firmy AMD.
Procesory przeznaczone dla systemów wbudowanych, skonstruowane są w oparciu o nowoczesną architekturę Zen, w technologii 14 nm. Do dyspozycji mamy linię wysokowydajną serii V oraz linię ekonomiczną serii r. Seria wysokowydajna zawiera zintegrowane karty graficzne, zaczynając od Vega 3 na Vega 11 kończąc, o wydajności do 3,6 TFLOPS. Układy Ryzen charakteryzują się mocą TDP na poziomie 35…54 W. Nie bez znaczenia jest również bogate wyposażenie dodatkowe: sprzętowy enkoder i dekoder wideo H264/H265 o maksymalnej rozdzielczości 4k, karta graficzna wspierająca obsługę dwóch monitorów, czy dwie karty sieciowe o przepustowości 1 Gbps. Linia ekonomiczna jest również kompletnym układem SOC o mniejszej wydajności, charakteryzująca się mniejszym poborem prądu w przedziale 6…25 W.
Listę procesorów firmy Intel rekomendowanych dla systemów wbudowanych pokazuje tabela 2. Do systemów wbudowanych zalecane są obecnie procesory serii Celeron G oraz Atom Z. Większa część z tych układów posiada zintegrowaną kartę graficzną serii „Intel Graphics”. Analogicznie do układów firmy AMD, w zależności od wydajności, układy charakteryzuje się mocą TDP, od kilku do kilkudziesięciu watów. Dysponują stosunkowo dużą mocą obliczeniową.
Na rynku istnieje wielu producentów komputerów jednopłytkowych, zgodnych z architekturą x86. Prym wiodą głownie firmy: AAEON, Kontron, Advantech, ELMA, JHCTEC. Ciekawie przedstawia się oferta firmy AAEON, która specjalizuje się głównie w komputerach jednopłytkowych w formacie 3,5” o handlowej nazwie GENE. Do dyspozycji mamy zarówno komputery SBC, od najtańszych, bazujących na procesorach serii Atom, poprzez bardziej wydajne, oparte na układach SOC serii Celeron G oraz J, skończywszy na najmocniejszych układach serii i3/i5/i7, znanych z laptopów. Jeden z najtańszych komputerów tego typu to płytka UPCCHT01A200116A11, zbudowana na bazie procesora Atom Z8350, posiadająca 1 GB pamięci RAM oraz 16 GB pamięci FLASH.
Komputer charakteryzuje się wymiarami 56×66 mm, zasilaniem 5 V oraz wyposażony jest w najważniejsze interfejsy komunikacyjne, takie jak: Bluetooth, WIFI, Ethernet. Dodatkowo do dyspozycji mamy złącza HDMI, eDP, MIPI, I2S oraz porty USB 2.0/3.0. Jego cena utrzymuje się w okolicach 400 zł. Należy liczyć się z tym, że moc obliczeniowa układu może być mniejsza niż niektórych komputerów SBC, wyposażonych w układy ARM, zwłaszcza serii A73.
Jeśli potrzebujemy większej wydajności, można skorzystać z płytek wyposażonych w układy Celeron, np. komputer UPSAPLC2A200432 (fotografia 10), którego sercem jest procesor Intel Celeron N3550. Komputer ma 4 GB pamięci RAM DDR4, 32 GB pamięci FLASH oraz dodatkowo wyposażony jest w sprzętowy układ kodowania wideo H264, HVEC4, VP8.
Zawiera również bardziej rozbudowaną listę interfejsów, gdzie do dyspozycji jest 40-pinowe złącze GPIO, podwójny interfejs Ethernet, złącze eDP/MIPI, złącze mPCI-E oraz SATA. Daje to duże możliwości rozbudowy, ponieważ mamy możliwość dołączenia dysku SATA, czy kart rozszerzeń od laptopów. Niestety cena tego rozwiązania jest ponad dwukrotnie większa, niż w przypadku poprzednio omówionego komputera.
Jeśli potrzebujemy najwyższej wydajności, możemy zastosować, bardzo podobny do poprzedniego, komputer jednopłytkowy o oznaczeniu UP XTREME WITH I78565U (fotografia 11). Sercem komputera jest znany z laptopów układ Intel Core i78565U charakteryzujący się zbliżoną do laptopów wydajnością i mocą TDP na poziomie 15 W. Do dyspozycji oddano 16 GB pamięci RAM DDR4 oraz 64 GB pamięci FLASH. Zestaw interfejsów komunikacyjnych jest bardzo podobny jak w poprzednim komputerze, dodano jedynie złącze M2 oraz interfejs DisplayPort. Jak łatwo zauważyć, ostatnia propozycja posiada parametry podobne do najbardziej wydajnych laptopów, co również okupione jest wysoką ceną, która wynosi ponad 3000 zł.
Innym bardzo popularnym producentem komputerów SBC jest firma „Kontron”, mająca w ofercie zarówno rozwiązania z procesorami firmy Intel, jak i AMD. Układy Intel mają bardzo podobne możliwości do poprzednio omówionych produktów, dlatego skupimy się na rozwiązaniach z układami firmy AMD. W ofercie pojawił się bardzo ciekawy komputer o oznaczeniu 3.5”-SBC-VR1000 (fotografia 12), który posiada procesory „Ryzen Embedded” serii V1000/R1000. Dzięki zastosowaniu układu, otrzymujemy wydajny procesor graficzny oraz sprzętowe wsparcie dla kodowania i dekodowania wideo w rozdzielczości 4k.
Płyta ma budowę modułową, a zatem w gestii użytkownika leży stosowne wyposażenie komputera w moduły pamięci SODIMM DDR, czy pamięć nieulotną FLASH w postaci dysku SSD M.2. Poza kosztem zakupu płyty, musimy zatem ponieść dodatkowe wydatki związane z zakupem pamięci czy dysku. Schemat blokowy komputera pokazano na rysunku 1. Do dyspozycji mamy bogaty zestaw złącz, począwszy od portów szeregowych, czy USB 3.0, poprzez złącze HDMI, skończywszy na podwójnym złączu Ethernet. Jest to bardzo ciekawa i tańsza alternatywa, zarówno dla procesorów Intel jak i niektórych komputerów z procesorami ARM.
Komputery SBC bazujące na architekturze ARM
Szybki rozwój architektury ARM oraz znaczny wzrost wydajności spowodował, że zaczęła ona stopniowo wypierać inne rozwiązania, zarówno w dziedzinie mikrokontrolerów jednoukładowych jak i komputerów jednopłytkowych. Sukces ten spowodowany jest stosunkowo dużą wydajnością, przy dużo mniejszym poborze prądu, w porównaniu do komputerów zbudowanych w oparciu o klasyczne mikroprocesory rodziny x86. Dzięki licencjom udzielanym przez firmę ARM, mikroprocesory są tańsze od konkurencyjnych rozwiązań, z uwagi, iż są produkowane przez wiele firm konkurujących ze sobą. Na tym polu szczególnie wyróżniają się chińscy producenci, którzy potrafią zaoferować układy SOC w cenie mikrokontrolerów jednoukładowych.
W ostatnim czasie, na rynku zaczęły pojawiać się układy SOC, posiadające zintegrowaną pamięć DDRRAM, dzięki czemu projekty zbudowane w oparciu o tego typu rozwiązania, są niewiele bardziej skomplikowane od aplikacji mikrokontrolerów jednoukładowych. Do najbardziej znanych producentów układów SOC należą firmy: AllWinner, Texas Instruments, NXP, FreeScale.
Komputery jednopłytkowe w dużej większości oparte są na procesorach aplikacyjnych rodziny CortexA. Czasami można spotkać komputery jednopłytkowe do zastosowań czasu rzeczywistego z procesorem CortexR. Rdzeń CortexA jest mikroprocesorem, posiadającym jednostkę zarządzania pamięcią MMU (Memory Management Unit), wraz z rozbudowanymi układami pamięci cache. Może on pracować zarówno w trybie jedno jak i wieloprocesorowym, w zależności od konfiguracji oraz wydajności. Obecnie SOCe budowane są jako najprostsze jednordzeniowe układy 32bitowe jak i wielordzeniowe rozwiązania 64-bitowe. W tabeli 3 pokazano listę najpopularniejszych rdzeni, wykorzystywanych w komputerach jednopłytkowych.
Firma ARM oferuje bogaty zestaw rdzeni, począwszy od najprostszych 32-bitowych układów o wydajności zbliżonej do mikrokontrolerów (np. Cortex-A7), po najbardziej wydajne 64-bitowe układy (np. Cortex-A53/77), których wydajność jest zbliżona do mikroprocesorów serii i3/i5/i7. Producenci układów półprzewodnikowych wykupują w firmie ARM licencję na wybrany rdzeń, wyposażają je w dodatkowe układy peryferyjne, a następnie oferują klientom zewnętrznym w postaci układów SOC. Schemat blokowy typowego układu SOC z rdzeniem ARM, pokazuje rysunek 2.
We wnętrzu układu możemy znaleźć klasyczne układy peryferyjne znane z mikrokontrolerów, takie jak porty szeregowe, interfejsy USB, przetworniki analogowo-cyfrowe, zintegrowane akceleratory graficzne GPU, układy czasowo-licznikowe, itp. Charakterystyczny dla tego typu rozwiązań jest brak wewnętrznej pamięci RAM oraz pamięci programu FLASH, które muszą być dołączone w postaci zewnętrznych komponentów. Pozostałe układy peryferyjne zintegrowane są we wnętrzu procesora, co pozwala znacząco zmniejszyć koszty produktu. Przyjrzyjmy się teraz najpopularniejszym układom SOC znanych producentów, wykorzystywanych w komputerach jednopłytkowych. Do najbardziej znanych układów należą SOCe rodziny „Sitara” produkowane przez „Texas Instruments”. Są to stosunkowo proste układy o średniej wydajności, jednak posiadają ugruntowaną pozycję rynkową, z uwagi na bardzo dobre wsparcie oraz wbudowane interfejsy, znajdujące zastosowania w automatyce przemysłowej. Listę układów rodziny „Sitara” wraz krótkim opisem pokazano w tabeli 4.
W skład rodziny „Sitara” wchodzi stosunkowo duży wachlarz układów, od najtańszych, z pojedynczym rdzeniem CortexA8, po dwurdzeniowe 64-bitowe CortexA53. Wśród urządzeń peryferyjnych stanowiących wyposażenie układu SOC, znajdują się procesory graficzne GPU, ze wsparciem dla akceleracji 2D oraz 3D, umożliwiające podłączenie ekranów LCD, czy też zewnętrznych monitorów. Dodatkowo na standardowym wyposażeniu, w zależności od modelu, mamy interfejsy: USB, kamery, porty ETHERNET, układy CAN. Niektóre z układów posiadają dodatkowe procesory wspomagające, np. DSP albo dodatkowy rdzeń CortexM, umożliwiający realizację algorytmów czasu rzeczywistego, czy przetwarzania DSP, których realizacja nie jest możliwa na procesorze aplikacyjnym, działającym na systemie operacyjnym ogólnego przeznaczenia.
Kolejnym znanym producentem układów SOC dla komputerów jednopłytkowych jest firma FreeScale, która słynie z doskonałych i tanich układów o nazwie handlowej i.MX. Układy znajdują zastosowania w motoryzacji, przemyśle oraz produktach konsumenckich. Jedną z najważniejszych zalet produktu jest gwarancja dostępności przez okres minimum 10...15 lat od wypuszczenia na rynek. Pozwala to producentom elektroniki na zmniejszenie kosztu związanego z migracją na nowsze rozwiązania, co często ma miejsce u dalekowschodnich producentów, którzy zaprzestają produkcji układów już po kilku latach. Seria i.MX jest bardziej rozbudowana w porównaniu z poprzednio omówioną rodziną, a do dyspozycji mamy następujące typy układów:
- i.MX5 – bazująca na pojedynczym rdzeniu CortexA8, wyposażona w akcelerator graficzny z460 firmy Imageon. Seria ta była chętnie stosowana w czytnikach ebooków;
- i.MX6 – bazująca na pojedynczym, podwójnym, albo poczwórnym rdzeniu CortexA9, które pracują z częstotliwością do 1 GHz. Została wykonana w litografii 40 nm. Zawiera akcelerator graficzny Vivante GC400/2000/400. W zależności od modelu, dodatkowo może posiadać rdzeń CortexM4;
- i.MX7 – bazująca na pojedynczym lub podwójnym rdzeniu CortexA7, wraz z dodatkowym procesorem CortexM4. Zaprojektowana w technologii 28 nm, z myślą o rozwiązaniach przemysłowych. Pozbawiona koprocesora graficznego;
- i.MX8 – pierwszy 64bitowy układ SOC zaprezentowany w 2016 roku zawierający w zależności od konfiguracji 4×CortexA53 + 2×CortexA72 oraz podwójny akcelerator graficzny Vivante GC7000, umożliwiający zarówno kodowanie jak i dekodowanie video H265. Rodzina wyposażona jest również w podwójny rdzeń CortexM4, na którym możemy uruchomić system operacyjny typu RTOS;
- I.MX8M – zaprezentowana w 2017 roku, charakteryzująca się następującymi parametrami: poczwórny rdzeń CortexA53 + CortexM4F, obsługa pamięci DDR4, USB 3.0 + PHY, dwa interfejsy USB 3.0 typ C, dwa interfejsy PCIE×1, HDMI 2.0, Ethernet gigabitowy, kodowanie i dekodowanie wideo 4k H264 i H265, SAI, UART, SDIO.
W zależności od wymagań, możemy skorzystać z najprostszych jednordzeniowych układów, albo wydajnych rozwiązań wielordzeniowych, wraz ze wsparciem dla obsługi wideo. Nie bez znaczenia jest również wsparcie techniczne ze strony producenta. Do dyspozycji mamy kod źródłowy dla bootloadera BSP, sterowniki urządzeń dla jądra Linuxa, oraz dodatkowe sterowniki dla enkodera i dekodera video. Jeśli chodzi o systemy operacyjne, możemy skorzystać zarówno z systemu Linux jak i systemu Android, FreeBSD, OpenBSD. Zatem wybór rozwiązań jest bardzo duży.
Innym znanym producentem jest chińska firma AllWinner, która pierwotnie zajmowała się dostarczaniem układów SoC dla najtańszych tabletów. Z czasem producenci komputerów jednopłytkowych dostrzegli potencjał tych układów, polegający na bardzo niskich cenach, niejednokrotnie zbliżonych do cen mikrokontrolerów jednoukładowych i coraz częściej stosowali tego typu układy w komputerach SBC. Portfolio układów firmy skupia się wokół linii A, przeznaczonej dla aplikacji multimedialnych, w skład której wchodzą następujące typy układów:
- Seria A2x/A3x – zbudowana w oparciu o dwa rdzenie CortexA7, ze zintegrowanym układem graficznym MALI400. Charakteryzuje się bardzo niskim kosztem zakupu rzędu 4 USD za sztukę;
- Seria A5x – wykonana w technologii 28 nm, wykorzystująca poczwórny rdzeń CortexA7, pracująca z częstotliwością 1,8 GHz oraz akceleratorem graficznym Mali P400MP2;
- Seria A6x – wykonana w technologii 28 nm, w oparciu o poczwórny rdzeń CortexA63, z akceleratorem graficznym Mali T760 MP2 oraz wsparciem dla kodowania i dekodowania wideo w rozdzielczości 4k;
- A10x/A20x/A30x – nowa linia zapowiedziana w 2019 roku. Do tej pory jeszcze nie podano specyfikacji tych układów, zapowiadając jedynie, że będą bardzo wydajne i tanie.
Jeśli chodzi o wsparcie programowe, to do dyspozycji mamy system Linux. Jednak z uwagi na dużą ilość „binarnych blobów” zawierających nieznany kod, firma wzbudza wiele kontrowersji, również poprzez nagminne łamanie licencji GPL. Bezpieczeństwo układów również jest kontrowersyjne, ponieważ w jądrze opublikowanym przez firmę zaleziono „tylną furtkę” umożliwiającą każdej zainstalowanej aplikacji dostęp do uprawnień root-a (administratora). Firma nie gwarantuje czasu życia produktu. Nie ma zatem żadnej gwarancji dostępności układów w dłuższym okresie czasu, co dyskwalifikuje ją w poważnych zastosowaniach przemysłowych.
Przejdźmy teraz do przeglądu komputerów jednopłytkowych, bazujących na rozwiązaniach SOC z układami ARM. Jeśli chodzi o wymiary takich komputerów, panuje tutaj większy bałagan niż w przypadku komputerów bazujących na x86. Istnieją co prawda płytki ARM zgodne ze standardem PC104, jednak stanowią one rzadkość, a producenci chętnie stosują własne rozwiązania niekompatybilne ze sobą. W ostatnim czasie możemy zaobserwować pewien postęp, ponieważ część producentów stara się dostosować zestaw złącz i zapewnić kompatybilność z komputerem Raspberry Pi, którego złącze główne pokazano na rysunku 3. Jest to klasyczne złącze męskie IDC40 z wyprowadzonymi funkcjami GPIO oraz zasilaniem, dodatkowo zdefiniowano funkcje alternatywne magistrali I2C, SPI, oraz zasilanie 3,3 V oraz 5 V.
Kolejnym coraz częściej spotykanym rozwiązaniem, urastającym do miana standardu, są komputery, które wykorzystują tanie i popularne złącza SODIMM, stosowane głównie w pamięciach do laptopów. W tym przypadku moduł, zamiast układów pamięci DDR PCB, zawiera kompletny komputer jednopłytkowy, który następnie jest wstawiany do bazy, wyposażonej w odpowiednie złącze. Przykład takiego rozwiązania pokazuje fotografia 13.
Rozwiązanie tego typu jest bardzo wygodne, ponieważ najbardziej skomplikowany fragment PCB, zawierający interfejsy pamięciowe DDR oraz inne sygnały szybkozmienne, znajdują się na stosunkowo małej, wielowarstwowej płytce PCB. Natomiast komponenty charakteryzujące się mniejszymi częstotliwościami pracy, możemy umieścić na czterowarstwowej płytce bazowej.
Do wad tego typu rozwiązań, można zaliczyć brak odporności na silne wstrząsy, więc nie nadają się do układów automotive, czy niektórych zastosowań przemysłowych.
Przegląd płytek SBC rozpoczniemy od doskonale wszystkim znanego komputera Raspberry Pi (fotografia 14), który doczekał się czwartej odsłony. Komputer wdarł się przebojem na rynek, do tego stopnia, iż prasa ogólnopolska pisała o nim w dziale technologie, czego nigdy wcześniej nie odnotowano w tego typu przypadkach. Komputer przez ową prasę był polecany głównie jako tani zamiennik domowego peceta, co jest nietrafionym zastosowaniem, z uwagi na małą moc obliczeniową.
Układ zawiera 4 GB pamięci operacyjnej, wyposażony jest w czterordzeniowy 64-bitowy procesor, z wysokowydajnymi rdzeniami CortexA72. Do komunikacji z siecią, służy moduł Wi-Fi 2,4 GHz/5 GHz lub port Ethernet. Urządzenie dysponuje układem graficznym, wspomagającym grafikę 3D, czy dekodowanie strumieni wideo. Największą zaletą rozwiązania jest bogata dokumentacja techniczna, masa przykładowego oprogramowania oraz doskonałe wsparcie społeczności. Komputer ten często znajduje zastosowanie przy opracowaniu prototypów oraz do realizacji hobbystycznych projektów. Z uwagi na umiejscowienie złącz oraz zastosowane komponenty, nie jest on przeznaczony do zastosowań przemysłowych. Dostępna jest również duża ilość akcesoriów oraz dodatkowych modułów, przeznaczonych do współpracy z tym urządzeniem, takich jak obudowy, czy dodatkowe płytki dołączane do 40-wyprowadzeniowego złącza, które pełni rolę swoistego standardu.
Przy omawianiu Raspberry, warto wspomnieć również o skromniejszym bracie Raspberry Pi Zero (fotografia 15), który posiada jednordzeniowy układ SoC, z nieco już leciwym rdzeniem CortexA11. Wyposażony jest on w 512 MB pamięci operacyjnej oraz procesor graficzny, umożliwiający wyświetlanie obrazu.
Największą zaletą tego komputera jest jego cena, wynosząca około 30 zł, co stawia pod znakiem zapytania sensowność używania większych mikrokontrolerów jednoukładowych, w niektórych prototypowych zastosowaniach. Należy mieć na uwadze, że model ten do działania potrzebuje karty SD, co podnosi koszty. Istotną zaletą jest to, że nie wlutowano złącza, a jedynie zostawiono pole lutownicze, więc możemy go połączyć z płytką bazową np. za pomocą odpowiednich kołków. Konstrukcja nie jest przeznaczona do stosowania w warunkach przemysłowych, zatem jeśli myślimy o poważniejszych zastosowaniach, dużo lepszym rozwiązaniem jest użycie płytki, która posiada zintegrowaną pamięć NAND Flash lub eMMC.
Innym ciekawym rozwiązaniem są komputery SOM firmy SOMLabs, które bazują na opisanym wcześniej formacie złącza SODIMM. Zestaw składa się z dwóch części: komputera oraz odpowiadającej mu płyty bazowej, którą będziemy mogli wykorzystać na etapie projektowania i prototypowania. Obecnie w ofercie firmy dostępne są następujące komputery jednopłytkowe:
- SLS16Yx – moduł bazujący na tanim układzie SOC i.MX 6ULL, taktowanym zegarem 900 MHz. Posiada 512 MB pamięci DDR3 oraz 32 GB pamięci FLASH. Wyposażony jest również w opcjonalny moduł Wi-Fi firmy Murata. Jest to jeden z podstawowych i najtańszych modułów dostępnych w ofercie;
- SLS12Rx – moduł bazujący na procesorze I.MX RT i rdzeniu CortexM7, taktowanym zegarem 528 MHz. Wyposażony w 256 MB pamięci DRAM oraz pamięć FLASH, o wielkości do 16 MB. Moduł przeznaczony jest dla systemów operacyjnych czasu rzeczywistego, np. możemy na nim uruchomić FreeRTOS. Jest to jedyny moduł w ofercie, nie korzystający z procesorów aplikacyjnych serii A.
- SLS18 – moduł bazujący na pierwszym układzie SOC firmy STM STM32MP1, posiadający rdzeń CortexA7 taktowany zegarem do 800 MHz, oraz dodatkowy rdzeń CortexM4 taktowany do 200 MHz. Układ zawiera akcelerator graficzny GPU Vivante, 512 MB pamięci DDR3 oraz 32 GB pamięci eMMC FLASH. Opcjonalnie może być wyposażony w moduł Wi-Fi Bluetooth firmy Murata.
- SLS23 – jest to najbardziej wydajny moduł dostępny w ofercie, integrujący 4rdzeniowy układ zgodny z rdzeniem CortexA53, taktowany zegarem do 1,8 GHz (i.MX8M). Dodatkowy rdzeń CortexM4 może służyć za koprocesor czasu rzeczywistego. Zawiera również rozbudowany układ graficzny Vivante GC320, sprzętowy dekoder H264/265 oraz interfejs Ethernet 1 Gbps.
Do każdego z zestawów producent oferuje podstawowe płytki bazowe, umożliwiające rozpoczęcie procesu prototypowania oraz projektowania oprogramowania urządzenia, z wykorzystaniem powyższych modułów. Na fotografii 16 pokazano płytę, przeznaczoną do współpracy z modułem SLS23. Zawiera ona złącze SODIMM (do którego należy podłączyć komputer), złącza MIPIDSI, MIPICSI, złącze Ethernet, PCIE. Godny odnotowania jest również fakt wyprowadzenia złącza IDC40, zgodnego z wyprowadzeniami Raspberry Pi.
Jeżeli wydajność nie jest kluczowym czynnikiem, dobrym wyborem wydają się płytki wyposażone w mikrokontroler Sitara AM335x firmy Texas Instruments (fotografia 17). Ciekawym rozwiązaniem wykorzystującym ten układ jest BeagleBone Black, taktowany z częstotliwością 1 GHz, posiadający 512 MB pamięci RAM oraz 4 GB pamięci FLASH. Komputer ma podstawowe interfejsy komunikacyjne: USB, HDMI oraz Ethernet.
Ciekawym rozwiązaniem do nabycia za około 100 zł jest płytka Nano Pi Neo 2, dysponująca 64bitowym 4rdzeniowym procesorem CortexA53, taktowanym zegarem 1 GHz. Rozwiązanie wyposażone jest w 512 GB pamięci operacyjnej DDR3 oraz pamięć eMMC o wielkości 8 GB, na której możemy zainstalować system operacyjny oraz nasze oprogramowanie. Jeśli chodzi o interfejsy komunikacyjne, do dyspozycji mamy gigabitowe złącze Ethernet oraz dwa porty USB.
Jeżeli w projekcie wymagana jest duża moc obliczeniowa oraz wsparcie GPU, np. do przetwarzania obrazów czy wirtualnej rzeczywistości, bardzo ciekawą propozycją jest płytka Nvidia Jetson Nano (fotografia 18) wyposażona w 4 rdzeniową jednostkę centralną z rdzeniami CortexA53 oraz procesor graficzny Nvidia Maxell ze 120-ma rdzeniami CUDA. Całość taktowana jest częstotliwością 1,43 GHz.
Jeśli potrzebujemy komputera o bezkompromisowej wydajności zarówno dla mocy obliczeniowej CPU, jak i GPU, np. w rozwiązaniach rzeczywistości wirtualnej, inteligentnych samochodach, dronach itp. Możemy skorzystać z płytki Jetson TX2 firmy Nvidia (fotografia 19). Komputer wyposażony jest w GPU w architekturze PASCAL, zawierającą 256 rdzeni CUDA o łącznej wydajności 1.3 TFLOPS. Jeśli chodzi o CPU, posiada dwa wysokowydajne autorskie rdzenie Denver 2 oraz 4 rdzenie Corex-A57. Dodatkowo procesor zawiera sprzętowe kodeki audio i video, pracujące w rozdzielczości 4k, interfejs do kamery oraz wyświetlacza. Układ charakteryzuje się poborem prądu na poziomie 7,5 W. Bardzo istotny jest również fakt, że producent zapewnia pełne wsparcie programowe zarówno dla GPU, jak i CPU. Wysoka wydajność niestety okupiona jest stosunkowo wysoką ceną, która wynosi około 400 USD.
Oprogramowanie oraz wsparcie
Oprócz samego sprzętu, bardzo ważne jest oprogramowanie oraz wsparcie udzielane przez producenta. Nawet najlepsza i tania płytka nie będzie godna uwagi, pozbawiona wsparcia lub sterowników urządzeń dla układów peryferyjnych. Dlatego warto wybrać takiego producenta, który gwarantuje długą dostępność produktu, oraz wsparcie techniczne na odpowiednim poziomie.
Nie każda firma ma wystarczające zasoby ludzkie, aby zapewniać wsparcie dla komputera SBC we własnym zakresie. Cała siła komputerów jednoukładowych drzemie w przeniesieniu wsparcia na firmę producenta, co pozwala zaoszczędzić czas oraz pieniądze i jest istotne w przypadku produkcji niskonakładowej.
Jeśli chodzi o wybór systemów operacyjnych dla komputerów jednopłytkowych, to w systemach wbudowanych, króluje Linux, z uwagi na przenośność, dostępność kodu źródłowego oraz wsparcie społeczności. System GNU/Linux możemy uruchomić w zasadzie na dowolnym komputerze jednopłytkowym zarówno zbudowanym na architekturze x86 jak i ARM (może z wyjątkiem komputerów z rdzeniem CortexM/R). Z uwagi na otwartość systemu, możemy wykorzystać gotowe dystrybucje lub, jeśli zależy nam na wydajności, zbudować bezpośrednio z kodu źródłowego, np. bazując na narzędziu Yocto. Dostępność źródeł znacząco upraszcza późniejszą analizę kodu oraz umożliwia uzyskanie maksimum wydajności z danego komputera, poprzez ustawienie odpowiednich flag kompilacji, czy wykorzystanie tylko niezbędnych komponentów. Jeśli zakupiliśmy komputer jednopłytkowy, zazwyczaj otrzymamy zestaw sterowników urządzeń dostępnych na płytce, czy dystrybucje Linuxa opracowaną przez producenta. Nie bez znaczenia jest również fakt, że korzystając z otwartego oprogramowania, nie musimy ponosić kosztów licencji, które w przypadku systemu Windows bywają równoważne do wartości zastosowanego sprzętu. Istotnym faktem jest również to, że system Windows w zasadzie dostępny jest jedynie dla komputerów zgodnych z x86. Istnieje co prawda dystrybucja Windows przeznaczona dla architektury ARM, jednak model dystrybucyjny oprogramowania dla Windows, w postaci kodu binarnego aplikacji, dyskwalifikuje to rozwiązanie.
Podsumowanie
Szeroka dostępność komputerów jednopłytkowych, zarówno o wydajności niewiele większej od mikrokontrolerów, po bardzo rozbudowane układy o wydajności komputerów PC, pozwala producentom na tworzenie urządzeń w niewielkich seriach produkcyjnych, które posiadają zaskakujące możliwości, bez poświęcania dużych nakładów i środków na przygotowanie sprzętu oraz oprogramowania. Wystarczy zaprojektować odpowiedni moduł wykonawczy dla komputera SBC oraz napisać aplikację końcową, realizującą wymagane zadania. Wszystkie problemy związane z pisaniem sterowników urządzeń oraz inne zagadnienia niskopoziomowe, związane z systemem, zostają przerzucone na producenta SBC, a my możemy się skupić na funkcjonalności.
Dzięki takiemu podejściu znacząco zmniejszamy czas, potrzebny na opracowanie produktu i dostarczenia go na rynek, zmniejszając koszty R&D. Najbardziej wydajne komputery SBC często również są wykorzystywane w rozwiązaniach typu info kioski, czy systemy rozrywki, ponieważ są tańsze od komputerów PC, a ich wydajność w tych zastosowaniach jest wystarczająca. Nie bez znaczenia jest również dużo mniejszy pobór energii (procesory ARM). W przypadku, gdy zależy nam na utrzymaniu zgodności programowej z komputerem PC i systemem Windows, będziemy musieli skorzystać z układów zbudowanych w oparciu o mikroprocesory x86.
Lucjan Bryndza, EP
lucjan.bryndza@boff.pl