Portál AbcLinuxu, 1. května 2025 11:31
Dnešný blog bude o skompilovaní Qt5 a transformáciu Olinuxino A20 micro na retro hraciu konzolu. Textu okrem pár príkazov moc nebude, o to viacej som tu napchal fotiek a videí
Na vývoj pre takéto zariadenie budeme najskôr potrebovať SDK (cross kompilátor, knižnice ...). Takže šup:
git clone git://github.com/mireq/a20-olinuxino-micro-autobuild.git cd a20-olinuxino-micro-autobuild make
Po istej chvíli (a 10-15GB zožratého priestoru na disku) by mal príkaz skončiť niečim takýmto:
To create sd image type command: sudo board/a20_olinuxino/make-sdimg.sh .../output/images/rootfs.tar 60 .../output/images
Po spustení príkazu sa vytvorí obraz, ktorý je možné skopírovať na SD kartu príkazom:
dd if=output/images/a20_olinuxino.sdimg of=/dev/sdX bs=4k
Samotné Qt5 sa defaultne nekompiluje, musí sa zapnúť cez menuconfig v adresári buildroot-a20-olinuxino
- Target packages / Graphic libraries and applications / Qt5. To isté platí pre ovládače grafiky (mali).
Nový systém je pomerne minimalistický. Defaultne je konzola nastavená na /dev/ttyS0
. Grafický výstup sa dá zapnúť spustením modprobe lcd
. Pre OpenGL musí byť načítaný modul mali (modprobe mali
).
Ako emulátor používam svoj fork emultáora generator. Build systém je cmake, takže na kompiláciu je potrebný toolchain arm.cmake
:
SET(CMAKE_SYSTEM_NAME Linux) set(CMAKE_SYSTEM_PROCESSOR arm) set(CMAKE_ARCH "arm") SET(CMAKE_SYSTEM_VERSION 1) SET(CMAKE_SYSROOT /toolchain/buildroot-a20-olinuxino/output/host/usr/arm-buildroot-linux-gnueabihf/sysroot) SET(CMAKE_PREFIX_PATH /toolchain/buildroot-a20-olinuxino/output/host/usr/arm-buildroot-linux-gnueabihf/sysroot) SET(CMAKE_LIBRARY_PATH /toolchain/buildroot-a20-olinuxino/output/host/usr/arm-buildroot-linux-gnueabihf/sysroot/usr/lib) SET(CMAKE_INCLUDE_PATH /toolchain/buildroot-a20-olinuxino/output/host/usr/arm-buildroot-linux-gnueabihf/sysroot/usr/include) SET(CMAKE_C_COMPILER arm-cortex_a7-linux-gnueabi-gcc) SET(CMAKE_CXX_COMPILER arm-cortex_a7-linux-gnueabi-g++) SET(CMAKE_FIND_ROOT_PATH /toolchain/buildroot-a20-olinuxino/output/host/usr/arm-buildroot-linux-gnueabihf/sysroot) SET(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER) SET(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY) SET(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY) SET(OPENGL_INCLUDE_DIR /toolchain/buildroot-a20-olinuxino/output/host/usr/arm-buildroot-linux-gnueabihf/sysroot/usr/include
Pre out of source build je príkaz na vygenerovanie Makefile:
cmake -DCMAKE_TOOLCHAIN_FILE=../arm.cmake -DUSE_QT_GUI=off -DUSE_QML_GUI=on -DUSE_SDL_AUDIO=off -DIMPORT_EXECUTABLES=../sega-generator-build/ImportExecutables.cmake ../sega-generator
Po spustení príkazu make
by sa mal vygenerovať program generator-qml, ktorý stačí s príslušnými qml súbormi skopírovať na kartu a spustiť
V starších verziách som skúšal rôzne metódy škálovania, ale nakoniec som len surovo zväčšil obraz dvojnásobne (keď už retro tak poriadne).
Nakoniec výsledok bez interpolácie vyzerá takto (nie je to rozobraný notebook, len obal na tablet s klávesnicou).
Poslednou hračkou dnes je emulátor terminálu, ktorý sa snaží tváriť fakt retro. Rozbehať ho síce nie je až tak jednoduché pretože niektoré shadery neboli napísané tak, aby fungovali pod OpenGL ES 2 (väčšinou stačili pridať precision). Takže zopár screenshotov (nízku kvalitu obrazu a šum spôsobuje samotný emultáro terminálu).
Tiskni
Sdílej:
7.50€ v miestnom obecnom obchode
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.