SantyagoSantyago
Avatar

Witaj!
Blog archiwalny. Już niebawem nowy serwis!

YouTube RSS Facebook GitHub

Tak jak obiecałem, przedstawiam Wam pierwszą betę własnego systemu Sunflower Linux 1.0 dla Iteaduino Plus A10. W odróżnieniu od IteadOS przedstawia się następująco:

  • Podstawka Linaro 12.11 Precise Pangolin,
  • Jądro Linux 3.4.67+,
  • Sterownik FBTURBO z akceleracją srzętową G2D dla X11 / 2D,
  • Sprzętowa akceleracja OpenGL ES. 2.0,
  • Obsługa Cedar / CedarX,
  • XBMC 12.2 z obsługą OpenGL ES 2.0 + Librhybris,
  • Możliwy wybór rozdzielczości 720p / 1080p za pomocą pliku boot.scr,
  • Rezerwacja 128MB dla Mali400 oraz 128MB dla G2D,
  • HDMI Audio Output,
  • Optymalizacja systemu plików,
  • Optymalizacja biblioteki libiteadIO - maksymalna prędkość 1.1MHz

Instalacja

Instalacja przebiega identycznie jak w przypadku IteadOS. Należy pobrać, rozpakować i wypalić obraz systemu na karcie microSD:

Uwaga! Należy zwrócić szczególną uwagę na urządzenie docelowe /dev/sdX, abyśmy przypadkiem nie wykasowali sobie ważnego dysku. Karta pamięci musi mieć minimum 4GB.

  1. # wget https://dl.dropboxusercontent.com/s/gz3a9s6bgskp6wk/sunflower-1.0-beta1.img.7z
  2. # 7z e sunflower-1.0-beta1.img.7z
  3. # dd if=sunflower-1.0-beta1.img of=/dev/sdX

Tak przygotowaną kartę microSD wkładamy do slotu kart pamięci i uruchamiamy. Jeśli system wykryje większy kartę niż 4GB, system plików zostanie automatycznie rozszerzony do jej maksymalnego rozmiaru.

Akceleracja 2D w X11 za pomocą G2D / FBTURBO

Sunflower Linux posiada sterownik FBTURBO, który wykorzystuje silnik akceleracji G2D dla X11. Na jego potrzeby zostało zarezerwowane 128MB pamięci.

  1. [    13.274] (II) FBTURBO: driver for framebuffer: fbturbo
  2. [    13.330] (II) FBTURBO(0): using /dev/fb0
  3. [    13.330] (II) FBTURBO(0): Creating default Display subsection in Screen section
  4. [    13.330] (==) FBTURBO(0): Depth 24, (==) framebuffer bpp 32
  5. [    13.330] (==) FBTURBO(0): RGB weight 888
  6. [    13.330] (==) FBTURBO(0): Default visual is TrueColor
  7. [    13.330] (==) FBTURBO(0): Using gamma correction (1.0, 1.0, 1.0)
  8. [    13.330] (II) FBTURBO(0): hardware:  (video memory: 10800kB)
  9. [    13.331] (**) FBTURBO(0): Option "fbdev" "/dev/fb0"
  10. [    13.331] (**) FBTURBO(0): Option "SwapbuffersWait" "true"
  11. [    13.331] (II) FBTURBO(0): processor: Late ARM Cortex-A8 (NEON can bypass L1 cache)
  12. [    13.331] (II) FBTURBO(0): checking modes against framebuffer device...
  13. [    13.331] (II) FBTURBO(0): checking modes against monitor...
  14. [    13.331] (--) FBTURBO(0): Virtual size is 1280x720 (pitch 1280)
  15. [    13.331] (**) FBTURBO(0):  Built-in mode "current": 74.2 MHz, 37.5 kHz, 50.0 Hz
  16. [    13.332] (==) FBTURBO(0): DPI set to (96, 96)
  17. [    13.355] (II) FBTURBO(0): using backing store heuristics
  18. [    13.430] (II) FBTURBO(0): enabled G2D acceleration
  19. [    13.430] (==) FBTURBO(0): Backing store disabled
  20. [    13.431] (==) FBTURBO(0): DPMS enabled
  21. [    13.431] (II) FBTURBO(0): using sunxi disp layers for X video extension
  22. [    13.431] (II) FBTURBO(0): using hardware cursor
  23. [    13.481] (II) FBTURBO(0): enabled display controller hardware overlays for DRI2
  24. [    13.481] (II) FBTURBO(0): Wait on SwapBuffers? enabled
  25. [    13.481] (II) FBTURBO(0): [DRI2] Setup complete
  26. [    13.481] (II) FBTURBO(0): [DRI2]   DRI driver: lima
  27. [    13.482] (II) FBTURBO(0): using DRI2 integration for Mali GPU (UMP buffers)
  28. [    13.482] (II) FBTURBO(0): Mali binary drivers can only accelerate EGL/GLES
  29. [    13.482] (II) FBTURBO(0): so AIGLX/GLX is expected to fail or fallback to softwar

