[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