New Qt for Embedded Linux Series started
for info I have started a new series of HowTo's on the wiki related to building & using Qt for Embedded Linux. The series overview can be found "here":http://developer.qt.nokia.com/wiki/Qt_for_Embedded_Linux.
All comments welcomed. I'll try to get it finished in the next week or so but I will be offline for much of next week so please be patient.
I replayed to you in the wrong post...
It's very good idea, thank you for this startup :)
This is a good idea. The biggest problem, which I had, was to create touch and keybord driver for special (embedded) hardware. I'm interressting to get "opengl es" running on my hardware (new driver) and a easy to use virtual keyboard.
for my understanding yo are a bit too generic, please can you give informations on what kind of embedded you are working on?
[quote author="Scylla" date="1300453813"]This is a good idea. The biggest problem, which I had, was to create touch and keybord driver for special (embedded) hardware. I'm interressting to get "opengl es" running on my hardware (new driver) and a easy to use virtual keyboard.[/quote]
I do not have any experience in writing touch/keyboard drivers for custom hardware. Luckily we were able to use tslib out of the box and then I wrote a simple virtual keyboard. The virtual keyboard is QWidget based but is reasonably useful. I have been meaning to port it to QGraphicsView or QML but have not gotten around to it yet.
What I was asking (just to focus the problem) was what kind of cross compiling platform Scylla is using, like openwrt or ltib or what ?
We are using the ptxdist from pengutronix to create the root image. We have two different platforms x86 and arm-gnueabi. The problem is that we have a custom keybord around the device display, which has a strange key layout. The other problem is that we use a touchscreen controller which is not usable with tslib (already testet). For this I wrote a driver which is working very well. But it's hard when you have no protocol and you have to debug the protocol. Now on my todo list ist the keybord driver. My intention for my request was to have a documentation for the steps which are needed to create a specific driver. The documenation for the embedded devices is not so good, like for the desktop. I have started with a template from Qt but I don't now anymore where I have found this tempalte. But this was a big help. And such templates and doc's for this should be on the wiki.
I hope you will understand my thoughts ;)
I understood. I had the same problem to manage a driver that won't work. As a matter of fact I have no idea about a specific keyboard driver, but I can find the code I set for that driver, it can be useful as an example for you, then we can discuss with something more concrete.
I have not yet approached the interaction between gnu-eabi linux embedded and Qt for linux embedded (I will do it next week), so is possible that my thought is silly: when I worked on this driver, I done this for the linux kernel, not for high level interface, is it true?
I post here soon the mentioned example. FYI I developed this for and embedded linux board with Openwrt toolchain, while now I am starting with the ltib toolchain for simplicity with the board I need to work on.
As a note. The last year I spend all the time on the x86 platform. This week I have started with the arm platform. It tooks about 2 hours to get Qt running on our target. Most of time tooks the compiling, of course ;) One problem which we faced was a missing feature in the linux kernel (SYSVIPC [=y])! Such information should be on this wiki. I'm sure WE are on the may. I think the embedded platform is very important, that's why I'm here!
I agree with you about the importance of the embedded platforms.
I hope I can create a specific gorup. And thanks to ZapB that got me the right advices on the platform choices.
I'm interressted on the openwrt and the ltib toolchain! I know ptxdist very well but I'm always looking for alternatives! So how easy is the setup of the toolchain and a openwrt project?
Me too, I am interested to ptxdist, that I don't know.
I just asked this evening to open a group Qt embedded to host and exchange these knowledge and experiences. I hope that they accept.
Well, Open Wrt is a good place to develop embedded linux, because there are some guys in the mailing list that give a good support. It is essentially a system developed to manage routers. Thus, it has good support for the network almost in all the ways. But Open Wrt is also used for a small eepc open hardware, so there are also at least decent graphic interfaces for some display and peripherals like touch screen, keyboard etc. The understanding of the internal system is not immediate, and the problem is that there is no great documentation for those that use this for the first time but the principle is not so difficult to understand. The toolchain can be configured with good command line tools based on make configurations.
The alternative is ltib. Initially when I decided what toolchain system to use I preferred Open Wrt because it was a totally custom platform so a lot of driver needed to be rebuilt or redone. In the new project, where I want to setup Qt for embedded as the graphic environment I will use ltib. This is essentially related to the hardware platform that need to be used: LPC 3250 on a board similar to the EA3250 (from Embedded Artists). Ltib is a toolchain sponsored by NXP that produces LPC3250. For more informations about the toolchains that can be used there is a discrete support on the site lpclinux.com almost totally dedicated to the platforms that adopt NXP Arm processors.
As all the toolchains, ltib has advantages and disadvantages. A thing that I found not so good when developing but that can be simply bypassed is that the toolchain components are installed in the host system libraries (mostly in subdirectories of /opt) This choice generates some critical situations that need to be known before to start.
I hope that this very short introduction can be useful for you. Can be a good idea a more detailed article to introduce these toolchains approach on the wiki pages of developers.nokia ?
To complete the previous post, here is the link for ltib on lpc3250:
As yo can see, there is also another alternative, that is ELDK toolchain. I have not yet tested but I do it before a final decision on the platform to use.
This are interesting informations. I will/have to take a look to this.
We are using ptxdist, because we are using the support from "Pengutronix":http://www.pengutronix.de/index_de.html for special kernel driver. Our system is an realtime system (plc) with realtime bussystems like ethercat/canopen, realtime jitter<1us. The board is developed by ourselfs, so no standard hardware. I'm working on the visualization system, of course ;) and on the base system.
The toolchain is just a ptxdist project, so it's easy to create the toolchains. The configuration will create with a config menu like the kernel config. This tool is good as long as all needed packages are included. If a specific package/application is not awailable you have to create you own package. The ptxdist is based on a rules system.
I'am also have tested the Android platform. At first with compiling the lib by myself and it's working. Today I have tested the necessita/ministro version and this is create work.
As my boss have seen my Qt application running on my HTC Desire connected to our visualization, he got crazy, took the phone and called his boss ;)
This is a good news!
Myself is the boss of myself, and in these project I'm responsible of the software platform at all while my friend / project partner done the hardware project based on my idea, based (2nd level) to the ea3250. The starting point is that the board I am working to develop is those of embedded artists, but it is too expansive against a low cost software and hardware integration platform. I have several product projects to develop on the new board as I am ready with the linux + graphic environment.
So, I need to be sure - reasonable sure - that the choice can be a long term choice. I took a look to your Pengutronix development platform and as I read it seems interesting because very open. As this toolchain has the problems you mentioned, ltib has other problems. If you plan to start with tests on this, please tell me, so I can save at least the time I already spent for silly problems. But blocking. As you know, I imagine, all problems on embedded platforms are silly when you discover why the occurs.
Well, the last thing I have not yet done is to test the ltib alternative as discussed in lpclinux.com.
At the actual date (to be precise in this moment) I have finished to flash the last build with Xephyr X11 server and twm as window manager. The board has a 320x240 fb screen with touch. I see the penguin when the platform start but - this is the actual problem - I am searching on how to configure some file that probably is missing because when I launch startx or xterm or twm or Xephyr I obtain always the message that the display :0 can't be opened.
I think that it can be a hardware problem because /dev/fb0 is present in the device list.
I am thinking to something collaborative with you if you are interested, later I write about, let me the time to think exactly on how this can be structured. If you like, obviously :)
I think the framebuffer has nothing to do with the x-server! Can you start the "X -verbose" manual without startx? Or show the X.log file.
bq. If you plan to start with tests on this, please tell me, so I can save at least the time I already spent for silly problems. But blocking. As you know, I imagine, all problems on embedded platforms are silly when you discover why the occurs.
That sounds good. Next week I'm on holiday but when I'm back I will start to try.
bq. I took a look to your Pengutronix development platform and as I read it seems interesting because very open.
Yes that was important for us. In our first linux device we had used the timesys from timetorm. This tool is based on eclipse and very expensiv. And worst was that after the license is expired you can not use the tool anymore. You can not do anything in the old project :-(
I have no X command. Probably I was not clear, because this is the first time I use on an embedded platform a screen display. I compiled the kernel & UImage with the Fb display driver. This is surely correct because I checked with the hardware developer. Then I setup the configuration with X11 that is a tiny x server and twm as window viewer. Thus, what I have in the filesystem as commands startx that is the script the launch Kfbdev (the x-server if I have understood) trying with screen :0 (defined in DISPLAY as an environment variable)
Then the next command is twm -display:0
I always obtain the same message : unable to open display ":0"
Following my investigations, the thing that I don't know is where I can search for the configuration file similar to the definitions I find with the common X11 environment in non-embedded linux.
This is my need only to have a complete check of the platform (hardware + software) and next step is to start with Qt
As long as I have used and seen x11, there was always an x-server, x-client and an window manager like twm. Kfbdev I don't know. Maybe I have to take a look at this. But why you don't use the qws? This is what I'm using on our device. Anyway, try to set the "DISPLAY=127.0.0.1:0.0", somtimes "DISPLAY=:0" is not enough.
Do you mean TinyX. Have you seen "this":http://www.xfree86.org/current/TinyX.1.html page?
Alicemirror: if you have a working framebuffer device then you can skip X entirely by using Qt Embedded as this draws directly to the framebuffer and provides its own window manager (QWS).
Check that your user has sufficient permissions to open the /dev/fb0 device too.
@Scylla: Yes I have seen TynyX. The X server I use is part of his family, not exactly this but the principle is the same.
Thus I tried too your suggestion exporting DISPLAY including the IP address. Before I have already tried before the lan ip address of the board and the result is the same. What I think is that maybe a stupid think I don't know or forget, because these settings in ltib are almost standard. You suggest another windows manager; I am using twm just because this is the window manage recognized by ltib for this kind of platform. To be honest, I have no idea at this moment what can be the missing component or file that create this strange behavior. I am trying to investigate on configuration file missing (is it possible?)
@ZapB: As I wrote above, I agree totally with you: my final target is what you suggest. This X test is only a parallel check. Initially I thought that the simple way was to check the "official" ltib LPC3250 X server mode then create the version with Qt embedded. At the actual date, seeing the problem I am experiencing, including the very small support (near to zero) probably the best choice is to abandon the X version focusing my attention (thanks to the your support and of the other forum members) to Qt embedded saving time and obtaining best results. Do you agree ?
P.S. I am working with the board connecting via ssh as root (tried also as user + sudo too). As embedded platform I don't set special users permission list but simply for now I am using an ssh access (with password) and the root user is doing all the job.
It's certainly worth giving Qt for Embedded Linux a try. Just build it and copy across the libs and some examples to see if it works for you.
I'll try to write some of the other articles in the Qt Embedded series in the next few days but I may be offline for sometime this week.
ZapB, it's not only worh, it's my definitive choice. And as project reference, I'm the only that decide what to do. So, the actual balance tell me that this is the right choice. I hope to have some good news next week when you are online again :)
Thank you very much for the hints, I appreciate a lot.
Try the framebuffer test program (examples/qws/framebuffer). If this works, don't waste your time with x11. This was exactly my first test on our arm system.
Same here. Followed by some of the examples since from memory the framebuffer test app does not require the qws stuff which in turn requires the fonts ot be found which was another "gotcha" I fell for. ;-)
And if your framebuffer device is not /dev/fb0 just set the right device as option for the framebuffer test program.
Hi :) Sorry for the delay in my answer. Today is a hard day of setup and computer organization...
WELL ! Convincted!
I proceed with Qt4embedded. News later.
That was a good choice ;)
I am sure. But the real good choice I think is to abandon X server ... Now I should download Qt for embedded then check if it is best to develop under that (new for me) toolchain that you are always using - Scylla - or ltib.
@Scilla: if you have some time for me I'll like to discuss advantages and problems to choice your toolchain or ltib (or OpenWrt). Next days I can write some specific pages on these on the wiki as a compendium to what is writing ZapB
Good luck! It can be frustrating at first as you feel your way but it's worth it in the end. I look forward to reading your write up.
Ok, no problem but today it's birthday of my wife, so no time today. Let's try tomorrow. If you want I can provide my toolchain.
Happy birthday to your wife!!! She is pisces sign?
It's good, if you email me I can provide you a decent ftp (home nas for personal use) access to share what can't be fit in a hosted projects.forum.nokia.com while for the other stuff I create a nokia project. You can be of the team developer crew :)
So, now I'm back.
bq. She is pisces sign?
Yes, indeed she is!
bq. It’s good, if you email me I can provide you a decent ftp (home nas for personal use) access to share what can’t be fit in a hosted projects.forum.nokia.com while for the other stuff I create a nokia project. You can be of the team developer crew :)
Ok, this can we do. Which toolchain do you need, x86 or arm? I've got both, with integreated Qt. That means, you can use that toolchain direct without anything else. The x86 version is build with Qt 4.7.0, will be updated propably soon. The arm version is build with Qt 4.7.2, so it's brand new.
And on monday I'm back at work. So let me know, if you are interested in!