Akceleracja 3D - OpenGL ES 2.0

Uzyskany wynik w glmark2-es2 to 45 punktów.

  1. # glmark2-es2
  1. [build] use-vbo=false: FPS: 50 FrameTime: 20.000 ms
  2. [build] use-vbo=true: FPS: 50 FrameTime: 20.000 ms
  3. [texture] texture-filter=nearest: FPS: 50 FrameTime: 20.000 ms
  4. [texture] texture-filter=linear: FPS: 50 FrameTime: 20.000 ms
  5. [texture] texture-filter=mipmap: FPS: 50 FrameTime: 20.000 ms
  6. [shading] shading=gouraud: FPS: 50 FrameTime: 20.000 ms
  7. [shading] shading=blinn-phong-inf: FPS: 50 FrameTime: 20.000 ms
  8. [shading] shading=phong: FPS: 50 FrameTime: 20.000 ms
  9. [bump] bump-render=high-poly: FPS: 50 FrameTime: 20.000 ms
  10. [bump] bump-render=normals: FPS: 50 FrameTime: 20.000 ms
  11. [bump] bump-render=height: FPS: 50 FrameTime: 20.000 ms
  12. [effect2d] kernel=0,1,0;1,-4,1;0,1,0;: FPS: 25 FrameTime: 40.000 ms
  13. [effect2d] kernel=1,1,1,1,1;1,1,1,1,1;1,1,1,1,1;: FPS: 16 FrameTime: 62.500 ms
  14. [pulsar] light=false:quads=5:texture=false: FPS: 49 FrameTime: 20.408 ms
  15. [desktop] blur-radius=5:effect=blur:passes=1:separable=true:windows=4: FPS: 16 FrameTime: 62.500 ms
  16. [desktop] effect=shadow:windows=4: FPS: 50 FrameTime: 20.000 ms
  17. [buffer] columns=200:interleave=false:update-dispersion=0.9:update-fraction=0.5:update-method=map: Unsupported
  18. [buffer] columns=200:interleave=false:update-dispersion=0.9:update-fraction=0.5:update-method=subdata: FPS: 26 FrameTime: 38.462 ms
  19. [buffer] columns=200:interleave=true:update-dispersion=0.9:update-fraction=0.5:update-method=map: Unsupported
  20. [ideas] speed=duration: FPS: 50 FrameTime: 20.000 ms
  21. [jellyfish] <default>: FPS: 50 FrameTime: 20.000 ms
  22. [conditionals] fragment-steps=0:vertex-steps=0: FPS: 50 FrameTime: 20.000 ms
  23. [conditionals] fragment-steps=5:vertex-steps=0: FPS: 50 FrameTime: 20.000 ms
  24. [conditionals] fragment-steps=0:vertex-steps=5: FPS: 58 FrameTime: 17.241 ms
  25. [function] fragment-complexity=low:fragment-steps=5: FPS: 50 FrameTime: 20.000 ms
  26. [function] fragment-complexity=medium:fragment-steps=5: FPS: 50 FrameTime: 20.000 ms
  27. [loop] fragment-loop=false:fragment-steps=5:vertex-steps=5: FPS: 50 FrameTime: 20.000 ms
  28. [loop] fragment-steps=5:fragment-uniform=false:vertex-steps=5: FPS: 50 FrameTime: 20.000 ms
  29. [loop] fragment-steps=5:fragment-uniform=true:vertex-steps=5: FPS: 50 FrameTime: 20.000 ms

XBMC 12.2 z akceleracją sprzętową za pomocą CedarX / Libhybris

