Poridil jsem si http://cubieboard.org/ jakozto alternativu Raspberry Pi s vyssim vykonem a vybavou. Oproti Raspberry ma vyssi ARM core, lip resenou sitovku a take SATA port. Planoval jsem to jako levne HTPC reseni a vkladal jsem velke nadeje do HW dekodovani videa.

Zarizeni ma na sobe 4GB NAND Flash, ve kterem je nahrany Android. Obsahuje taky microSD slot, ktery dostava pri bootu vyssi prioritu (ale da se nastavit v bootloaderu). Boot ze SATA primo AFAIK neni zatim podporovany, ale to se da jednoduse obejit umistenim jadra jinam a jen zmenu root device v kernelu. SATA je reseno driverem "sw_ahci", ve kterem ta pritomnost "SW" budi trochu rozpaky. Ale to je u ARMovych SoC bezne, polovina veci se resi za pomoci SW/driveru nebo navesenim interne na USB. Kolega k tomu pripojoval starsi SSD Intel 80GB, realna rychlost zapisu byla kolem 60MB/s, cteni bohuzel netestoval. Nicmene i to staci, sitovka na desce je jen 100Mbit. Slot na microSD je SDXC, bohuzel bezi v defaultu jen na 24MHz pri 4bitech, tzn. 12MB/s. Bude se jeste tunit.

Android bezi a to je tak asi vsechno, co o nem muzu rict. Nepochopil jsem ovladani toho systemu ani zpusob, jak treba namountovat NFS a prehrat film (jakysi interni prehravac ani nenabidne vyber souboru). Prepinani HDMI modu chodi, sitovka taky, audio skrze HDMI pipa, animace jsou plynule... Pro me je to zkratka blackbox.

Bootovani do linuxu je jednoduche, na SD kartu nebo do NAND Flash na specifikovanou adresu se nahraje bootloader "u-boot" vc. HW konfigurace, ten pak hleda prvni partition na danem mediu na urcite adrese (prvni partition musi zacinat az dal na mediu a je to boot partition), na ktere je bootloader skript a jadro. Ve skriptu se daji nastavit dalsi HW parametry, treba rozliseni HDMI, pamet, adresy zarizeni, MAC sitovky atd. Kernel a bootloader se buildi zvlast oproti rootfs, k dispozici jsou ruzne predpripravene buildy pro ruzne zarizeni a je to vzdy sada bootloader, boot skript, jadro, moduly a par souboru v /etc s konfiguraci modulu pro dane zarizeni.

Rootfs si clovek stahne separatne podle toho, co tam chce. K dispozici je napr. Linaro (Ubuntu), Fedora, Debian, Gentoo, Archlinux atd. Ja zvolil Debian, ma primo armhf port. Takze krome jadra je vsechno distribucni. Bezi to vcelku pekne, dodavane drivery jsou dostatecne. Funguje zvuk, sit, infra, dynamicke skalovani frekvence, SATA, USB atd. V baleni CubieBoardu je dodavan USB-to-serial prevodnik a je pripojeny na UART do desky, takze clovek ma primy pristup do bootloaderu a konzoli systemu. Na http://linux-sunxi.org/ je pekna wiki k rodine Allwinner s popisem, jak to vsechno rozchodit.

Vsechno tohle mi bezi napajene z USB. Nominalne deska potrebuje 5V 2A a to hlavne kvuli napajeni SATA disku (v baleni je i kabel vc. napajeni). CPU jsem pretaktoval na 1.20GHz a bezi stabilne, da se az na 1.50GHz, ale chce to asi lepsi zdroj prip. maly pasivek na cip. Luxus je to vsechno ovladat pres standardni cpufreq nastroje.

Akorat je trosku problem s grafikou, ale to se dalo cekat. SoC obsahuje GPU Mali 400, ke kteremu jsou v dodavanem kernelu potrebne drivery. HDMI mod je zatim potreba nastavit pred bootem, podle toho se alokuje pamet framebufferu z RAM (da se i nastavit, jak velka). Neco jako Xrandr zatim nema podporu. Zmena rozliseni za behu je zatim jen hack. Graficka konzole je resena driverem mali_drm, zaklad pro akceleraci tedy mame. Xorg normalne bezi a to bud pres fbdev driver (ktery obstarava mali_drm) nebo primo pres xf86-video-mali, ktery sice hlasa podporu EXA, ale v praxi je obcas pomalejsi, nez fbdev. DRI driver pro OpenGL neexistuje a mam taky pocit, ze Mali podporuje jen subset OpenGL, OpenGL ES. Takze na standardni Xkove OpenGL muzeme rovnou zapomenout, muselo by se to resit SW fallbackem.

K dispozici jsou GLES knihovny, ktere muzou aplikace vyuzivat. Stejne tak jsou k dispozici knihovny pro CedarX, coz je engine HW dekodovani videa. Vyzkousel jsem XBMC a VLC, oba s dohackovanou podporou pro GLES a CedarX. XMBC se kompilovalo cca tri hodiny (oproti deseti minutam na quadcore Xeonu), VLC asi hodinu a pul. Obe aplikace je nutno poustet na konzoli, bez X, protoze prostrednictvim zminenych knihoven pristupuji primo k HW a mlatily by se s X serverem. XBMC najede (zkouseno v 1080p) do plynuleho akcelerovaneho prostredi a zjevne pouziva i HW dekodovani videa. Ovsem ten vykon je dost na hrane, v 1080p dostavam cca 29fps v idle, v 720p nejakych 56fps. Jakmile se pusti narocnejsi video, framerate klesa pod uroven potrebnou pro film. Muze za to zrejme system bufferovani a dekodovani dopredu, viditelne se to kazdych 3-5 sekund trha vic. Trhanost je stejna pri ruznych bitrate videi, je jedno, jestli je to 10Mbit nebo 50Mbit/s. Takze dekodovaci engine zrejme zvlada. Problem muze byt zvuk, ktery se dekoduje SW nebo zpusob vykreslovani pres GLES. VLC je opet konzolove a nema ani OSD. Prehravani je ale plynule, vlivem nejakeho bugu se kousne po par sekundach, asi nejaka race condition. Mplayer je mimo hru, nema podporu pro CedarX.

Takze v soucasne dobe je prehravani videa nemozne, board je na trhu teprve velice kratkou dobu, nekteri jej jeste ani nedostali. Pokud se vytvori komunita jako kolem Raspberry Pi, verim, ze se SW podpora zlepsi. Ale muze to trvat treba rok. Lima driver jsem nezkousel, neda se zatim poradne zkompilovat.

Jeste pro porovnani vykonu obligatnim testem openssl (je to single thread test):
Kód:
                            type     16 bytes     64 bytes    256 bytes   1024 bytes   8192 bytes
CubieBoard @ 1.20GHz:       md5      4926.74k    20025.43k    56566.52k   100769.16k   132149.61k
Xeon X5460 @ 3.16GHz:       md5     43202.41k   140334.63k   312750.68k   381595.31k   430858.10k
CuBox @ 800MHz (Gentoo):    md5      2703.27k     9465.54k    26972.16k    50259.97k    67373.74k
Raspberry Pi (unoptimized): md5       380.13k     1501.12k     4800.77k    11312.81k    21682.77k
Raspberry Pi (optimized):   md5      1954.05k     7217.96k    20805.95k    39365.29k    53226.15k
http://www.abclinuxu.cz/clanky/prvni-dny-s-cuboxem
http://elinux.org/RPi_Performance