BeagleBoneBlack/SGX + Qt EGLFS + Weston
Contents
Introduction
The SoC of BeagleBone Black is an AM335x by Texas Instruments.
The graphic accelerator by Imagination Technologies is PowerVR chipset, the serie 5 (SGX530).
I don't have a very good english, thanks to the people who will be able to correct me ;-)
Sources
BeagleBoard
Texas Instruments
- The last Porcessor SDK for AM335x
- SGX Debug Info page
- Linux SDK Graphics and Display
- The community of Texas Instruments
- Git repo (Gitorious)
Imagination Technologies
Conditions
- We must have "-ti-" on the BBB kernel. Type
uname -r
to verify your kernel version - We connect a screen to the BBB with a micro HDMI to HDMI cable
- We need an ethernet cable to connect the beaglebone to the internet
- A lot of place if you want install demos and Weston without Cross Compilation
- All orders will be in "root" mode here (
sudo -i
). Sorry if it's not secure ^^ - All packages are up to date (
apt-get update
).
For my tests I use :
- Debian 9.3 2018-01-28 4GB SD IoT (kernel: 4.9.78-ti-r94)
- Debian 9.5 2018-10-07 4GB SD LXQT (kernel: 4.14.71-ti-r80)
you can download the last image of BBB here
Install PowerVR Module
The OLD Version
It's not a good solution and I have not test.
The older version may run on versions lower or equal than 4.4.68-bone17.
The old version use the FBDEV.
So you need a lts/bone kernel to download :
cd /opt/scripts/tools/ git pull ./update_kernel.sh --kernel 4.4.`your version here`-bone17 reboot apt-get install ti-sgx-es8-modules-`uname -r` depmod -a
Build SGX userspace for 4.4.x (must be done on an x86, due to the TI 5.01.01.02 blob extractor)
git clone https://github.com/RobertCNelson/bb-kernel.git cd bb-kernel/ git checkout origin/am33x-v4.4 -b tmp-sgx ./sgx_create_package.sh
Copy ./deploy/GFX_5.01.01.02_es8.x.tar.gz to BeagleBone/BeagleBone Black and install
tar xfv GFX_5.01.01.02_es8.x.tar.gz -C / cd /opt/gfxinstall/ apt-get install lsb-release insserv ./sgx-install.sh reboot
Verify omaplfb & pvrsrvkm loaded
debian@arm:~$ lsmod | grep omaplfb omaplfb 12065 0 pvrsrvkm 178782 1 omaplfb
But when I test with lastest 4.4-bone kernel, the omapfbl module was not loaded
The NEW Version
Check access of SGX drivers
ls /sys/devices/platform/ocp/56000000.sgx driver driver_override drm modalias of_node power subsystem uevent
If you are on 4.9.X kernel, you don't have access to the SGX drivers, update your dtb files for solve this problem:
cd /opt/source/dtb-4.9-ti/ git pull make install reboot
The git pull
command patch the dtb files to apply this patch.
And retry the command to verify the access of SGX drivers, it's very important else you can't continue this tutorial...
Installing the module
apt-get install ti-sgx-ti335x-modules-`uname -r` depmod -a
The GBM Library
Introduction
The GBM library is patched by Texas Instruments for use the PowerVR module.
The library on /usr/lib/arm-linux-gnueabihf/libgbm.so.1.0.0
is not a good library for use the graphic accelerator.
Add news directories of libs
Edit /etc/ld.so.conf.d/arm-linux-gnueabihf.conf
file, and add /usr/lib
and /usr/local/lib
after the first line.
cat /etc/ld.so.conf.d/arm-linux-gnueabihf.conf # Multiarch support /lib/arm-linux-gnueabihf /usr/lib /usr/local/lib /usr/lib/arm-linux-gnueabihf
After your file saved, type ldconfig
to reload the new directories of libraries.
Download/Install library
cd /opt/ git clone git://git.ti.com/glsdk/libgbm.git -b next cd libgbm/ git apply 0001-Hack-gbm.pc.in-add-ldl-at-Libs-to-pass-the-QT5-confi.patch ./autogen.sh make install cd /opt/ rm -r libgbm ln -s /usr/local/lib/libgbm.so.2.0.0 /usr/local/lib/libgbm.so.2
How get the GOOD library
Note: If you want just use the graphic accelerator, this part is not important.
I explain how I sought to get the patches from Texas Instruments. You can go to the next step if you want.
I created a SD with am335x-evm-linux-XX.XX.XX.XX.img image and the graphic accelerator work fine on the BeagleBone Black.
So I download the last SDK of AM335X from this page.
Must be done on an x86 because this repo is very big, I use 05.02.00.10 PSDK for this example:
$ cd /opt/ $ git clone git://arago-project.org/git/projects/oe-layersetup.git tisdk $ cd tisdk $ ./oe-layertool-setup.sh -f configs/processor-sdk/processor-sdk-05.02.00.10-config.txt $ find /opt/tisdk/sources -iname "*libgbm*" /opt/tisdk/sources/meta-ti/recipes-graphics/gbm/libgbm_10.0.0.bb /opt/tisdk/sources/meta-processor-sdk/recipes-graphics/gbm/libgbm_10.0.0.bbappend /opt/tisdk/sources/meta-processor-sdk/recipes-graphics/gbm/libgbm $cat /opt/tisdk/sources/meta-ti/recipes-graphics/gbm/libgbm_10.0.0.bb BRANCH = "next" SRC_URI = "git://git.ti.com/glsdk/libgbm.git;protocol=git;branch=${BRANCH}" $ls /opt/tisdk/sources/meta-processor-sdk/recipes-graphics/gbm/libgbm 0001-Hack-gbm.pc.in-add-ldl-at-Libs-to-pass-the-QT5-confi.patch
I have the git source with the branch and I know there is only one patch !
The SGX SDK
Download/Install SGX SDK
cd /opt/ git clone -b ti-img-sgx/1.14.3699939 git://git.ti.com/graphics/omap5-sgx-ddk-um-linux.git cd omap5-sgx-ddk-um-linux/ export DISCIMAGE=/ export TARGET_PRODUCT=ti335x make install cd /usr/lib/ ln -s libGLESv2.so.1.14.3699939 libGLESv2.so.1 mkdir /usr/local/lib/gbm/ cd /usr/local/lib/gbm/ ln -s ../../../lib/libpvrGBMWSEGL.so.1.14.3699939 gbm_pvr.so rm -r /opt/omap5-sgx-ddk-um-linux
File powervr.ini
As explained on the texas instruments wiki, the configuration of the /etc/powervr.ini file is important. I advise you to configure your file as mine:
cat /etc/powervr.ini [default] WindowSystem=libpvrDRMWSEGL.so DefaultPixelFormat=RGB565