Na pokładzie znajdziecie również XBMC 12.2 działające pod OpenGL ES 2.0, które wykorzystuje biblioteki CedarX oraz Libhybris do sprzętowego dekodowania materiałów video 720p / 1080p. Jak sobie z tym radzi? Zobaczycie również na filmie, który znajdziecie na dole tego wpisu. Demonstrację przeprowadzono w dwóch rozdzielczościach: 1280x720 oraz 1920x1080.

Ponieważ XBMC 12.2 korzysta z framebuffera, można go uruchomić zarówno spod X11 jak i bez niego (można zrobić sobie fajne HTPC). Obecnie występuje problem z przechwyceniem myszki i klawiatury, gdy uruchomimy XBMC pod X11 jako zwykły użytkownik. Dopóki nie rozwiążę tego problemu, zalecam uruchomić XBMC za pomocą polecenia sudo. Kiedy nie korzystamy z X11, problem ten nie występuje.

  1. # sudo /allwinner/xbmc-pvr-binhf/bin/xbmc

Zmiana rozdzielczość. 1280x720 / 1920x1080

Zmiana rozdzielczości jest możliwa za pomocą pliku boot.scr znajdującego się na pierwszej partycji.

Wybór rozdzielczości 1280x720

  1. # sudo su
  2. # mount /dev/mmcblk0p1 /mnt/
  3. # cd /mnt
  4. # cp boot-720.scr boot.scr
  5. # reboot

Wybór rozdzielczości 1920x1080

  1. # sudo su
  2. # mount /dev/mmcblk0p1 /mnt/
  3. # cd /mnt
  4. # cp boot-1080.scr boot.scr
  5. # reboot

Inne optymalizacje

Sunflower Linux 1.0 beta 1 posiada jeszcze szereg innych optymalizacji, które mają wpływ na szybsze działanie GPIO oraz systemu plików.  Nie jest to jeszcze to co chciałem osiągnąć, ale to jeszcze nie jest moje ostatnie słowo. Bardzo zależy mi na znacznym przyśpieszeniu GPIO poprzez optymalizację biblioteki libiteadIO.

Demonstracja


Sprzęt do testu dostarczył sklep
ArduinoSolutions.

Reklama

W dzisiejszym odcinku na temat Iteaduino Plus zajmiemy się interfejsem GPIO, który udostępnia 123 piny I/O. Większość pinów jest wielofunkcyjnych, oferując między innymi: I2C, SPI, UART, RGB/LVDS oraz CSI/TS. Na spodzie znajdziemy również 4 gniazda Grove oraz w pełni zgodny z Raspberry Pi interfejs.

Mapa pinów GPIO

Mapa pinów Grove oraz RaspberryPI

Jestem Arduino

System IteadOS pozwala na pisanie  programów w języku C /  C++, udostępniając dobrze znane funkcje z Arduino, takie jak: digitalRead, digitalWrite, analogWrite, delay itp. SDK umożliwia również z korzystania z szyn danych 8- i 16 bitowych.

Pełną listę funkcji można znaleźć w dokumentacji SDK 0.1b 20130823. My zaczniemy jednak klasycznie - od mrugania diodą LED, którą podłączyłem do pinu 59. Tworzymy sobie w edytorze plik o nazwie blink.c, do którego wpisujemy taki oto programik:

  1. #include <itead.h>
  2.  
  3. int main()
  4. {
  5.     pinMode(59,OUTPUT);
  6.  
  7.     while(1)
  8.     {
  9.         digitalWrite(59, HIGH);
  10.         delay(250);
  11.         digitalWrite(59, LOW);
  12.         delay(250);
  13.     }
  14. }

Kiedy mamy już nasz program, musimy go skompilować za pomocą polecenia iteadcompile:

# sudo iteadcompile blink blink.c

[/bash]

Jeśli wszystko przebiegnie prawidłowo, możemy przystąpić do uruchomienia programu wynikowego blink, a dioda powinna radośnie mrugać w odstępach 250ms.

  1. # sudo blink

Pojawia się pytanie - jak szybkie jest GPIO w Iteaduino Plus. Możemy zmierzyć czas, jaki jest potrzebny na wystawienie na wyjściu dwóch milionów przełączeń, pomiędzy stanem wysokim, a stanem niskim. Po krótkim teście można stwierdzić, że prędkość GPIO sięga jedynie do 967 kHZ, podczas gdy Raspberry Pi potrafi rozpędzić się do 4.7 MHz. Zakładam, że jest to problem optymalizacji biblioteki libiteadIO, która nie do końca została dopracowana w wersji beta systemu.

