Hello all, this is going to be a long post.
First, thanks to Andy and Doug who helped me get this far, I couldn't do it
without you.
Let's resume:
I have a TS-TPC-7390. OABI/Xorg was slow. I followed Andy guide in the first
post of the "How to make an EABI cross compiler for ts boards, step by step"
thread and used the crosstool script he posted. That allowed me to have a
maverickcrunch patched crosscompiler with latest versions of gcc and libc.
With this tool, I started compiling libs to create a full rootfs. This is the
list of libs I re-compiled (not necessarily in order), with notes about
problems I encountered and solutions:
-glib (cannot run test program while crosscompiling, used config.cache file
(see other thread)).
-glibmm
-libsigc++
-libxml2
-libtiff
-libjpeg
-libgif
-libpng (setjmp.h re-inclusion, added #warning)
-jasperlib (--enabled-shared)
-atk
-freetype2 (added LCD-rendering optimization (see LFS))
-fontconfig
-pixman (force disable arm-simd and arm-neon optimizations)
-tslib (no pressure sensors patch, plugin module patch)
-directfb (gfx-drivers=none, inputdriver=keyboard,tslib)
-cairo (dfb backend)
-cairomm
-gtk+ (dfb backend, cannot run test program while crosscompiling: modified
configure to skip, also updated my build machine glib-mkenums)
-gtkmm
-pango
-pangomm
-libglade
-libglademm
-my application
And I think that's all. I then took the TS-provided kernel, initrd and
debian-armel-eabi rootfs and put everything on a SDcard. I then copied my
sys-root folder over the TS-rootfs overwriting files. To my surprise, it booted
and things I compiled works! I had a few things to do, like configure pango
font files, tslib env var, activate pts for telnet, and I think I have a serial
port problem, but in general it went quite fine.
Results:
It's hard to tell. Boot time of application seems reduced by half!
Unfortunately, application responsiveness (click on button, refresh window,
etc) is about the same as before.
I have to tell, before I started this, I tried recompiling all these libs for
OABI (directly on device, took a week). Result with DFB was the same speed as
with Xorg, but using those rebuilt up-to-date libs with Xorg slowed things down
by half compared to Xorg with the libs from apt-get. So there might be
something awful somewhere in there.
I also noticed that using pango markup language with DirectFB is a MASSIVE
bottleneck. Refreshing a single label (a clock) every second with Xorg-OABI
takes 10% cpu, with DFB-EABI it takes 50%!.
That, combined with the fact that DFB refresh differently that Xorg, and that
TSLIB don't seems to always send on_release events makes me want to try Xorg on
EABI, which would probably react better.
Questions:
-Anyone have experience in cross-building Xorg, and know what to do differently
on our device (for drivers and config files)?!
-I set CFLAGS to add mcpu/mfpu/mfloat-abi flags to compile the libs.
Unfortunately, those who used g++ instead of gcc (ie. glibmm gtkmm, etc) didn't
seem to add it to the build command. Maybe I should have added them to CPPFLAGS
too? Do you think it would change things a lot?
-Building my application I encountered a "Error: register expected" error. The
bugged register is mv8. I searched google and found this thread:
"http://www.gossamer-threads.com/lists/gentoo/embedded/178129" in which
MartinGuy talks about it, but no real answer. The patch mentioned there isn't
in the Andy package. Would rebuilding our crosstool with it fix the problem?
Would libs I compiled stay compatible? For now, I simply disabled the
mcpu/mfpu/mfloat-abi flags for my application and it compiled fine.
-Would rebuilding the kernel with that crosstool gives anything?
I will gladly upload my cross-tool folders with instructions on how to use it
here. But first, I want to be sure that everything is ok because for now it's
not a mind-blowing improvement. Principally ditch DFB and use Xorg. This post
is just about giving ETA of my situation if others have something to say.
------------------------------------
Yahoo! Groups Links
<*> To visit your group on the web, go to:
http://groups.yahoo.com/group/ts-7000/
<*> Your email settings:
Individual Email | Traditional
<*> To change settings online go to:
http://groups.yahoo.com/group/ts-7000/join
(Yahoo! ID required)
<*> To change settings via email:
<*> To unsubscribe from this group, send an email to:
<*> Your use of Yahoo! Groups is subject to:
http://docs.yahoo.com/info/terms/
|