231 views
in Platform Packages by

Hello.

I'm trying run Embedded Wizard UI application for i.MX 6 using OpenGL ES 2.0 and fbdev (Linux framebuffer device) and OpenGL ES 2.0 and Wayland.
I use following links:
https://doc.embedded-wizard.de/getting-started-imx6-opengl-fbdev?v=11.00
https://doc.embedded-wizard.de/getting-started-imx6-opengl-wayland?v=11.00

But i have no standard NXP SABRE Carrier Board.
I have Phytec phyFlex PBA-B-01 Carrier board.
This Phytec phyFlex carrier board have own "Yogurt (Phytec Base Distribution) BSP-Yocto-i.MX6-PD20.1.0 phyflex-imx6-1" firmware.
I'm able to build Software - fbdev on my host machine, got binary for target iMX6 Arm device and successfully run it on target device.

1) As i mentioned abouve - Phytec phyFlex carrier board have own "Yogurt (Phytec Base Distribution) BSP-Yocto-i.MX6-PD20.1.0 phyflex-imx6-1" firmware. 
Then i made own system image using these links:
https://doc.embedded-wizard.de/getting-started-imx6-opengl-fbdev?v=11.00
https://doc.embedded-wizard.de/getting-started-imx6-opengl-wayland?v=11.00
 Then flashed this firmware to SD card, tried to load firmware but failed while loading.
 So i used standard "Yogurt (Phytec Base Distribution) BSP-Yocto-i.MX6-PD20.1.0 phyflex-imx6-1" firmware (looks liek this system have NO needed library libEGL.so with fbGetDisplayByIndex and fbCreateWindow functions)
 
2) But when i try to build OpenGL-fbdev application on host computer, i got undefined reference to `fbGetDisplayByIndex' and undefined reference to `fbCreateWindow' errors.

It looks like there are i.MX Framebuffer (FB) API functions calls in my source code:

#ifdef EGL_API_FB
nativeDisplayType = fbGetDisplayByIndex( 0 );
#endif

#if (defined EGL_API_FB)
else if ( strstr( eglVendor, "Vivante" ))
{
eglNativeWindowType = fbCreateWindow( nativeDisplayType, 0, 0, 0, 0 );
}
#endif

I use standard Yocto SDK and i belive that library libEGL.so have no fbGetDisplayByIndex and fbCreateWindow functions.

Then successfully built binary file using gpu-viv-bin-mx6q-fb component taken from here:
http://tardis.tiny-vps.com/aarm/packages/g/gpu-viv-bin-mx6q-fb/
I changed libEGL.so.1 and libGAL.so libraries on host computer and build was successful.


3) I run binary file on on target IMX6 Arm computer (Phytec phyFlex i.MX6) and got:
./EmbeddedWizard-Linux-OpenGL-fbdev: symbol lookup error: ./EmbeddedWizard-Linux-OpenGL-fbdev: undefined symbol: fbGetDisplayByIndex

 I changed libEGL.so.1 and libGAL.so libraries on target IMX6 Arm computer (Phytec phyFlex i.MX6).
   After that i copied binary file to target imx6 computer, run it and got segmentation fault.
   
4) I'm able to build OpenGL ES 2.0 and Wayland of binary file (after making Wayland compatible SDK and installing it on host machine), then i copied binary file to target imx6 computer, run it and got:
    ./EmbeddedWizard-Linux-OpenGL-Wayland./EmbeddedWizard-Linux-OpenGL-Wayland: error while loading shared libraries: libwayland-client.so.0: cannot open shared object file: No such file or directory
    
My questions:
- what im doing wrong ?
- may be my main mistake is to run Embedded Wizard UI application on Phytec phyFlex board, not NXP SABRE board ?
- could you give me advices please ?

Thank you in advance.

1 Answer

0 votes
by
Fixed.

Finally I was able to launch EmbeddedWizard-Linux-OpenGL-fbdev application on imx6 SOC/Phytec PhyFlex board.
I confirm that Vivante Egl vendor needed to run OpenGL ES Embedded Wizard project is supported only until old PD16 firmware and not higher.
Interesting, why does Embedded Wizard still use it on their project ?

Description of build/run.

I have downloaded Phytec PD16.1.1 firmware taken from here:
ftp://ftp.phytec.de/pub/Software/Linux/BSP-Yocto-i.MX6/BSP-Yocto-i.MX6-PD16.1.0/images/phyflex-imx6-1/
Then I have flashed the firmware to SD card and started imx6/PhyFlex system.

I found prebuilt PD16.1.1 SDK for phyCORE-i.MX 6 / phyBOARD-Mira taken from here:
https://www.phytec.pl/produkty/system-on-modules/phycore-imx-6-phyboard-mira-download/#sdk
What interesting, Phytec no more supports SDK for PD16 for phyFlex board, only for PD18 and higher, please see:
https://www.phytec.eu/product-eu/system-on-modules/phyflex-imx-6-download/#sdk
But this phyCore SDK version is compatible for phyFlex, because I was able to build binary file and run on the target iMX6 system.

Also I have built SDK for PD16.1.1 by myself using Ubuntu 14 and standard phyLinux script.

May be EmbeddedWizard could make changes in the description of building/using EmbeddedWizard-Linux-OpenGL-fbdev application on modern SOC/boards with NO Vivante GPU driver because they usually have mesa-etnaviv GPU driver ?
by

Hi MikhailS,

have you ever tried to build with PD18.1.0 SDK as described here after removing the EGL_API_FB macro definition in the Makefile of the Embedded Wizard example project?

Kind Regards,
Martin

Embedded Wizard Website | Privacy Policy | Imprint

...