GPIO via Python

Do GPIO również mamy dostęp z poziomu Pythona, który również korzysta z biblioteki libiteadIO. Dzięki Pythonowi możliwe jest tworzenie aplikacji graficznych, które mają dostęp do interfejsu GPIO. Tutaj sprawdzimy działanie funkcji analogWrite, która posłuży nam jako PWM dla diody RGB.

  1. from ctypes import *
  2. from Tkinter import *
  3.  
  4. def pwm(ev=None):
  5.     clib.analogWrite(c_int(59), c_int(scale.get()))
  6.  
  7. clib = cdll.LoadLibrary("/usr/local/lib/libiteadIO.so")
  8.  
  9. root=Tk()
  10. scale = Scale(root, from_ = 0, to = 255, resolution = 1, orient = HORIZONTAL, command = pwm)
  11. scale.pack()
  12.  
  13. root.mainloop()

Po uruchmieniu otrzymujemy suwak, którym regulujemy wypełnienie PWM.

Tutaj pojawia się przeszkoda. PWM realizowane jest w sposób symulacji, poprzez dodanie wątka thread przez bibliotekę libiteadIO. Problem polega na tym, że biblioteka nie radzi sobie z więcej niż jednym pinem w trybie PWM, ponieważ wątki są nadpisywane :) Ale, że jest to wersja beta - wybaczam. Na szczęście, źródła biblioteki libiteadIO są ogólnie dostępne i z chęcią wcisnę z tego więcej możliwości. Póki co, aby wysterować np.: diodę RGB, musimy przygotować trzy skrypty :) każdy z własnym wątkiem symulacji PWM.

Jest to o tyle pocieszające, że nie jest to problem sprzętowy, a jedynie programowy, który można poprawić w przyszłości.


Sprzęt do testu dostarczył sklep
ArduinoSolutions.

W trzeciej części artykułów na temat platformy Iteaduino Plus postanowiłem przyjrzeć się z bliska działaniu Linuksa, a konkretnie dedykowanej dystrybucji IteadOS opartej na Linaro 12.11 Precise Pangolin. Obraz systemu możemy znaleźć na dostarczonej z zestawem płycie CD, który należy wypalić na karcie microSD. Obraz płyty możemy pobrać również z Internetu.

  1. # wget http://ubuntuone.com/2nztO9D8NXed3o4EQYoA96

Uwaga! Należy zwrócić szczególną uwagę na urządzenie docelowe /dev/sdX, abyśmy przypadkiem nie wykasowali sobie ważnego dysku. Karta pamięci musi mieć minimum 2GB.

  1. # 7z e iteadOS_beta_1.0_130909.7z
  2. # dd if=iteadOS-beta-1.0-130909.img of=/dev/sdX

Tak przygotowaną kartę microSD wkładamy do slotu kart pamięci i uruchamiamy. Pierwsze uruchomienie systemu rozszerza partycję systemową z rozmiaru 2GB do rozmiaru karty, także dopiero drugie uruchomienie wprowadza nas od do pulpitu.

IteadOS Linux

Domyślnym środowiskiem IteadOS jext LXDE. System działa zaskakująco dobrze jak na tego typu sprzęt, zdecydowanie lepiej niż w przypadku Raspberry Pi. Film demonstracyjny znajdziecie na końcu wpisu. Jądro systemu stanowi Linux 3.4.29+, więc całkiem nieźle. Niestety jest drobny szkopuł - jest to albo jądro monolityczne, albo zapomniano dostarczyć wraz z nim dodatkowych modułów jądra, przez co możecie mieć kłopoty z działaniem urządzeń Logitech z wykorzystaniem technologii Unifying lub takich, które nie zostały dołączone bezpośrednio do jądra.

SATA - duże możlwiości

Jeśli chodzi o szybkość odczytu danych z karty microSD to oczywiście szału nie ma, transfer mieści się w zakresie 11MB/s i zależy od zastosowanej klasy karty SD. Wersja Iteaduino Plus A20 posiada natomiast wbudowaną pamięć NAND o rozmiarze 4GB, która na pewno jest w stanie poprawić ten wynik.

