Portál AbcLinuxu, 30. dubna 2025 12:52
OLinuXino je vývojová doska s (prevažne) otvoreným hardvérom a softvérom. Na tomto pomerne zaujímavom zariadení sa dá spustiť Linux so štandardným desktopom. V dnešnom blogu sa pozrieme bližšie na túto dosku a periférie ako dotykový TFT panel a wifi.
Dosky OLinuXino sú dostupné v rôznych variantoch. Ja sa budem venovať najvyššiemu modelu, ale celý text (okrem wifi modulu a popisu hardvéru) sa bude týkať aj nižších modelov.
Obvody použité pri výrobe OLinuXina sú bežne dostupné. Softvér aj hardvér sú open source a sú dostupné priamo v repozitároch výrobcu.
Priamo k OLinuXinu je možné zakúpiť LCD a predísť tak prípadným problémom s konektormi. Dotykové LCD sú dodávané v rozloženom stave. Dotyková vrstva sa musí na TFT panel po odstránení ochranných fólií pripevniť napríklad lepiacou páskou. Po úspešnom zapojení dotykovej vrstvy a pripojení LCD pomocou 40-pinového kábla môžme zapnúť dosku a pravdepodobne uvidíme toto: zle. Po prvotnom strachu zo zlomenia driveru LCD si stačí uvedomiť, že android má pevne nastavené rozlíšenie 800x600 pričom LCD má trochu iné rozlíšenie ;).
LCD má malý pozorovací uhol (40°-70°), dotyková vrstva je mierne mliečna čo ešte zhoršuje viditeľnosť. Preto nie je vhodný na priame slnečné svetlo. Rezistívna dotyková vrstva reaguje veľmi dobre na stylus (tvrdý, nie ten dodávaný k patlacím hračkám), alebo na necht. Reakcia na dotyk prstami je hlavne v strednej časti pomerne nepresná.
Základným nástrojom, ktorý sa na debugovanie používa je USB-USART kábel. Po jeho pripojení na USART konktor na OLinuXine sa dá pristupovať na konzolu OLinuXina príkazom:
screen /dev/ttyUSB0 115200
Bootovateľné obrazy Linuxu sú dostupné priamo na A13 wiki. Najlepšiu podporu má v súčasnosti debian. Obrazy debianu majú samostatnú wiki stránku. Po stiahnutí obrazu stačí stačí vytvoriť bootovaciu SD kartu príkazom:
dd bs=4M oflag=sync if=obraz.img of=/dev/sdX
kde X je písmeno SD karty. Nastavenie rozlíšenia má na starosti súbor script.bin, ktorý sa nachádza na 1. partícii SD karty. Stiahnuť sa dá zo stránok výrobcu.
Existujú rôzne skripty na zostavenie vlastnej embedded "distribúcie". Pre OLinuXino mám odskúštaný buildroot, zdrojové súbory môjho forku buildrotu sú na GitHube.
Nasledujúce príkazy stiahnu buildroot a vytvoria obraz koreňového adresára.
$ git clone git://github.com/mireq/buildroot-a13-olinuxino.git $ cd buildroot-a13-olinuxino $ make a13_olinuxino_defconfig $ make
Obraz SD karty sa vytvorí príkazom, ktorý make vypísal na poslednom riadku napr.
# sudo board/a13_olinuxino/make-sdimg.sh \ /home/mirec/buildroot-a13-olinuxino/output/images/rootfs.tar 60 \ /home/mirec/buildroot-a13-olinuxino/output/images
Následne stačí už len obraz zapísať na SD kartu a nabootovať.
# sudo dd if=/home/mirec/buildroot-a13-olinuxino/output/images/a13_olinuxino.sdimg of=/dev/sdb
Konzola by mala byť dostupná cez USART (screen /dev/ttyUSB0 115200
).
V štandardnej konfigurácii kernelu nie je povolený modul GPIO pre LCD. Ten sa musí zapnúť cez make menuconfig
v koreňovom adresári buildrootu a následne v menu Device Drivers
-> Misc devices
-> An ugly sun4i gpio driver
.
Po rekompilácii (make
) a napálení novej flash môžme cez konzolu (USART) zaviesť modul a vyskúšať /dev/fb0
.
# modprobe sun4i-gpio # cat /dev/urandom > /dev/fb0
Dotykový panel je obsluhovaný modulom sun4i-ts. Po jeho zavedení sa vo výpise dmesg
objavia informácie o zariadení.
sun4i-ts: tp_screen_size is 5 inch. sun4i-ts: tp_regidity_level is 5. sun4i-ts: tp_press_threshold_enable is 0. sun4i-ts: rtp_sensitive_level is 15. sun4i-ts: rtp_exchange_x_y_flag is 0. sun4i-ts.c: sun4i_ts_probe: start... begin get platform resourec input: sun4i-ts as /devices/platform/sun4i-ts/input/input1
Zariadenie využíva knižnica tslib (dá za povoliť cez make menuconfig
v koreňovom adresári buildrootu a menu Package Selection for the target
-> Libraries
-> Hardware handling
-> tslib
). Po inštalácii sa dotykový panel kalibruje nasledujúcimi príkazmi. Exporty je možné pridať do /etc/profile
, potom zostane len posledný príkaz.
$ export TSLIB_TSEVENTTYPE=raw $ export TSLIB_CONSOLEDEVICE=none $ export TSLIB_FBDEVICE=/dev/fb0 $ export TSLIB_TSDEVICE=/dev/input/event1 $ export TSLIB_CALIBFILE=/etc/pointercal $ ts_calibrate
Výber knižníc v našom minimalistickom systéme môžme ovplyvniť cez menuconfig buildrootu. V koreňovom adresári buildrootu stačí zadať príkaz a v menu Package Selection for the target
-> Graphic libraries and applications (graphic/text)
.
make menuconfig
Pre Qt4 stačí vybrať správny grafický driver (Linux Framebuffer
) a vstupné zariadenie (Mouse drivers
-> tslib
). Po inštalácii by mali aplikácie fungovať po zadaní nasledujúcich príkazov:
$ export TSLIB_TSEVENTTYPE=raw $ export TSLIB_CONSOLEDEVICE=none $ export TSLIB_FBDEVICE=/dev/fb0 $ export TSLIB_TSDEVICE=/dev/input/event1 $ export TSLIB_CALIBFILE=/etc/pointercal $ export QWS_MOUSE_PROTO=Tslib:/dev/input/event1 $ ./qt-aplikacia -qws
Výrobca hardvéru dodáva binárne ovládače Mali400 pre Linux. Sú však kompatibilné len s glibc, pričom buildroot používa uclibc.
Riešením je kompilácia externého toolchainu (napr. Crosstool-NG) s eglibc (čo je glibc pre embedded systémy binárne kompatibilné s glibc) a hard float pointom.
$ wget http://crosstool-ng.org/download/crosstool-ng/crosstool-ng-1.9.3.tar.bz2 $ tar xjf crosstool-ng-1.9.3.tar.bz2 $ cd crosstool-ng-1.9.3 $ ./configure --prefix=/some/place $ make # make install $ ct-ng arm-unknown-linux-gnueabi $ ct-ng menuconfig ----------- Nastavenie: Target options / Emit assembly for CPU / cortex-a8 Target options / Tune for CPU / cortex-a8 Target options / Use specific FPU / vfp General toolchain options / Tuple's alias / arm-linux-gnueabi (kvôli ovládačom mali400) Operating System / Target OS / linux Operating System / Linux kernel version / 2.6.32.60 C compiler / C++ ----------- $ ct-ng build
Následne v buildroote:
Toolchain / Toolchain type / External toolchain Toolchain / Toolchain origin / Pre-installed toolchain Toolchain / Toolchain path / nastaviť cestu Toolchain / Toolchain prefix / $(ARCH)-linux-gnueabi Toolchain / Toolchain has C++ support / y Package Selection for the target / Hardware handling / mali400
Po týchto nastaveniach bude možné skompilovať Qt5 aj s podporou OpenGL ES2. K exportom stačí pridať nasledujúce riadky:
export QT_QPA_GENERIC_PLUGINS=tslib:/dev/input/event1 export QT_QPA_EGLFS_HIDECURSOR=1
Qt 5 by následne malo fungovať ako na tomto videu (nie sú potrebné žiadne voľby ako -qws v Qt 4).
OLinuXino je veľmi zaujímavá alternatíva k Raspberry Pi. Veľké pozitívum je prakticky okamžité fungovanie dostupných LCD modulov. Na druhej strane LCD moduly nedosahujú ani z ďaleka kvalitu panelov používaných v tabletoch. Cena sa u základných modelov pohybuje mierne vyššie než je to u Raspberry Pi. Ceny však nie sú dotované.
Aby nedošlo k nedorozumeniam: text je prakticky zhodný s týmto. V oboch prípadoch som autorom ja.
Tiskni
Sdílej:
Oficiálna nie, neoficálna ... no doska je veľká, zhruba ako Mikro ATX (dokonca neviem, či nie kompatibilná). Povedzme to tak, že škaredo bude vyzerať skoro za každých okolností, ale ako vstavané zariadenie fajn.
Teoreticky by mala ísť, ale nerozbehával som to.
- Dual core ARM cortex-A7 processor, NEON, VFPv4, 256KB L2 cache - Mali400mp2, OpenGL ES GPU - RAM 1GB DDR3 @960MHz - HDMI 1080p Output - 100M Ethernet - 4Gb Nand Flash - 2 USB Host, 1 micro SD slot, 1 SATA, 1 ir - 96 extend pin including I2C, SPI, RGB/LVDS, CSI/TS, FM-IN, ADC, CVBS, VGA, SPDIF-OUT, R-TP..)
Záleží od účelu. Ja mám túto dosku kvôli bezproblémovej podpore LCD AT070TN92 (to funguje automaticky bez námahy aj s dotykovým panelom). U Raspberry Pi je zase možné pripojiť LCD s rozhraním DSI ... ale sú tam isté problémy s ovládačmi. O Cubieboard 2 a lacných LCD google moc nepovie, LVDS nemá každý LCD, možno to pôjde dobre a jednoducho, ale nemám s tým skúsenosti.
Jop, na SSH sa pripájam cez WiFi.
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.