Qt-QML JIT on Raspberry PI Rev. one

My friend and I are working on a portable Internet radio controlled by the Raspberry PI B + and a small touch screen. I am developing an interface with Qt-5.9, which I cross-compiled for the ARMv6 PI processor. My interface uses QML, so when I run my application everything works, but the QML animations are lagging. Accordingly, the console tells me that JML QML is not enabled ( JIT is disabled for QML. Property bindings and animations will be very slow. Visit https://wiki.qt.io/V4 to learn about possible solutions for your platform. ), So I looked at this page about the V4 engine and after about two weeks of trying, I found that the problem was the lack of the ability to use the Thumb-1 instruction set that V4 needs and HardFP. Raspby Jesse's configuration runs on Pi. So now I think this will work if I get a cross-compiler to work with the Thumb-1 set. I tried very hard, and in the end I had two problems.

  1. When I use the -mthumb flag on the command line, I get this error: sorry, unimplemented: Thumb-1 hard-float VFP ABI . I need Thumb-1, I cannot change the Hard-Float implementation of the entire OS, and for ARMv6 there is no suitable compiler flag to disable VFP.
  2. When I use the -mthumb-interwork on the command line, compilation works, but the executable does not change due to the ABI setting ( https://gcc.gnu.org/onlinedocs/gcc-4.8.5/gcc/ARM-Options. html # ARM-Options ) ( -mthumb-interwork:... In AAPCS (the ABI) configurations this option is meaningless. ). I tried all possible ABIs, but none of them work and compile a working program.

I also read about some patches for RPi, but they were included in the upstream Qt a long time ago.

I changed the compiler arguments a bit (file: QT / qtbase / mkspecs / devices / linux-rasp-pi-g ++ / qmake.conf):

 QMAKE_CFLAGS += \ -mthumb \ -mfpu=vfp \ -mtune=arm1176jzf-s \ -march=armv6zk \ -mabi=aapcs-linux 

(This configuration does not work)

I configured QT with the following arguments:

 ./configure -release -opengl es2 -device linux-rasp-pi-g++ -device-option CROSS_COMPILE=~/raspi/tools/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian-x64/bin/arm-linux-gnueabihf- -sysroot ~/raspi/sysroot -opensource -confirm-license -skip webengine -make libs -no-icu -tslib -prefix /usr/local/qt5pi -extprefix ~/raspi/qt5pi -hostprefix ~/raspi/qt5 -v 

I hope that you guys are smarter than me to solve these problems, because I think I did my best to make JIT work.

It would be bad if this problem was unsolvable, because Qt-QML is a very suitable GUI solution for embedded devices such as PI, and six out of eight RPis use this old ARMv6 processor.

thanks in advance

+11
c ++ qt raspberry-pi jit qml
source share
1 answer

I don’t know enough about your specific problem, but I suggest this:

I recommend that you use Boot2Qt, which is a yocto-linux build and designed for embedded hardware. With it, you get a lightweight Linux distribution and all Qt libraries.

You can conveniently configure your application to start at boot, and it works very well, even on slow hardware. here is the documentation for building it:

http://doc.qt.io/QtForDeviceCreation/qtee-custom-embedded-linux-image.html

This url is about a commercial product, but you can get the source in the repo below. Otherwise, follow the documentation.

 git clone git://code.qt.io/yocto/meta-boot2qt.git 

You will need Linux OS to build. Ubuntu 16 and 18 worked well for me.

Boot2Qt is compatible with R-PI 1-3, Zero, and many other devices. See the documentation for a more complete list.

-one
source share

All Articles