[elektro] Raspi szoftverfejlesztés asztali gépen?
r3flow
zoltan.nagy at vivor.hu
Mon Nov 20 15:23:39 CET 2017
On 11/20/2017 01:12 PM, Moravcsik Szilárd wrote:
> De ha már kiderült, hogy otthonosan mozogsz a BBB világában, grafikus
> felülettel és nettel kb. mennyi idő alatt áll fel a BBB?
Nálam a 8 másodpercben benne volt az ethernet hálózat is, statikus IP
konfigurációval.
Grafikus felületet BBB-n nem használtam, de ha komplett X-et szeretnél
azzal az egyik baj, hogy sok idő mire elindul, a másik baj, hogy ha van
is GPU az SBC SoC-ban akkor ahhoz vagy van drivered vagy nincs, de ha
van is akkor az vagy EGL vagy framebuffer interfészű és ezek egyikét sem
tudja használni az X11. Bár évek óta készül valami X11 driver EGL
interfészhez de az nem tudom hogy áll és hogy mennyire stabil. De még ha
azóta el is készült volna akkor sem oldja meg az első problémát, hogy az
X11+ablakkezelő+app nagyon lassan indul.
Éppen ezért az ilyen beágyazott GUI-kat közvetlenül a SoC-ban lévő
GPU-hoz a gyártó által adott bináris driver EGL vagy linuxFB
interfészére írják, azaz nincs X11, nincs ablakkezelő és egyszerre csak
1db GUI app futhat mivel az direktben elfoglalja az EGL/framebuffer
interfészt. Tehát szükségképpen az appod foglalja el a teljes képernyőt,
ha "ablakozni" akarsz akkor azt le kell programoznod, vagy olyan
könyvtárat használsz ami tud ilyet, pl. Qt.
A legutolsó projektben Qt-ben írtam egy pici appot ami egy böngészőt
tartalmaz és abban jelenik meg a tartalom (helyben fut egy nginx és
helyben van a statikus tartalom). Ez az app QtWebEngine-t használ EGL
backendre fordított Qt-vel ez kb. 2 másodperc alatt indul el CM3-on
(sima OpenGL demo Qt app ugyanitt meg töredék másodperc alatt indul el),
persze csak azután miután a boot eljut eddig, ami sajnos RPI esetén sok
idő és kikerülhetetlen a zárt GPU és ARM bootloaderek miatt.
Akkoriban a BBB SGX GPU-hoz nem volt driver, aztán binárisban adott ki a
TI de azzal már nem küzdöttem, meg sem néztem, azt sem tudom hogy EGL
vagy linuxFB interfészű. Az SBC-hez kapott linux drisztribúciókban ha
van benne GUI akkor az X11, emiatt ezekben a disztrókban lévő Qt
csomagok mindig X11 interfészre vannak lefordítva. Ha EGL-t szeretnél
akkor forrásból újra kell fordítani a Qt-t (az X11-et meg kukázni).
Ez alapján képbe kerülsz driver interfész ügyben:
http://doc.qt.io/qt-5/embedded-linux.html
A fentiek alapján tehát ha mondjuk RPI-n szeretnél egy GPU gyorsított
OpenGL grafikus alkalmazást teljes képernyőn 60fps sebességgel, akkor az
X11 felejtős, helyette fordítanod kell magadnak egy Qt-t RPI esetén
EGL-hez, kb. így. https://wiki.qt.io/RaspberryPi2EGLFS
Ez alapján bármilyen más SBC-n az adott GPU driveréhez is tudsz
fordítani Qt-t, akár BBB-re is. Már feltéve, hogy a jelenleg BBB-hez
elérhető zárt SGX drivernek van olyan interfésze amit a Qt ismer.
Ha mindenképpen kell olyan grafikus felület ami azonnal indul akkor
olyan SBC-t válassz amiben a boot ROM gyors és amiben van GPU és ahhoz a
gyártó ad ki (várhatóan zárt) drivert és annak a drivernek az
interfészét ismeri a Qt.
Megvásárolt Qt licenc mellé jár Device Creation csomag is, ez a cucc
olyat tud, hogy PC-n összeállítod a grafikus szotfveredet, aztán
kiválasztod az SBC-t amin használni szeretnéd, ő meg összerak neked egy
komplett boot image-t amit egyből tölthetsz az SBC-re és indul a Qt
appod a bekapcsolástól számítva olyan gyorsan ahogy az adott SBC-n az
lehetséges (bár ez nincs 1 másodpercre tuningolva).
https://www.qt.io/qt-for-device-creation/
youtube-on vannak róla videók. Persze ezt kézzel is meg lehet csinálni
free, csak az (sokkal) több idő.
Z.
More information about the Elektro
mailing list