Jednak to na co czekałem najbardziej to kontroler SATA do którego możemy podłączyć dysk twardy. Tutaj jest już pole do popisu. Średni transfer to 70MB/s, minimalny natomiast 48MB/s. Tak więc bardziej doświadczeniu użytkownicy będą mogli tak przygotować kartę pamięci, aby system uruchamiał się dysku twardego. Obecność portu SATA otwiera przed nami zupełnie nowe możliwości, ponieważ większe transfery pozwolą nam na rozwinięcie skrzydeł.

Akceleracja 3D/2D

Bardzo byłem ciekaw akceleracji sprzętowej 3D. O ile pulpit odpowiada na nasze poczynania całkiem nieźle, to wciąż za obsługę OpenGL/X11 dla Mali400 odpowiada programowa akceleracja (software rasterizer). Co ciekawe dostępne są sterowniki fbturbo, które wykorzystują silnik akceleracji G2D, ale niestety nie znalazły się one w tym systemie. Tak więc na pewno wrócę do tego tematu podczas prezentacji własnej dystrybucji dla Iteaduino Plus A10, którą obecnie przygotowuję.

Multimedia

Jak już się domyślacie, odtwarzanie filmów pod IteadOS nie będzie cudowne - przyzwoitą płynność obrazu można uzyskać na materiałach do rozdzielczości 480p. Dodatkowo IteadOS nie przesyła dźwięku do HDMI (!). Support na forum Itead twierdzi, że nie jest on wspierany - ale chyba mieli na myśli IteadOS - ponieważ mnie się udało :) Ale o tym wkrótce.

Wróćmy jednak do filmów. Na procesorach A10/20 jest możliwe uzyskanie sprzętowej akceleracji video dzięki CedarX / libvecore, który jest obsługiwany przez odtwarzacze VLC i XMBC, jednak biblioteki te również nie znalazły się w obecnej IteadOS. Tej kwestii również zamierzam przyjrzeć się bliżej.

Podsumowanie

IteadOS nie wydaje się być zatem dystrybucją do multimediów. ponieważ znajdziemy w nim dodatkowe oprogramowanie i biblioteki SDK do obsługi GPIO/I2C/SPI, które są bardzo podobne składnią do Arduino. O tym jednak w napiszę w kolejnej części, a tym czasem przedstawiam film z działania IteadOS.


Sprzęt do testu dostarczył sklep
ArduinoSolutions.

Witam w drugiej części recenzji dotyczącej Iteaduino Plus, platformy deweloperskiej opartej o układ  SoC Allwinner A10. Na pierwszy ogień przyjrzymy się działaniu Androida. Jak podaje producent - Iteaduino jest bardzo podobne pod względem budowy do pcDuino, dlatego też bez obaw możemy zainstalować przeznaczone dla niego oprogramowanie. Na chwilę obecną dostępna jest wersja Android 4.0.4 z jądrem 3.0.8 

Instalacja Androida

Przed instalacja powinniśmy zaopatrzyć się w kartę microSD minimum 2GB oraz czytnik USB, który ułatwi  nam wgranie systemu na kartę. Obraz systemu spakowany jest archiwum 7z, dlatego upewnijmy się, że mamy odpowiednie oprogramowanie do rozpakowania pliku. Na początek musimy ściągnąć odpowiedni obraz systemu Android: pcduino_android_mmc_20130930.7z

Uwaga! Należy zwrócić szczególną uwagę na urządzenie docelowe /dev/sdX, abyśmy przypadkiem nie wykasowali sobie ważnego dysku :)

  1. # wget https://s3.amazonaws.com/pcduino/Images/Android/201309/pcduino_android_mmc_20130930.7z
  2. # 7z e pcduino_android_mmc_20130930.7z
  3. # dd if=pcduino_android_mmc_20130930.img of=/dev/sdX

Pierwsze uruchomienie

Po umieszczeniu karty microSD w slocie Iteaduino możemy przystąpić do uruchomienia. Podczas testów wykorzystałem zasilacz USB 5V / 1.5A (zalecany 2A), który okazał się wystarczający do konfiguracji z dyskiem twardym podłączonym do portu  USB.

