OpenExpo 2009 Winterthur

24.09.2009 at 10:18

Although the feedback from the openmoko-community was well non-existent I nevertheless decided to make a trip to Winterthur and attend the OpenExpo Social Event. To raise awareness and do some advertisement I was wearing my OpenMoko T-shirt. Unfortunately the reactions I got were rather negative the most common question I had to answer was probably "Is it dead yet?" or "when will it die?". My answer was of course that it's alive and doing well. That SHR is getting usable as a daily phone. That #gta02-core makes good progress and breaks now ground in the territory of Open Hardware Design.

To my surprise I actually also met 2 active community members. Sebastian Spaeth (spaetz) from the SHR Team and Ben Hagen who was responsible for the OpenMoko booth at previous OpenExpo's.

Besides these OpenMoko related contacts I also had some good conversations with Adriaan de Groot a FSFE employee and KDE hacker. He ported KDE to OpenSolaris so we talked about OpenSolaris, software patents and the relationship between the FSF and the FSFE.

On the downside it didn't seem like there were a lot of people who support the suckless philosophy. The OpenBSD folks are probably the closest ones to share the same kind of spirit. Unfortunately I didn't manage to talk to them at their booth (I should have asked how the pcc development is going on) and couldn't find them later at the social event.

I was rather sceptical of the event but the few interesting discussion made it a worthwhile stay.


read more comments

On the way towards a minimal elementary based boot system

23.09.2009 at 00:48

Now that I have a working toolchain I also built a full system image for qemu which contains a native toolchain. This avoids the broken by design approach of cross compiling (configure and friends analyse the host system and then based on these wrong assumption draw conclusions about the target system) by using emulation. Of course this also has a price: slower build times.

FWL has a neat trick though which at least in theory should speed up compilation: it uses distcc to call out to the host system (over the virtual network of qemu) where the distccd instance compiles the passed source code with the cross compiler. This means that the CPU intensive compiling process bypasses emulation but the environment dependent steps (./configure etc) are still run within a target environment and therefore can't leak in bits from the host system.

You might wonder why I said "in theory" above. Well in practice this works best for large compilation units where the overhead of the emulated network and hard disk (I/O) has a smaller influence. And there are also cases where distcc fails to compile something and then falls back to the native compiler (which runs under emulation) if that happens the time spent for distcc is of course wasted. The solution here seems to be throw more/faster hardware at the problem. Unfortunately that's hardware I currently don't have. Oh well.

Building a framebuffer based elementary with minimal dependencies

One idea for the boot menu application is to use elementary with the framebuffer backend as a GUI toolkit. This would provide an nice looking touchscreen aware user interface. However I am not really familiar with the whole EFL software stack and therefore don't know how small/big all required dependencies would be. Some research lead to the following "dependency graph" for elementary:

So it seems like this is getting quite complex/large. Maybe link everything static and let the compiler do some magic to eliminate all the unnecessary code paths? Anyway we will see. Spent a few hours configuring every package and disabling lot's and lot's of compile time options. During this process I also found some problems in ecore's touchscreen detection code and submitted the changes back to the enlightenment folks.

Hope this will eventually work in one way or another.


read more comments

Creating an uclibc armv4tl-softfloat-eabi toolchain

18.09.2009 at 11:07

Spent the last couple of days trying to build an uclibc toolchain for the Freerunner. This turned out to be quite a pain in the ass!

The easiest way would probably have been to just use the OpenWRT build system but I think for my specialized needs this is a bit overkill. After all my current goal is to build a small userspace based boot menu and not a full blown distribution. Therefore I wanted to get Firmware Linux a set of relatively small, simple and therefore understandable shell scripts which among other things generate a relocatable cross compiler.

Unfortunately FWL doesn't provide an armv4tl-softfloat-eabi configuration out of the box and my first attempts all resulted in an "Illegal instruction" error. The compiler for some reason generated code which doesn't actually run on the hardware it should.

After a lot of head scratching and quite some frustration I finally found a solution. The problem seems to be that ARM EABI is only supported by armv4t+ (read: armv4 with thumb instruction support or anything newer like armv{5,6,..} etc). But gcc actually defaults to an armv5 instruction set when using EABI this obviously doesn't work on armv4t although the hardware is EABI capable.

A patch to gcc which is also used by the OpenWRT folks that changes the default cpu type solved the problem. I now have a working cross compiler. Yeah!


read more comments

Kernel diet -- filtering printk messages based on a verbosity level

09.09.2009 at 12:36

As part of my upcoming boot menu/distro for Openmoko's Freerunner I searched for relatively simple and generic applicable ways to reduce the Linux Kernel binary size. An obvious candidate for size reduction are the possibly unnecessary kernel printk messages.

I therefore wrote a little patch series which introduces a new configuration option (CONFIG_PRINTK_VERBOSITY) to selectively compile out printk message strings based on a verbosity level. The implementation works by wrapping printk with a macro which evaluates to a constant if condition which the compiler will be able to optimize out.

Thanks to the feedback from the linux-embedded folks the second version of the patch series works as a drop in replacement for the regular printk and no longer changes existing kernel code.

However unfortunately there is a problem with continued kernel messages. They don't contain the loglevel which means it's impossible to filter them correctly based on a verbosity setting without the information from the first printk which started the message. For a solution we would need a way to pass the loglevel from the first printk which started the message to all following ones until a message is terminated by a new line. This could be achieved by a local variable, however such a variable would have to be available in every kernel function which calls printk and there is no way (I know of) which which would garantee that.

Anyway it was great fun to play around with the CPP. I will think about a solution for the continued message problem although I am rather sceptical whether a CPP based solution is possible at all. I may or may not submit the patch series to LKML after the 2.6.31 release is out.


read more comments

New dvtm and dwm-win32 releases - future openmoko related activities

10.07.2009 at 12:15

Long time no blog post, sorry about that but I was again rather busy. Quite a lot actually happened in the meantime. I passed my BMS exams and will now try to successfully take the Passerelle which would allow me to study at an university. Because of this I left my current employer and will focus on school. Most of the preparation for this supplementary exam is actually done in a self-studying manner which means it requires quite a bit of discipline. Well we will see how this works in practice. A possible advantage of this type of learning is that I will be much more flexible in my time planing. I therefore hope that will find a bit more time to spend on my opensource related activities.


dvtm is actually in quite good shape and mostly in maintainance mode. The latest release dates from last week.


dwm-win32 a port of the X window manager dwm to MS Windows which I wrote about in my last blog post. It's basically in a proof of concept stage and I currently don't plan to further develop it. Checkout the project page for further information.


I hope that I can finally start to contribute in one way or another to the openmoko project.

As a first step I would like to implement a minimal bootmenu which is based on a small linux system. It's basically a stripped down kernel with an initramfs which contains a minimal C library like uClibc. The goal is to make this boot as fast as possible and then start a regular user space application which reads all available partitions of the SD card, searches for kernels and finally presents a nice looking boot list. The selected kernel will then be started via kexec.

That's the plan anyway, we will see if and how usable this actually works in practice.

That's all for now. Hope the next blog post won't take another 4 months to get written.


read more comments

<< 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 >>