Kiedy 8 lat temu zaczęły pojawiać się pierwsze informacje prasowe, dotyczące komputera jednopłytkowego Raspberry Pi, został on okrzyknięty pogromcą typowych komputerów PC w zastosowaniach biurowych i edukacyjnych. Pomimo, że szumnie ogłaszana rewolucja nie nastąpiła, to komputer Raspberry Pi mocno wpisał się w najnowszą historię informatyki i jest obecnie coraz częściej spotykany w standardowym użyciu, nawet przez osoby niezwiązane zawodowo z systemami wbudowanymi.
W artykule omówię dwa proste sposoby realizacji funkcjonalności Screen Mirroring, czyli przesłania i wyświetlenia zawartości ekranu urządzenia mobilnego na zewnętrzny ekran stacjonarny. Do realizacji zadania użyję telefonu z systemem Android oraz dwóch komputerów jednopłytkowych – wydajny pod kątem aplikacji multimedialnych Raspberry Pi 4, oraz przystosowany głównie do zadań kontrolnopomiarowych, zestaw SoMLabs VisionSOM6ULL [1], z energooszczędnym procesorem NXP i.MX6ULL. Wybór dwóch różnych platform sprzętowych pozwoli na dobór różnych rozwiązań programowych, dopasowanych pod kątem możliwości oferowanych przez sprzęt – od prostych wywołań z pakietu funkcji dostarczanych przez projekt GStreamer [2], aż do kompilacji otwartoźródłowego i funkcjonalnego projektu scrcpy [3].
VisionSOM6ULL i GStreamer
Proces implementacji funkcji realizującej Screen Mirroring rozpoczniemy od platformy VisionSOM6ULL, z przeznaczonym dla niej wyświetlaczem LCD oraz modułem wyposażonym w gniazdo karty pamięci SD. Pomimo, że procesory i.MX6ULL nie mają wyspecjalizowanych układów sprzętowych do dekodowania strumieni wideo i wsparcia dla grafiki 2D/3D (co przekłada się na znacznie niższy koszt procesora w porównania do lepiej wyposażonych układów z rodziny i.MX), nie uniemożliwia to jednocześnie implementacji wydajnej obsługi przesyłania i dekodowania obrazu – operacja ta wymaga jednak od użytkownika systemu nieco więcej zabiegów programowych w procesie przygotowania systemu.
Prace nad projektem rozpoczynamy od przygotowania karty z systemem operacyjnym Linux. Producent komputera – firma SoMLabs – na stronach Wiki swojego produktu dostarcza użytkownikowi wsparcia w postaci gotowych obrazów z dystrybucją Debian oraz opisem budowy obrazów, z użyciem takich narzędzi jak Buildroot oraz Yocto. Zastosuję gotowe obrazy systemu, z dystrybucją Debian w wersji Stretch (na stronie producenta udostępniono również nowszą wersję dystrybucji – Debian Buster – z wbudowaną obsługą przeznaczonego wyświetlacza LCD).