Po kilku chwilach uruchamia się Android 4.0.4 w domyślnie ustawionej rozdzielczości 1280x720. Interfejs działa w miarę przyzwoicie. Bardzo cieszy zainstalowany Google Play, za pomocą którego możemy zainstalować dodatkowe oprogramownaie.

Wydajność urządzenia została sprawdzona w programie AnTuTu, uzyskując wyniki 3962 punktów. Co prawda Iteaduino Plus demonem wydajności nie jest i zbytnio nie nada się do gier 3D, ale przy odtwarzaniu filmów, nawet kodowanych w rozdzielczości 1080p, spisuje się zaskakująco dobrze.

Porównanie Iteaduino Plus z telefonami Samsung Galaxy S2, S3, S4

Rozdzielczość 1080p

Jak wspomniałem wcześniej, domyślną rozdzielczością jest 720p. Od wersji 20130918 obrazu Androida, możliwe jest wybranie (w zależności od potrzeby) niższej lub wyższej rozdzielczości.

Aby tego dokonać musimy zalogować się na Iteaduino Plus za pomocą protokołu telnet (port 23) i wydać polecenie board-config.sh.

  1. # su
  2. # board-config-sh

Po wydaniu powyższego polecenia, uzyskamy możliwość wyboru rozdzielczości, która będzie aktywna od kolejnego uruchmienia systemu.

Wydajność w rozdzielczości 1080p jest zbliżona do tej przy rozdzielczości 720p - interfejs działa odrobinkę wolniej, ale nie ma tragedii - powiedziałbym, że jest dobrze. Zobaczmy ponownie porównanie wyników w AnTuTu na tle telefonów Samsung Galaxy.

Odtwarzanie filmów w rozdzielczości 720p / 1080p

Z filmami kodowanymi w rozdzielczości 1080p doskonale radzi sobie MX Player, który jest dostępny w sklepie Google Play.

Odtwarzanie materiału wideo odbywa się z pełną akceleracją sprzętową. Problem stanowi jedynie brak dostępności kodeka audio DTS (z powodów licencyjnych), który jest bardzo często stosowany w filmach HD.

Na szczęście można temu szybko zaradzić, pobierając alternatywne kodeki z xda-developers w wariancie dla Arm v7-Neon. Paczkę należy pobrać, rozpakować oraz ustawić odpwiednią ścieżkę do kodeków w ustawieniach MX Player (Settings » Decoder »  Custom Codec).

Po restarcie odtwarzacza będziemy mogli cieszyć się filmami HD i kodekiem dźwiękiem DTS. Należy pamiętać, aby obraz dekodowany był z włączoną opcją HW, a dźwięk za pomocą SW+.

Ustawienia MX Player

Test dekodowania materiału 1080p

Podsumowanie

Gdybym wcześniej miał dokonać wyboru. biorąc pod uwagę cenę Iteaduino Plus ( 247zł ) w porównaniu z ODROID-X2 ( ~400 zł  + 30$ transport + podatek celny ), który obecnie służy mi tylko i wyłącznie jako centrum multimedialne do telewizora, bez wahania wybrałbym tego pierwszego. Iteaduino Plus dobrze radzi sobie z odtwarzaniem filmów 1080p nawet w natywnej rozdzielczości. Warto tutaj podkreślić, że Iteaduino Plus posiada pasywne, bezgłośne chłodzenie oraz port SATA, a także sporą ilość złącz GPIO, które na pewno przydadzą się do innych celów.

Jeśli chodzi o samego Androida 4.0, to działa odczuwalnie wolniej niż w przypadku ODROID-X2, czego wyznaczkiem jest porównanie wyników w programie AnTuTu (3962 vs. 19835). Jednak decydując się na ODROIDA musimy się liczyć z wydatkiem prawie 700 zł i to bez szybkiej karty eMMC oraz dodatkowych akcesoriów.

Niestety, nie udało mi się znaleźć poprawnie działającej wersji XBMC pod Androida, ale należy mieć na uwadze fakt, że mamy możlwiość zmiany domyślnego odtwarzacza XBMC na zewnętrzny MX Player, łączac jedno z drugim.

Czy 3962 punktów w programie AnTuTu to mało, czy dużo? Nie można jednoznacznie tego określić, wszystko zależy od naszych potrzeb. Iteaduino Plus został zaprojektowany do innych celów, próbując konkurować z Raspberry Pi. Nie trudno oprzeć się wrażeniu, że obsługa systemu Android pełni jedynie formę bonusu. Wydaje mi się, że głównym wyznacznikiem będzie tutaj  działanie Linuksa i możliwości jakie daje port SATA. 


