SoM – co to jest?
Urządzenia System on Module to minikomputery z ogromną mocą obliczeniową i niskim poborem energii o bardzo małych rozmiarach. Niewielkie wymiary, wielka moc, duża liczba interfejsów i szeroki zakres temperatury pracy, sprawiają że moduły SoM są obecnie szeroko stosowane szczególnie w aplikacjach przemysłowych. Moduły SoM z nowoczesnymi procesorami ARM umożliwiają łatwe opracowywanie wymagających aplikacji wykorzystujących system Linuks (to by było na tyle "encyklopedycznych" informacji).
Z takich względów zainteresowałem się i ja tymi modułami. Producentów jest wielu, ja wybrałem do zapoznawania się z tymi rozwiązaniami, polskiego producenta firmę SoMLabs.
strona modułami SoM
Na start wybrałem moduł VisionSOM-6ULL (SLS16Yx) w komplecie z płytą bazową VisionCB-STD oraz wyświetlaczem SL-TFT7-TP-800-480. strona z opisem i dokumentacją VisionSOM-6ULL
Przygotowanie karty SD z systemem Debian 9.2 dla VisionSOM-6ULL
Wyroby firmy SoMLabs mają również swoją stronę Wiki, gdzie są umieszczone niezbędne materiały, pomocne przy starcie.główna strona Wiki produktów SoMLabs
strona Wiki modułu VisionSOM-6ULL
Strony SoMLabs niestety są jedynie w języku angielskim, co mnie nieco dziwi, choć z drugiej strony współczesny konstruktor powinien znać ten język przynajmniej w stopniu biernym, jednak mimo wszystko wersja polskojęzyczna powinna być (jest to Polska firma).
Dla wybranego modułu (w moim przypadku VisionSOM-6ULL) jest odpowiednia strona zawierająca wszelką dokumentację techniczną oraz bardzo przydatne na starcie przewodniki jak np. „Debian Developer Guide”, od którego zacząłem.strona "Debian Developer Guide"
Informacje na temat zasilania
Na początek warto zapoznać się z wymaganiami odnośnie zasilania i tu przychodzi z pomocą odpowiednia podstrona z Wiki „VisionCB-STD Power Supply”
Jak widać na obrazku są dwa sposoby zasilania zestawu:
- poprzez złącze PWR-C czyli micro-USB (które podłączone do PC daje możliwość uzyskania komunikacji poprzez USB-UART znajdującego się na VisionCB-STD), to źródło zasilania jest wystarczające o ile nie podłączy się innych urządzeń zewnętrznych.
- poprzez złącze 9-12V DC (złącze 2.1x5.5 z + w środku), z tego zasilania trzeba korzystać przy podłączeniu do zestawu chociażby ekranu czy innych urządzeń zewnętrznych, zalecany jest zasilacz 12V/2A.
Przygotowanie karty SD
Przygotować kartę SD dla VisionSOM-6ULL można na PC z systemem Windows lub Linuks, ja wybrałem Linuks (sam się sobie dziwię, bo to dodatkowa praca dla mnie gdyż nie korzystam na co dzień z tego środowiska, to nie jest moje środowisko naturalne). Co trzeba przygotować?
Wymagania wstępne
Wszystko jest opisane na stronie Wiki „Jak przygotować kartę SD z Debianem 9.2 dla VisionSOM-6ULL na Linuksie”, a jeśli na otwartej stronie damy tłumaczenie na język polski, to wersja polska jest bardzo dobrze przetłumaczona, w Chrome wystarczy nacisnąć PPM i wybrać „Przetłumacz na język polski”). Nie jest jednak w moim odczuciu, tak jasno i prosto wszystko opisane, jest według mnie nieco chaosu (albo moje odczucia wynikają z podstawowej wiedzy na temat linuksa). Brakuje mi takiego przewodnika w całości, typu "step by step", który pozwoli uruchomić kompletny zestaw, składający się z modułu, płyty bazowej oraz wyświetlacza z TouchScreenem. Niby wszystko jest ale porozrzucane w rożnych stronach wiki i do tego jakby niezupełnie ze sobą treści są "kompatybilne". Być może to wystarczy dla fachowców ale można by to dopracować aby nie zniechęcać na samym starcie.
Co jest więc potrzebne:
- Komputer z Linuksem – ja zainstalowałem na starym ThinkPad R500 dystrybucję Ubuntu 18.04 (SoMLabs zaleca 16.04 gdyż inne wersje i dystrybucje mogą wymagać dodatkowych operacji)
- Karta micro SD, 4 GB lub większa, ja wybrałem taką jaką akurat mam, czyli micro SD 32GB firmy GOOD RAM
- Obraz Debiana dostępny pod tym adresem Debian Stretch 9.2 for VisionSOM-6ULL
Pobieranie i zapisywanie obrazu na karcie microSD
Pierwszym krokiem jest pobranie obrazu przygotowanego przez SoMLabs (ja wybrałem Debiana na start, jest jeszcze projekt YOCTO dla tych modułów). Dla wyjadaczy linuksowych jest proste, co trzeba wpisać aby tego dokonać ale ja wolę takie polecenia notować. Wpisuję w otwartym terminalu:
Kod: Zaznacz cały
wget http://ftp.somlabs.com/debian-stretch-visionsom-6ull.img.xz
co spowoduje pobranie do katalogu /home/wojtek/ obrazu systemu wskazanego w poleceniu „wget”, w sumie to samo się osiągnie otwierając w przeglądarce wskazany link z obrazem i zapisując plik do katalogu domowego, no ale postanowiłem być linuksowym twardzielem:
Jak widać plik o nazwie „debian-stretch-visionsom-6ull.img.xz” posłusznie zapisał się w lokalizacji /home/wojtek/
Następną czynnością jest rozpakowanie pobranego pliku i zapisanie go na karcie SD (karta micro SD włożona do czytnika PC). Znowu mamy do wyboru dwie ścieżki, czyli prawdziwego twardziela albo taką „okienkową”, korzystając z możliwości GUI Ubuntu.
Zapisanie obrazu na karcie SD – sposób „okienkowy”
W sumie tutaj postępuje się tak jakby systemem na którym pracujemy był Windows, czyli zero terminali i wpisywania „tajemnych poleceń”. Wszystko pokazują poniższe zrzuty.
Jak widać na zrzutach powyżej, obraz systemu zapisał się na karcie SD. Po czym włożyłem kartę SD do mojego zestawu i uruchomiłem, zasilając poprzez port micro USB, jednocześnie uruchamiając w terminalu mincom (jak go zainstalować to nieco później), który połączy poprzez konwerter UART-USB (będący na pokładzie płyty bazowej) uruchomiony moduł SOM z linuksowym PC, co widać poniżej. Jak widać jestem zalogowany jako root na systemie Debian, zainstalowanym w moim module VisionSOM-6ULL.
Zapisanie obrazu na karcie SD – sposób „linuksowego twardziela”
To samo, co wyżej (instalacja systemu Debian na karcie SD) w wykonaniu prawdziwego twardziela linuksowego (jakim powoli zaczynam być). Po ściągnięciu obrazu poleceniem
Kod: Zaznacz cały
wget http://ftp.somlabs.com/debian-stretch-visionsom-6ull.img.xz
należy ściągnięty obraz wyodrębnić i zapisać w katalogu domowym, w tym celu wydajemy w terminalu polecenie:
Kod: Zaznacz cały
unxz debian-stretch-visionsom-6ull.img.xz
Jak widać plik o nazwie „debian-stretch-visionsom-6ull.img.xz” został zastąpiony wyodrębnionym plikiem „debian-stretch-visionsom-6ull.img”. Teraz czas na zapisanie obrazu na karcie SD. Oczywiście karta micro SD musi być włożona do czytnika kart PC-ta. No i teraz trzeba trochę linuksowych „czarów”, czyli należy dowiedzieć się jak identyfikowana jest karta SD w naszym komputerze z systemem linuks. Należy więc wpisać w terminalu następujące polecenie
Kod: Zaznacz cały
sudo parted -l
w wyniku czego otrzymujemy takie informacje, jak na zrzucie poniżej
Jak widać u mnie karta SD została zidentyfikowana jako „/dev/mmcblk0”, należy to zapamiętać, gdyż trzeba poprawnie wskazać, gdzie ma być zapisany obraz systemu! A więc kolej na następne czary, wpisujemy w terminal polecenie (według przewodnika "How to prepare SD card with Debian 9.2 for VisionSOM-6ULL on Linux"), które spowoduje zapisanie obrazu na kartę SD:
Kod: Zaznacz cały
sudo dd if=debian-stretch-visionsom-6ull.img of=/dev/mmcblk0 bs=64k
po tym poleceniu otrzymałem:
Tu rodzi się od razu u mnie pytanie, wynikające z informacji zamieszczonych w EP 3/2018 gdzie opisywany jest temat "Emulator konsoli NES
w systemie Linux na komputerze VisionSOM", tam przeniesienie obrazu systemu na kartę SD jest wykonane poleceniem:
Kod: Zaznacz cały
sudo dd if=./debian-stretch-visionsom-6ull.img of=/dev/mmcblk0 bs=4M oflag=dsync
- Pytanie 1 - czemu takie różnice, że w jednym przypadku jest tam "bs=64k", a w drugim "bs=4M oflag=dsync" i jakie to niesie za sobą skutki?
Czyli system Debian zainstalowany na karcie SD. Trzeba samemu ocenić jak lepiej zrobić tą operację. Po włożeniu karty do zestawu i uruchomieniu minicoma (o instalacji i uruchomieniu minicoma, nieco później), mam działający system:
Nie należę do szczególnie cierpliwych i skoro dotarł do mnie wyświetlacz i mam cały komplet, to postanowiłem go podłączyć. Ku mojemu jednak rozczarowaniu okazało się, że tak przygotowany obraz systemu Debian, do tego zestawu, nie uwzględnia obsługi dedykowanego wyświetlacza, wprawdzie znalazłem później informację na ten temat ale .... Wydaje mi się, że firma powinna taki obraz przygotować. Poniżej zdjęcie nieudanej próby uruchomienia wyświetlacza.
Oprócz tego, że nie wyświetla poprawnie obrazu to jeszcze wyraźnie wszystko jest zablokowane i nawet na reset nie reaguje (zasilanie było poprawne 12V/2A).
.................ciąg dalszy nastąpi wkrótce ..........