Building Qt for ARMv6l
I'm looking to build Qt applications for this device: PAX S920 -> www.pax.com.cn/Upload/百富产品/Mobile/S920_ENG-14033279322.pdf
This device is an ARMv6l where the processor has no VFP/FPU and has no HW acceleration for GFX, so all we have is access to /dev/fb linux framebuffer device which doesn't have X11 or any kind of Window Manager.
The final objective is to have Qt and QtWebKit running on this device in a full-screen application where it has nothing more than a browser control rendering HTML web apps.
I've read numerous tutorials and docs about building Qt and QtWebkit but none of them, worked for this device. I've tried to hire multiple contractors to do that work but none made progress.
Can someone point me to correct steps, docs or any tutorial in order to achieve the following:
- Build Qt for ARMv6l
- Make sure it work with linux framebuffer (/dev/fb) without dependencies on X11 and any dependency with OpenGL (since there is no HW acceleration)
- Build QtWebKit
The major reason I'm looking for QTWebKit instead of QtWebEngine is because QTWebEngine is based on Chromium which has the following problems for my case:
- Bigger footprint than WebKit
- Chromium is based on V8, which requires VFP/FPU so it doesn't work on our device
- Unless QtWebEngine implement something else (like the Ozone layer on Chromium), Chromium doesn't support linux Framebuffer
Here is basic information about the device:
I really appreciate any help.
the link PAX S920 dont seem to work,.
This post is deleted!
@mrjj Thank you! Idk why if I embed the link it doesn't work. Just added the plain link and it looks that work :)
Do you have any suggestions for the problem?
Yes that a bit odd. I wonder if the 百富产品 play a part.
Sadly Im not into arm. However I briefly discussed the case with our
local Qt Champion and he expressed concern if the device has enough horsepower
to handle webkit. (64 MB ram is not much). Just wanted to mention it.
@mrjj it does. I have it running from other providers (i.e. www.ekioh.com) and it run just fine. It does all we want. No VFP/FPU and run perfectly on linux framebuffer. The problem is their license model...
ok so u seen a Qt that worked fine on the same spec device?
Well that should guarantee that u most likely can have the same.
Do you know if it was Qt 4 or 5?
@mrjj Qt 5.
Also, its not intended to run full blow websites and neither video or other multimedia content on our device.
The idea is that application developers can code the apps using modern web frameworks hence why we want a modern web engine. It is just "simple" payment applications with small screens, hence the small resource usage on those "sites".
Ok. it sounds reasonable.
Good luck with it. sounds like interesting project.
@mrjj Thanks... I hope someone can jump in here and bring me help building Qt for it... So far found no concrete document for that. But thanks
well its seems to be mutiple disciplines into play as u want a custom Qt with very tight requirements but I bet
hard work and lots of asking here will enable u to build it.
Is it for a commercial product line or just a for fun project?
@mrjj It is for a commercial project. At first we are aiming this PAX device since it is the more "flexible" device in the payment industry but we want to get other players supported as well (like Verifone, Ingenico, etc.).
Like I said, I tried to hire people just to build Qt for the device but no success. I found lots of people that know QML and development FOR Qt but none that actually cross compiled it for an embedded device.
Hi. Basically if you want to crosscompile qt you can do this in 2 ways:
- If you have a proper toolchain and rootfs with development files, you can download qt sources and crosscompile it. I think that a good point to start is with begginsers guide for raspberry pi. Probably you will have to change some options in qmake.conf for this processor.
- Build your own image and sdk with yocto project.
Qt Company have also Qt for device creation so you can ask them directly about commercial version for this device.
There are not much information about this device on internet (sdk, linux version etc..) so for now i can't help more.
@tomasz3dk Thanks for get back. We cannot create an image for the device. We can only create applications for it. And yes, we have a toolchain with sysroot here. Tutorials like that one is one of the multiple ones around the web that points to specific PI build. There is no docs or tutorial for general ARM devices.
I updated the post with basic information of the device processor.
@Gutemberg I don't see informations about processor in your first post ;)
This post is deleted!
Hi upload is broken here at forum ;(
please use external site and paste link here.
Ok good news!
I got Qt 5.8-beta compiled (didn't tried QtWebkit yet and previous versions don't compile, dunno why)! -> I'll post a complete step-by-step here once I got everything to work.
Sent to the device just the libQt5Core and a HelloWorld app that just write a line to the console I built with QtCreator and this is the output:
/data/opt/helloconsole $ ./HelloConsole A newer kernel is required to run this binary. (__kernel_cmpxchg64 helper)
Any idea on what can be? As the image I posted here, the kernel is 3.0.56...
Does this happen with a plain C++ hello world application without Qt?
Here something about this issue: http://uhurumkate.blogspot.de/2014/07/a-newer-kernel-is-required-to-run-this.html
It should work with kernel >= 3.1
@jsulm nop, other c++ apps ran just fine on the device. Only with Qt the problem happens...
Hey guys, does anyone has any idea how to workaround this issue (except by upgrading kernel since it is not possible)?
We really want to buy Qt but we are struggling with this major blocker.
@Gutemberg GCC < 4.7 could help. Did you check the link I provided? There are several suggestions which can help:
- Enabling arm v7 hard-float might solve your problem (it solved mine).
- Using -mfpu=vfp and -mfloat-abi=hard might solve your problem (i didn't try as armv7 was desired).