Sprzęt do testu dostarczył sklep ArduinoSolutions.

Dzięki uprzejmości sklepu ArduinoSolutions, otrzymałem do testów niskobudżetową platformę deweloperską Iteaduino Plus opartą na architekturze ARM, która może być bardzo ciekawą alternatywą dla popularnego RaspberryPi czy ODROID-a. W najbliższych częściach wpisu postaram się jak najdokładniej przetestować ją na różnych płaszczyznach użytkownika. Dziś jednak, zajmiemy się ... tada! ... rozpakowywaniem :)

Iteaduino Plus zapakowane jest w sztywne i zafoliowane pudełko kartonowe, gdzie bezpiecznie ulokowano wszystkie niezbędne elementy.

W środku znajdziemy płytę główną o rozmiarze 109.22 x 76.2 x 1.2mm, wraz z zamontowanym, wymiennym modułem procesora i pamięci. Serce Iteaduino Plus stanowi układ SoC Allwinner A10 - ARM Cortex-A8 @ 1Ghz oraz układ graficzny Mali 400 MP (taki sam układ graficzny znajduje się między innymi w ODROID-X2). A10 obsługuje instrukcje NEON, VFPv3 oraz posiada 256kB pamięci cache L2. Jeśli w przyszłości zaistnieje potrzeba, możemy wymienić go na moduł z dwurdzeniowym układem Allwinner A20.

Według specyfikacji, A10 powinien radzić sobie z dekodowaniem materiału HD nawet w rozdzielczości 2160p oraz 3D, obsługując popularne kodeki VP8, AVS, H.264, VC-1 oraz MPEG-1/2/4. Na płytce znajduje się również 1GB pamięci DDR3 taktowanej zegarem 480MHz. Jak wypadnie na tym polu w porównaniu z Odroidem-X2? Na pewno sprawdzimy to w kolejnych częściach.

Jeśli chodzi o dostępne złącza, to Iteaduino ma się czym pochwalić. Na płytce znajdziemy 10/100MBit port Ethernet, złącze SATA 2.0 + dodatkowe złącze zasilania, slot kart pamięci microSD, złącze HDMI, dwa porty USB 2.0 oraz jeden port Mini USB OTG. Majsterkowiczów ucieszą na pewno cztery 36-pionowe złącza GPIO (!). Oczywiście dostępne są 3.5mm gniazda audio.

To jednak nie wszystko. Po drugiej stronie płytki znajduje się gniazdo FOCA służące do podłączenia adaptera szeregowego, cztery gniazda Grove do których możemy podłączyć różne moduły czujników oraz 26 pinowy interfejs kompatybilny z wyprowadzeniami Raspberry Pi. Pod gniazdami Grove dostępne jest również złącze do podłączenia baterii podtrzymującej zegar czasu rzeczywistego RTC.

Ulokowanie złącz na krawędziach przedstawia się następująco:

W pudełku znajdują się również przydatne akcesoria: akrylowa plexi (oklejona papierem) wraz z kołkami dystansowymi, kabel SATA z wtyczką dodatkowego zasilania, aluminiowy radiator na procesor, a także kabel zasilający USB -> microUSB.

Iteaduino Plus zasilane jest napięciem 5V, więc ,ożemy zasilić je z portu USB komputera. Warto jednak zaopatrzyć się w 2A zasilacz, jeśli zamierzamy podłączyć dysk twardy i inne urządzenia. Napięcie 3.3V obowiązuje dla poziomów logicznych. Warto również zaznaczyć, że dla Iteaduino Plus dostępna jest specjalna nakładka, zapewniająca kompatybiliność z shieldami Arduino.

Obsługiwane systemy operacyjne to oczywiście Linux (np.: Fedora 19 lub Ubuntu) oraz Android. Dostępna jest również własna dystrybucja Linuksa - ITEAD OS bazująca na jądrze linaro-alip 3.4.29 oraz zawierająca zestaw narzędzi SDK. ITEAD OS dostarczony jest w komplecie wraz z płytką CD.

Aż nie wiem od czego zacząć.... :)


Sprzęt do testu dostarczył sklep
ArduinoSolutions.