Test wydajności Raspberry Pi 2
Na temat specyfikacji technicznej o Raspberry Pi 2 w sieci można znaleźć wiele informacji, dlatego nie będę bezsensownie powielał tych informacji. Bardziej zależy mi na ponownym porównaniu nowej maliny z jej poprzednią wersją oraz bezpośrednim konkurentem jakim jest ODROID C1. Dzięki uprzejmości sklepu elty.pl mam dziś taką możliwość.
Odnoszę nieodparte wrażenie, że Raspberry Pi 2 z jednej strony pojawił się zbyt późno, a z drugiej zbyt wcześnie. Nie da się ukryć faktu, że specyfikacja RPi 2 nie zachwyca niczym szczególnym w dzisiejszych czasach - owszem mogła wywołać ona pożądany efekt, ale rok temu.
Osobiście więc uważam, że model Raspberry Pi 2 został wepchnięty na rynek na siłę, jako reakcja na zaprezentowany przez Hardkernel komputerek ODROID C1.
Oczywiście zdaję sobie sprawę, że za Raspberry Pi 2 przemawia silna i prężna społeczność, bez której nawet największy gigant ma gliniane nogi. Mam jednak to szczęście, że z maliną pożegnałem się, gdy rozpocząłem swoją przygodę z modelem ODROID-X2.
W tamtych czasach społeczność ODROID-a dopiero się budowała, dlatego marka nie była zbyt popularna w Polsce. Dziś jest zupełnie inaczej, bowiem nazwa ODROID jest bardzo dobrze rozpoznawana, a społeczność coraz większa i silniejsza. Nie przesadzę jeśli stwierdzę, że jest to druga społeczność pod względem wielkości, zaraz po "malinowcach", gdzie nie ma już problemu z uzyskaniem odpowiedzi na trapiące nas problemy.
Nie chcę wywoływać zbędnego hejtu i jestem bardzo od tego daleki, ale będąc użytkownikiem maliny, czułbym się najzwyczajniej zawiedziony nowym wydaniem, a całą sytuację opisałbym zapytaniem "jak to? to już wszystko?".
Fundacja Raspberry Pi mogła sobie jednak na to pozwolić i delikatnie odświeżyć specyfikację, ponieważ przyzwyczajenie użytkowników jest bardzo silne - a to kwestia łatwego przeniesienia obecnego oprogramowania, a to istniejąca już społeczność i szereg rozwiązań. Niestety dalej uważam, że została wybrana droga przez łatwiznę, dlatego też ponownie wybieram w tym przedziale budżetowym ODROID-a C1.
Poniżej wyniki w starciu z ODROID-C1 oraz poprzednią generacją maliny, natomiast tutaj znajdziecie zestawienie wszystkich testowanych na łamach mojego Bloga mini-komputerków.
Reklama
Raspberry Pi 2 ujawniony!
Raspberry Pi Foundation przedstawiła "dopakowaną" wersję Raspberry Pi 2, będącą następcą modelu Raspberry Pi B+. Nowa płytka została wyposażona w czterordzeniowy procesor ARMv7 Cortex-A7 Broadcom BCM2836 900MHz (ARMv7 Cortex-A7) oraz 1GB pamięci RAM, co pozwoli uzyskać sześciokrotną przewagę nad B+.
Jednostka BCM2836 jest bardzo podobna do swojego poprzednika BCM2835, dlatego też stare oprogramowanie nie będzie wymagało praktycznie żadnych modyfikacji, aby działało prawidłowo na Raspberry Pi 2. Biorąc jednak pod uwagę, że BCM2836 obsługuje instrukcje NEON, rekompilacja będzie wskazana. Według testów SunSpider wydajność pojedynczego rdzenia jest trzykrotnie większa od poprzedniego modelu. Produkcja modelu RaspberryPi B+ będzie dalej kontynuowana, ale szacuje się, że będzie stanowiła jedynie 20% całej produkcji. Cena ma pozostać bez zmian, czyli 35$.
Pełna specyfikacja:
- Broadcom BCM2836 quad core Cortex A7 @ 900MHz
- Układ graficzny VideoCore IV
- Pamięć 1GB SDRAM
- Czytnik kart pamięci micro SD
- Wyjście HDMI oraz AV (3.5mm jack)
- Karta sieciowa Ethernet 10/100M
- 4x porty USB 2.0, 1x micro USB
- Rozszerzenia: 40 pinowe złącze GPIO, złącze kamery, złącze wyświetlacza
- Zasilanie 5V z portu micro USB
Jak myślicie? Jest to pstryczek w nos dla Hardkernela i jego ODROID-C1? Czy może jednak model RPi 2 i tak miał się pojawić?
Cubieboard 4 CC-A80 - Testy pod Linuksem
W poprzednim wpisie pokazywałem Wam, jak Cubieboard 4 sprawuje się pod Androidem. Tym razem sprawdzimy jego zachowanie pod systemem Linux. Na chwilę obecną dostępne są dwie dystrybucje: Linaro oraz Debian Server.
Pierwsze co mnie pozytywnie zaskoczyło, to sposób instalacji systemu. W poprzednich płytkach Cubieboard proces nie należał do przyjemnych, ponieważ wymagał dodatkowego oprogramowania LiveSuit do flashowania i operowania przyciskiem FEL. Tym razem wystarczy wgrać obraz systemu na kartę microSD, włożyć do czytnika i podłączyć zasilanie, a cały proces możemy podglądać na monitorze. Kiedy instalacja dobiegnie końca, "Cubie" automatycznie się wyłączy i będziemy mogli wyciągnąć kartę oraz zresetować urządzenie.
Chcąć powrócić do systemy Android, musimy zaś posłużyć się programem LiveSuit (Linux) lub PhoenixSuit (Windows) trzymając przysick "boot" podczas podłączenia do USB.
Gdzie jest Wi-Fi?
O ile karta ethernet działa od razu, to niestety z włączeniem karty Wi-Fi będziemy musieli się po gimnastykować. Na szczęście nie czeka nas kompilacja jądra, ponieważ AP6330 jest dobrze obsługiwana przez moduł bcmdhd. Jak ją odpalić?
Do pliku /etc/rc.local dodajemy polecenie modprobe i nazwę wymaganego modułu:
- modprobe bcmdhd
Tworzymy plik /etc/wpa_supplicant.conf i wpisujemy dane do punktu dostępowego:
- ctrl_interface=/var/run/wpa_supplicant
- network={
- ssid="NAZWA SIECI"
- psk="HASLO"
- }
Na koniec, w pliku /etc/network/interfaces dodajemy wpis:
- auto wlan0
- iface wlan0 inet dhcp
- wpa-conf /etc/wpa_supplicant.conf
Restart i gotowe.
Testy pamięci eMMC
Prędkości zapisu i odczytu nie powalają z nóg, gdyż Cubieboard 4 wyposażony jest w starszy rodzaj pamięci eMMC.
Zobaczmy jeszcze bardziej naturalne wyniki, w których uwzględnimy synchronizację nośnika po zapisie. Dla objaśnienia podaję regułę, w jaki sposób została ona określona:
time sh -c "dd if=/dev/zero of=/home/file bs=4k count=200000 && sync"
200000+0 records in
200000+0 records out
819200000 bytes (819 MB) copied, 62.9674 s, 13.0 MB/s
real 1m9.723s
user 0m0.170s
sys 0m8.880s
sync ; sh -c 'echo 3 > /proc/sys/vm/drop_caches'
time sh -c "dd if=/home/file of=/dev/zero bs=4k count=200000"
200000+0 records in
200000+0 records out
819200000 bytes (819 MB) copied, 29.2347 s, 28.0 MB/s
real 0m29.334s
user 0m0.110s
sys 0m3.330s
Czas zapisu bez synchronizacji wyniósł 62,96 sekundy. Z synchronizacją dysku po zapisie, czas ten zwiększył się do 69,72 sekundy, a więc rzeczywista prędkość to (819200000/1024/1024) / 69.72 = 11,2 MB/s.
Testy CPU
Jeśli chodzi o jednostkę Allwinner A80 to wypada całkiem nieźle. Wyniki jakie uzyskuje w testach są nieco wolniejsze od Exynosa 5422 zastosowanego w ODROID-XU3. Wyjątek stanowi dekompresja pliku BZIP2, gdzie spore znaczenie ma prędkość pamięci eMMC.
Testy GPU
Tutaj wielkie zaskoczenie. W testach glmark2-es2 off-screen przewaga nad XU3 jest 2.5-krotna. Dla pewności wykonałem nawet testy dwukrotnie na obu platformach. Wnioski mogą być dwa. Albo obsługa układu Mali w ODROID-XU3 jest nie do końca przemyślana, albo PowerVR G6230 robi to wyjątkowo dobrze!
linaro@cubieboard4:~$ glmark2-es2 --off-screen
=======================================================
glmark2 2012.08
=======================================================
OpenGL Information
GL_VENDOR: Imagination Technologies
GL_RENDERER: PowerVR Rogue G6230
GL_VERSION: OpenGL ES 3.1 build 1.4@3064661
=======================================================
[build] use-vbo=false: FPS: 108 FrameTime: 9.259 ms
[build] use-vbo=true: FPS: 1461 FrameTime: 0.684 ms
[texture] texture-filter=nearest: FPS: 3614 FrameTime: 0.277 ms
[texture] texture-filter=linear: FPS: 3601 FrameTime: 0.278 ms
[texture] texture-filter=mipmap: FPS: 3629 FrameTime: 0.276 ms
[shading] shading=gouraud: FPS: 843 FrameTime: 1.186 ms
[shading] shading=blinn-phong-inf: FPS: 1331 FrameTime: 0.751 ms
[shading] shading=phong: FPS: 1200 FrameTime: 0.833 ms
[bump] bump-render=high-poly: FPS: 510 FrameTime: 1.961 ms
[bump] bump-render=normals: FPS: 3664 FrameTime: 0.273 ms
[bump] bump-render=height: FPS: 3963 FrameTime: 0.252 ms
[effect2d] kernel=0,1,0;1,-4,1;0,1,0;: FPS: 2310 FrameTime: 0.433 ms
[effect2d] kernel=1,1,1,1,1;1,1,1,1,1;1,1,1,1,1;: FPS: 2217 FrameTime: 0.451 ms
[pulsar] light=false:quads=5:texture=false: FPS: 1434 FrameTime: 0.697 ms
[desktop] blur-radius=5:effect=blur:passes=1:separable=true:windows=4: FPS: 127 FrameTime: 7.874 ms
[desktop] effect=shadow:windows=4: FPS: 264 FrameTime: 3.788 ms
[buffer] columns=200:interleave=false:update-dispersion=0.9:update-fraction=0.5:update-method=map: FPS: 148 FrameTime: 6.757 ms
[buffer] columns=200:interleave=false:update-dispersion=0.9:update-fraction=0.5:update-method=subdata: FPS: 148 FrameTime: 6.757 ms
[buffer] columns=200:interleave=true:update-dispersion=0.9:update-fraction=0.5:update-method=map: FPS: 100 FrameTime: 10.000 ms
[ideas] speed=duration: FPS: 487 FrameTime: 2.053 ms
[jellyfish] <default>: FPS: 461 FrameTime: 2.169 ms
[terrain] <default>: FPS: 22 FrameTime: 45.455 ms
[conditionals] fragment-steps=0:vertex-steps=0: FPS: 2322 FrameTime: 0.431 ms
[conditionals] fragment-steps=5:vertex-steps=0: FPS: 2346 FrameTime: 0.426 ms
[conditionals] fragment-steps=0:vertex-steps=5: FPS: 2320 FrameTime: 0.431 ms
[function] fragment-complexity=low:fragment-steps=5: FPS: 2327 FrameTime: 0.430 ms
[function] fragment-complexity=medium:fragment-steps=5: FPS: 2355 FrameTime: 0.425 ms
[loop] fragment-loop=false:fragment-steps=5:vertex-steps=5: FPS: 2349 FrameTime: 0.426 ms
[loop] fragment-steps=5:fragment-uniform=false:vertex-steps=5: FPS: 2353 FrameTime: 0.425 ms
[loop] fragment-steps=5:fragment-uniform=true:vertex-steps=5: FPS: 2377 FrameTime: 0.421 ms
=======================================================
glmark2 Score: 1679
=======================================================
Pobór mocy
Na Wasze specjalne życzenie przyjrzałem się również poborowi energii:
Cubieboard 4 | ODROID-XU3 | |
Xorg | 3,1 W | 4,0 W |
Xorg + Logitech Unifying | 3,8 W | 4,8 W |
Xorg + Logitech Unifying + Wi-Fi | 4,6 W | 5,3 W |
Kolejne testy polegały na obciążaniu kolejnych rdzeni na 100% przy konfiguracji Xorg + Logitech Unifying + Wi-Fi:
Cubieboard 4 | ODROID-XU3 | |
1 rdzeń | 7,4 W | 9,6 W |
2 rdzenie | 9,6 W | 13,1 W |
4 rdzenie | 17,8 W | 16,4 W |
8 rdzeni | 22,0 W | 17,0 W |
Na zakończenie pobór mocy przy teście glmark2-es2 -s 1920x1080 oraz konfiguracji Xorg + Logitech Unifying + Wi-Fi:
Cubieboard 4 | ODROID-XU3 | |
glmark2-es2 -s 1920x1080 | 6,9 W | 8,8 W |
Podsumowanie
Wyniki Cubieboard 4 wyglądają dobrze. Jedyne nie udało mi się sprawdzić działania XBMC, ponieważ w repo dostępny jest leciwy Frodo, który morduje procesor materiałem 1080p dekodując strumień programowo. Niebawem postaram się skompilować coś nowszego i sprawdzić jak spisze się nowsza wersja, wszak pod Androidem płynnie odtwarzany jest materiał 4K.
Zastrzeżenie budzi jedynie powolna pamięć eMMC 4.5. Jednak jeśli przez chwilę się zastanowię, to prędzej wykorzystałbym do tego celu dysk twardy, który bez problemu podepniemy pod USB 3.0
Cubieboard 4 z układem A80 - Unboxing i Android
Dzięki uprzejmości sklepu internetowego elty.pl, mam dziś przyjemność pokazać Wam nowiutką platformę Cubieboard 4 wyposażoną w ośmiordzeniowy układ SoC Allwinner A80
Cubie przyszedł co mnie zapakowany w solidne pudełko, wypełnione czymś na kształt utwardzonej gąbki. Osobiście bardzo podoba mi się pakowanie produktów z serii Cubieboard, które zapewnia duże bezpieczeństwo zawartości podczas transportu. Wewnątrz opakowania znajdziemy naszego "małego" urwisa :)
Na dnie pudełka znajduje się dodatkowy kartonik, w którym zostały zapakowane niezbędne akcesoria. Podstawowe wyposażenie jest całkiem pokaźne, bowiem zazwyczaj takie akcesoria trzeba dokupić osobno. W tym przypadku wszystko dostajemy praktycznie na tacy. Znajdziemy tu prostą obudowę wykonaną z plexi, kołki dystansowe, radiator, pastę termoprzewodzącą, przejściówkę microUSB 3.0 na USB 3.0 oraz kabelek USB 3.0 OTG. Opróćz tego, na wyposażeniu znalazła się antena Wi-Fi oraz bateria 1220 do podtrzymywania zegara RTC w przypadku odłączenia całej płytki od zasilania.
Montaż jest banalnie prosty, praktycznie nie wymagający użycia żadnych narzędzi. Również założenie radiatora nie powinno sprawić nikomu problemów za sprawą sprężynowych kołków rozporowych - nie zapominajmy oczywiście o uprzednim posmarowaniu pastą termoprzewodzącą!
Allwinner A80 z bliska
Allwinner A80 wspiera technologie big-LITTLE, gdzie mocniejsze cztery rdzenie stanowią ARM Cortex A15 potrafiące rozpędzić się do częstotliwości 2GHz oraz cztery rdzenie do mniej wymagających zadań ARM Cortex A7 taktowane do prędkości 1.3GHz.
Układ graficzny zastosowany w tej jednostce to 64-rdzeniowy PowerVR G6230 o deklarowanej przepustowości powyżej 100GFLOPS, wspierając standardy takie jak OpenGL ES 3.0, OpenGL 3/4, OpenCL 1.x oraz DirectX10. Oznacza to, że jednostka ta powinna być równie wydajna jak układ Mali-T628 MP6 zastosowany w Exynosach 5420/5422/5430. Allwinner A80 bez problemowo powinien sobie zatem radzić z kompresją i dekompresją H264/H265 w rozdzielczości 4K.
Sama płytka Cubieboard 4 została wyposażona w 2GB pamięci RAM (4 kości Hynix H5TQ4G63AFR 512MB) oraz 8GB pamięci eMMC 4.5 z której uruchamiany jest system operacyjny Linux lub Android. Do teg celu możemy równiez wykorzystać karty pamięci MicroSD.
Płytkę możemy podłączyć do telewizora lub monitora ze złączem HDMI 1.4 lub VGA (podłączenie monitora VGA umożliwia tutaj zastsowanie układu GM7123). Dodatkowo otrzymujemy 4 porty USB 2.0 oraz jeden port USB 3.0 z możliwością pracy w trybie OTG.
Za dostęp do sieci odpowiada gigabitowa karta RTL8211e oraz dwuzakresowa karta Wi-Fi AP6330 potrafiąca osiągnąć rzekomy transfer na poziomie 300Mbps oraz posiada wbudowany Bluetooth 4.0+EDR.
Na płytce umieszczono również odbiornik podczerwieni oraz zegar RTC z koszykiem na baterię 1220, a także stereofoniczne gniazdo jack 3.5mm oraz wejście mikrofonowe. Nie mogło również zabraknąć gniazda rozszerzeń I/O, które zostało opisane na płytce PCB.
Rozmiarowo Cubieboard 4 jest nieznacznie mniejszy (114x114mm) od opisywanego już Jetsona TK1 od NVIDIA.
Niestety w zestawie nie znajduje się zasilacz, dlatego powinniśmy się wcześniej w niego zaopatrzyć. Zalecany zasilacz to 5V/4A. Co ciekawe, płytkę możemy zasilić bezpośrednio baterią Li-po 3.7V za pomocą dedykowanego gniazda oraz z portu USB 3.0.
Android 4.4
Domyślnie zainstalowany jest system Android 4.4.2 i podstawoweoprogramowanie. Bardzo cieszy od razu doinstalowany Google Play co pozwala nam na szybką instalację dodatkowego oprogramowania.
Do dyspozycji użytkownika pozostaje ponad 5GB pamięci, jednak bez problemu możemy wspomóc się dodatkową kartą microSD:
Na pierwszy ogień zobaczmy jakie osiągi uzyska Cubieboard 4 w programie AnTuTu. Po krótkiej chwili uzyskuje on wynik na poziomie 37.857 punktów, a więc nieco słabiej niż ODROID-XU3, który uzyskał wynik 46.213 w rozdzielczości 1080p.
Zwróćmy jednak uwagę na to, że Cubieboard 4 posiada pamięć eMMC 4.5, podczas gdy XU3 posiada pamięć eMMC 5.0. Obecność HMP w Odroid-XU3 zapewne też nie pozostaje tutaj bez znaczenia. Dla porównania przypomnijmy, że model ODROID-XU uzyskał tutaj wynik słabszy, bo 30.054 punktów.
Zobaczmy zatem jak sprawa wygląda w programie 3D Mark Ice Storm. Cubieboard 4 zdobywa tutaj 7.293 punktów w trybie Extreme oraz 13.955 punktów w trybie Unlimited. Ponownie są to wyniki wolniejsze od ODROID-XU3:
Mark | 1080p Unlimited | 1080p Extreme |
Cubieboard 8 | 13.955 | 7.293 |
ODROID-XU3 | 15.073 | 10.044 |
W programie PC Mark udaje mu się uzskać wynik 4.155 punktów, czyli nieco lepszy niż ODROD-XU3 z wynikiem 3.898 punktów.
Multimedia
Nie ma również żadnych problemów z odtwarzaniem filmów w Kodi/XBMC. Materiał odtwarzany jest bez zająknięcia we wszystkich rozdzielczościach 720p/1080p/2K/4K:
Rozrywka
Z ciekawości sprawdziłem również dwie gry Modern Combat 4: Zero Hour oraz Modern Combat 5: Blackout. Obie działają idealnie, dobrze współpracując z posiadanym przeze mnie padem Logitech F710.
Podsumowanie
Cubieboard 4 jeśli chodzi o Androida sprawuje się bardzo dobrze. Podczas długich testów całość działała płynnie i stabilnie. Temperatury podczas typowej pracy to 53°C i 72°C w trakcie długotrwałego stresu.
Cubieboard 4 wybada również bardzo dobrze w stosunku możliwości do ceny. Jeśli weźmiemy pod uwagę, że za ODROIDa-XU3 przyjdzie nam zapłacić kwotę 179$, doliczając drobnicę w postaci szybkiej karty Wi-Fi, obudowy, odbiornika BT / IR, pamięci eMMC 8GB oraz kabli, wyjdzie nam kwota ponad 220$. Doliczając podatek, transport i cło w sumie przyjdzie nam zapłacić grubo ponad 1100zł. Tymczasem opisywany dziś Cubieboard 4 możemy dostać w sklepie elty.pl za połowę ceny 580zł.
Mała prezentacja:
W kolejnej części sprawdzimy sobie, jak Cubieboard 4 radzi sobie pod Linuksem, kiedy stanie w szranki z pozostałymi platformami. Jestem szalenie tego ciekawy :)
ODROID-C1 i zapomnij o Raspberry Pi
Hardkernel wydaje się mieć chrapkę na segment, który zdominował Raspberry Pi, uderzając w niego swoim budżetowym produktem ODROID-C1. Nowe dziecko koreańskiego producenta wyposażone zostało w czterordzeniowy układ SoC Amlogic Cortex-A5 (ARMv7) taktowany częstotliwością 1.5Ghz. Układ graficzny stanowi popularny Mali-450 MP2 z obsługą standardów OpenGL ES 2.0/1.1.
Jednostka ta została wyposażona w pamięć DDR3 SDRAM o rozmiarze 1GB, gigabitowy port Ethernet, 40-pinowe złącze GPIO, cztery porty USB 2.0 oraz odbiornik podczerwieni. System operacyjny (Linux lub Android) może być uruchomiony z karty pamięci MicroSD lub pamięci eMMC 4.5.
ODROID-C1 wyposażony jest również w odbiornik podczerwieni, który bez problemu powinien obsłużyć wszystkie nadajniki pracujące w standardzie 37.9kHz wykorzystując do tego celu specjalnie przygotowany program odroid_remote. Oprócz wspomnianych 4 portów USB 2.0, dostępny jest również pojedyncze gniazdo Micro USB pracujące w trubie OTG, które możemy w razie konieczności wykorzystać jako dodatkowy port. Należy jednak pamiętać, że nie możemy zasilać z niego ODROIDa.
Zastanawiacie się ile przyjdzie nam zapłacić za te cudeńko? ODROID-C1 został wyceniony na kwotę 35$, czyli w takiej samej cenie jak Raspberry Pi. W polskim sklepie dostaniemy go bez problemu za 209 zł
40-pinowe gniazdo GPIO
Do dyspozycji dostajemy także 40-pinowe gniazdo rozszerzeń, na którym znajdziemy wyprowadzania GPIO/I2C/SPI/UART/ADC. Do obsługi wystarczy nam jedynie znajomość języka C/C++ lub Pythona. Z pomocą przychodzi również przeportowana biblioteka WiringPi, która jest doskonale znana przez "malinowców". Projektując urządzenie pamiętajcie, że ten port rozszerzeń nie jest zgodny z portem rozszerzeń z Raspberry Pi B+ (piny #37, #38, #40 pracują tutaj jako wejścia analogowe o dopuszczalnym poziomie 1.8V).
WiringPi GPIO# | Export GPIO# | ODROID-C PIN | Label | HEADER | Label | ODROID-C PIN | Export GPIO# | WiringPi GPIO# | |||
3V3 | 1 | 2 | 5V0 | ||||||||
74 | I2CA_SDA | SDA1 | 3 | 4 | 5V0 | ||||||
75 | I2CA_SCL | SCL1 | 5 | 6 | GND | ||||||
7 | 83 | GPIOY.BIT3 | #83 | 7 | 8 | TXD1 | TXD_B | 113 | |||
GND | 9 | 10 | RXD1 | RXD_B | 114 | ||||||
0 | 88 | GPIOY.BIT8 | #88 | 11 | 12 | #87 | GPIOY.BIT7 | 87 | 1 | ||
2 | 116 | GPIOX.BIT19 | #116 | 13 | 14 | GND | |||||
3 | 115 | GPIOX.BIT18 | #115 | 15 | 16 | #104 | GPIOX.BIT7 | 104 | 4 | ||
3V3 | 17 | 18 | #102 | GPIOX.BIT5 | 102 | 5 | |||||
12 | 107 | MOSI | GPIOX.BIT10 | MOSI | 19 | 20 | GND | ||||
13 | 106 | MISO | GPIOX.BIT9 | MISO | 21 | 22 | #103 | GPIOX.BIT6 | 103 | 6 | |
14 | 105 | SCLK | GPIOX.BIT8 | SCLK | 23 | 24 | CE0 | GPIOX.BIT20 | CE0 | 117 | 10 |
GND | 25 | 26 | #118 | GPIOX.BIT21 | 118 | 11 | |||||
76 | I2CB_SDA | SDA2 | 27 | 28 | SCL2 | I2CB_SCL | 77 | ||||
21 | 101 | GPIOX.BIT4 | #101 | 29 | 30 | GND | |||||
22 | 100 | GPIOX.BIT3 | #100 | 31 | 32 | #99 | GPIOX.BIT2 | 99 | 26 | ||
23 | 108 | GPIOX.BIT11 | #108 | 33 | 34 | GND | |||||
24 | 97 | GPIOX.BIT0 | #97 | 35 | 36 | #98 | GPIOX.BIT1 | 98 | 27 | ||
ADC.AIN1 | AIN1 | 37 | 38 | 1V8 | 1V8 | ||||||
GND | 39 | 40 | AIN0 | ADC.AIN0 |
Znacząca przewaga nad Raspberry Pi
ODROID-C1 znacznie przewyższa możliwościami "malinę", biorąc pod uwagę głównie czynnik finansowy. Różnice są ogromne - zarówno pod względem sprzętowym jak i wydajnościowym. Spójrzmy na małe porównanie, które mówi wręcz za siebie:
ODROID-C1 | RPi Model-B+ | |
Procesor | Amlogic S805 | Broadcom BCM28351 |
Rodzina | ARMv7 @28nm | ARM11 @40nm |
Liczba rdzeni | 4 | 1 |
RAM | 1GB 32bit DDR3 | 512MB 32bit LP-DDR2 |
Układ graficzny | 2x ARM® Mali 450MP | 1 x VideoCore IV |
Taktowanie procesora | 1.5GHz | 700Mhz |
Taktowanie rdzenia graficznego | 600MHz | 250MHz |
Taktowanie pamięci | 792MHz | 400MHz |
Pamięć FLASH | Micro-SD UHS-1 100Mhz/SDR50 |
Micro-SD 50Mhz/SDR25 |
Pamięć eMMC | Tak | Nie |
USB 2.0 | 4 | 4 |
USB 2.0 OTG | 1 | Nie |
Ethernet | 10/100/1000 Mbit/s | 10/100 Mbit/s |
Wyjście wideo | HDMI | HDMI / Composite RCA |
Wyjście audio | HDMI | HDMI / 3.5mm Jack |
Wejście kamery | USB 720p | MIPI CSI 1080p |
Zegar RTC | Tak | Nie |
Odbiornik podczerwieni | Tak | Nie |
Port rozszerzeń | 40pin GPIO/UART/SPI/I2C/ADC |
40pin GPIO/UART/SPI/I2C/I2S |
ADC | 2 kanały po 10-bitów | Nie |
Rozmiar | 85 x 56mm | 85 x 56mm |
Waga | 40g | 42g |
A jak z wydajnością w starciu z "maliną"? Tutaj również walka wydaję się być zbędna. W zależności od przeprowadzonych testów, ODROID-C1 osiąga od 4x do 8x lepsze wyniki, niżeli konkurent.
Ubuntu i porównanie z innymi platformami
Na chwilę obecną dostępny jest standardowy Ubuntu 14.04 w wersji 1.2 z jądrem 3.10.64, którego znamy już z poprzednich ODROID-ów. Oczywiście nie zapomniano o narzędziu ODROID Utility i odtwarzaczu Kodi, który dobrze sobie radzi z materiałem wideo kodowanym z bitrate 120Mbps!
Prędkość pamięci eMMC również jest na zadowalającym poziomie. Zapis kształtuje się na poziomie 46MB/s, a odczyt na poziomie 81MB/s. Są to wyniki porównywalne jakie osiąga Jetson TK1.
time sh -c "dd if=/dev/zero of=/home/file bs=4k count=200000 && sync"
200000+0 records in
200000+0 records out
819200000 bytes (819 MB) copied, 17.788 s, 46.1 MB/s
real 0m18.741s
user 0m0.290s
sys 0m7.030s
sync ; sh -c 'echo 3 > /proc/sys/vm/drop_caches'
time sh -c "dd if=/home/file of=/dev/zero bs=4k count=200000"
200000+0 records in
200000+0 records out
819200000 bytes (819 MB) copied, 10.0623 s, 81.4 MB/s
real 0m10.103s
user 0m0.080s
sys 0m2.670s
Zobaczmy jak wygląda to dokładniej w pojedynku z innymi platformami:
Powyższe wyniki jasna pokazują, że pomimo tego, że ORDOID-C1 jest najsłabszy ze swojej rodziny, to jest zdecydowanie lepszym wyborem niż platformy wykorzystujące układy Allwinner A10/A20 czy RK3066. Pamiętajmy jednak o bardzo niskiej cenie C1 jako bezpośredniego konkurenta dla RaspberryPi.
Rzućmy jeszcze okiem na wyniki glmark2 dla OpenGL ES:
=======================================================
glmark2 2012.08
=======================================================
OpenGL Information
GL_VENDOR: ARM
GL_RENDERER: Mali-450 MP
GL_VERSION: OpenGL ES 2.0
=======================================================
[build] use-vbo=false: FPS: 159 FrameTime: 6.289 ms
[build] use-vbo=true: FPS: 184 FrameTime: 5.435 ms
[texture] texture-filter=nearest: FPS: 184 FrameTime: 5.435 ms
[texture] texture-filter=linear: FPS: 190 FrameTime: 5.263 ms
[texture] texture-filter=mipmap: FPS: 189 FrameTime: 5.291 ms
[shading] shading=gouraud: FPS: 146 FrameTime: 6.849 ms
[shading] shading=blinn-phong-inf: FPS: 140 FrameTime: 7.143 ms
[shading] shading=phong: FPS: 117 FrameTime: 8.547 ms
[bump] bump-render=high-poly: FPS: 95 FrameTime: 10.526 ms
[bump] bump-render=normals: FPS: 186 FrameTime: 5.376 ms
[bump] bump-render=height: FPS: 173 FrameTime: 5.780 ms
[effect2d] kernel=0,1,0;1,-4,1;0,1,0;: FPS: 104 FrameTime: 9.615 ms
[effect2d] kernel=1,1,1,1,1;1,1,1,1,1;1,1,1,1,1;: FPS: 56 FrameTime: 17.857 ms
[pulsar] light=false:quads=5:texture=false: FPS: 198 FrameTime: 5.051 ms
[desktop] blur-radius=5:effect=blur:passes=1:separable=true:windows=4: FPS: 52 FrameTime: 19.231 ms
[desktop] effect=shadow:windows=4: FPS: 146 FrameTime: 6.849 ms
[buffer] columns=200:interleave=false:update-dispersion=0.9:update-fraction=0.5:update-method=map: Unsupported
[buffer] columns=200:interleave=false:update-dispersion=0.9:update-fraction=0.5:update-method=subdata: FPS: 35 FrameTime: 28.571 ms
[buffer] columns=200:interleave=true:update-dispersion=0.9:update-fraction=0.5:update-method=map: Unsupported
[ideas] speed=duration: FPS: 99 FrameTime: 10.101 ms
[jellyfish] <default>: FPS: 98 FrameTime: 10.204 ms
[terrain] <default>: Unsupported
[conditionals] fragment-steps=0:vertex-steps=0: FPS: 197 FrameTime: 5.076 ms
[conditionals] fragment-steps=5:vertex-steps=0: FPS: 115 FrameTime: 8.696 ms
[conditionals] fragment-steps=0:vertex-steps=5: FPS: 195 FrameTime: 5.128 ms
[function] fragment-complexity=low:fragment-steps=5: FPS: 149 FrameTime: 6.711 ms
[function] fragment-complexity=medium:fragment-steps=5: FPS: 99 FrameTime: 10.101 ms
[loop] fragment-loop=false:fragment-steps=5:vertex-steps=5: FPS: 144 FrameTime: 6.944 ms
[loop] fragment-steps=5:fragment-uniform=false:vertex-steps=5: FPS: 142 FrameTime: 7.042 ms
[loop] fragment-steps=5:fragment-uniform=true:vertex-steps=5: FPS: 138 FrameTime: 7.246 ms
=======================================================
glmark2 Score: 138
=======================================================
oraz w trybie offscreen:
=======================================================
glmark2 2012.08
=======================================================
OpenGL Information
GL_VENDOR: ARM
GL_RENDERER: Mali-450 MP
GL_VERSION: OpenGL ES 2.0
=======================================================
[build] use-vbo=false: FPS: 205 FrameTime: 4.878 ms
[build] use-vbo=true: FPS: 280 FrameTime: 3.571 ms
[texture] texture-filter=nearest: FPS: 351 FrameTime: 2.849 ms
[texture] texture-filter=linear: FPS: 294 FrameTime: 3.401 ms
[texture] texture-filter=mipmap: FPS: 305 FrameTime: 3.279 ms
[shading] shading=gouraud: FPS: 193 FrameTime: 5.181 ms
[shading] shading=blinn-phong-inf: FPS: 192 FrameTime: 5.208 ms
[shading] shading=phong: FPS: 157 FrameTime: 6.369 ms
[bump] bump-render=high-poly: FPS: 106 FrameTime: 9.434 ms
[bump] bump-render=normals: FPS: 337 FrameTime: 2.967 ms
[bump] bump-render=height: FPS: 357 FrameTime: 2.801 ms
[effect2d] kernel=0,1,0;1,-4,1;0,1,0;: FPS: 136 FrameTime: 7.353 ms
[effect2d] kernel=1,1,1,1,1;1,1,1,1,1;1,1,1,1,1;: FPS: 70 FrameTime: 14.286 ms
[pulsar] light=false:quads=5:texture=false: FPS: 406 FrameTime: 2.463 ms
[desktop] blur-radius=5:effect=blur:passes=1:separable=true:windows=4: FPS: 71 FrameTime: 14.085 ms
[desktop] effect=shadow:windows=4: FPS: 200 FrameTime: 5.000 ms
[buffer] columns=200:interleave=false:update-dispersion=0.9:update-fraction=0.5:update-method=map: Unsupported
[buffer] columns=200:interleave=false:update-dispersion=0.9:update-fraction=0.5:update-method=subdata: FPS: 40 FrameTime: 25.000 ms
[buffer] columns=200:interleave=true:update-dispersion=0.9:update-fraction=0.5:update-method=map: Unsupported
[ideas] speed=duration: FPS: 122 FrameTime: 8.197 ms
[jellyfish] <default>: FPS: 128 FrameTime: 7.812 ms
[terrain] <default>: Unsupported
[conditionals] fragment-steps=0:vertex-steps=0: FPS: 352 FrameTime: 2.841 ms
[conditionals] fragment-steps=5:vertex-steps=0: FPS: 171 FrameTime: 5.848 ms
[conditionals] fragment-steps=0:vertex-steps=5: FPS: 323 FrameTime: 3.096 ms
[function] fragment-complexity=low:fragment-steps=5: FPS: 220 FrameTime: 4.545 ms
[function] fragment-complexity=medium:fragment-steps=5: FPS: 137 FrameTime: 7.299 ms
[loop] fragment-loop=false:fragment-steps=5:vertex-steps=5: FPS: 206 FrameTime: 4.854 ms
[loop] fragment-steps=5:fragment-uniform=false:vertex-steps=5: FPS: 206 FrameTime: 4.854 ms
[loop] fragment-steps=5:fragment-uniform=true:vertex-steps=5: FPS: 217 FrameTime: 4.608 ms
=======================================================
glmark2 Score: 214
=======================================================
Mówcie co chcecie, ale współczynnik wydajności całej platformy do ceny jest zdumiewający. W stresie bez radiatora, główna jednostka nie przekroczyła temperatury 50 stopni Celsjusza:
A co Androidem?
Oczywiście jest dostępny jest Adnroid 4.4.2, który działa bardzo przyzwoicie, osiągając wynik 14989 punktów w programie AnTuTu. Na tle top smartfonów wypada trochę blado, ale i tak jest bardzo dobrze i sprawdzi się również w roli domowego centrum rozrywki.
Dla osób ciekawych wrażeń, jest również osiągalny Android 5.0.2 Lollipop: