Half year ago at UDS-O in Budapest Michael Opdenacker interviewed some people from Linaro. I remember that at the end of event Kiko asked him did he talked with me cause he thought that it could be interesting for someone.
Then we had another Linaro Connect (in Cambourne) and nothing happened. But in previous week I got an email that there will be interview with me in Orlando and that I should choose time slot for it. So I did and here is the result:
What we were talking about? Check it yourself. And please comment did you enjoyed.
In February 2007 I started officially working on Poky Linux. It was due to my contracting work for OpenedHand company. In August 2008 Intel acquired them so I ended direct development of Poky in October 2008.
But that does not mean that I ended supporting this build system. I started contract work for BugLabs company and they are using Poky ‘pinky’ release. During that time I fixed some bugs (mostly by backporting fixes from Poky ‘master’ or OpenEmbedded) but most of time did not touched main development branch.
Until now — I have customer which uses main branch for own development. So looks like I will provide some new code for development branch during next weeks.
As I already wrote I will attend Embedded Linux Conference Europe in Grenoble, France. But before it there will be ST-Ericsson Community Workshop 2009 — an event limited to only 25 seats. There is 200EUR registration fee but each participant gets NHK-15 development board which is worth about 1000EUR so it can be worth to be there.
During day there will be presentations and workshops about ST-Ericsson Nomadik SoC platform (ARM926 core based). I will talk about building Poky Linux for NHK-15 and using resulting images.
I played with few Nomadik based development boards in past and think that it is good move from ST-Ericsson to make support for their platform available in mainline versions of Linux kernel, U-Boot and userspace applications.
During my recent OpenEmbedded related work I merged gcc patchset from Martin Guy to add support for Maverick Crunch FP unit present in Cirrus Logic EP93xx ARM cpus. This makes floating point operations faster then it was before.
But does using it has a sense for whole system? Is it possible at all? The answers are No and Yes. I have root filesystem for EDB9301 created with Maverick optimisations but I also have plain armv4t one for same board. They both work but I do not recommend using Crunch optimized one — there are strange errors. For example “HZ=5.33381e-315” is given instead of “HZ=100” in
openssl speed test (problem is somewhere in glibc).
Let me quote Martin’s mail:
My current recommendation is to enable crunch only in the floating point intensive libraries and applications that your application system uses, because having more than one crunch-enabled process running in the system makes the context switches slower because the kernel has to save and restore 19 64-bit registers at every context switch. It doesn’t bother doing this if only one process is using the FPU thanks to some clever Buytenhek laziness). I don’t have figures for how much of a difference this makes, but I guess one could calculate it from the context switching rate shown in the output of “vmstat 5” and the instruction times.
I switched “ep93xx” machine in OE back to armv4t optimisations. Also I am working on adding some more EP93xx related patches from Hasjim Williams (he made first set of patches for OpenEmbedded and Martin Guy improved them and moved to newer GCC).
One note for end of story — I am not interested in doing more ep93xx toolchain work. If your device/company need such help then contact Martin Guy for consulting offer.
Now when Neo1973 phones are in hands of external developers we have more and more people using the OpenEmbedded build system. Many of them wants to add something to resulting image. And that is where problem begins…
Most of them abuse DISTRO_EXTRA_RDEPENDS variable which should be used only in a distribution configuration file. Some of them also use MACHINE_EXTRA_RDEPENDS which should be used only in a machine configuration file. And all of them are surprised when I told them that their way is wrong. Most common reaction was:
So how can I add ‘mc’ into image? (“mc” is an example).
The solution is simple — if you want to have image with own contents then you need to write a recipe for it. Take the one which you want to extend as a base, add few entries into RDEPENDS/PACKAGE_INSTALL and that will be all. And if you want to have something extra you just have to edit own image and add it. With abused vars you have to remember about rebuilding
Why such way instead of abusing listed variables? Because in other way we will get bug reports like “I tried to flash angstrom-x11-image and it did not fit in flash.” when we know that it fit on that device. Why it did not fit for user? Because he injected megabytes of applications into it. So how we react to such report? WONTFIX/INVALID comes to my mind.
More about it can be find in Poky manual.
Today OpenedHand team (which I am proud to be a part of) released Poky Linux 3.0 ‘blinky’. I was working on it during last months. If you have free time then I suggest going to website and try it.
What interesting in this version? For me it is whole set of Matchbox components in new versions:
- mb-desktop2 with much more usable navigation then it was in mb-d1
- new panel which allow to remove window borders from screen (important on small resolutions)
- menus integrated with panel (it reminds me PalmOS time)
And there is new look&feel named “Sato” and whole set of PIM applications named “Pimlico” (which is also used on OpenMoko powered phones).
Time to really prepare for GUADEC trip. Tomorrow we are going to another wedding in family (3rd in this year) and during Monday I will travel to Birmingham to meet OpenedHand team (without Dodji ;( — visa laws are strange), OpenEmbedded guys, maybe someone from OpenMoko (Mickeyl does not count) and many other people working on misc projects.
Travel times noted (trains, flights, buses), maps from train station to hotel printed, some GBP bought — so now it only left to pack. I even bought backpack for laptop so will be able to test how does my D400 behave (especially it’s battery as it does not give too much time). Good that I have that huge plug which is used in England already — one thing less to care about.
And I hope that I will have more luck then people which were on Akademy and my luggage will follow me 😉
From time to time there is situation when you need to use kernel sent to you by vendor which you support (or use device which they made). The problem is that often all you can get is one big tarball with “our current code” which means Linux upstream + extra patch(es). How to get something usable from it?
First step is checking version of vendor kernel (if unknown). If you are lucky then main
Makefile contain informations such as “2.6.19-rc3” which is a sign what to get as clean base.
Then clean sources — simple
make mrproper will remove all results of compilation so
diff will have less work to do.
Third phase is taking first diff:
diff -Naurpw linux-original/ linux-vendor/ >vendor.diff
Result will be probably very big but often can be made slower by looking inside of it. Check for backup files, extra log files etc crap — here I usually use Midnight Commander due to it’s “patchfs” which allow to go inside of patch and work on “per-file” changes.
Next step can contain searching for popular kernel patchsets which can be in vendor kernel. This is hardest part as there are many of them and often only parts of them are applied.
Same rules apply to other code from vendors — toolchains, libraries and other forks.
Koen’s post about AVR32 Network Gateway and few posts on usenet reminded me that many people still think that small devices are crap and lack power to do anything.
Do they? I think that not. Here I use two small embedded devices:
- Linksys NSLU2 as NFS server (plans are to add TFTP, Samba, CUPS and Bluetooth AP)
- Linksys WRT54GS as router/firewall
Both do their work without any problems, both runs Linux and opensource distributions (OpenSlug and OpenWRT).
Soon will add something based on one of AT91 devboards but more to experiment with software then normal usage. And as I have 20 pin header soldered to OpenMoko debug board it can even be bricked (JTAG port was already tested with other device then Neo1973).
Great thing is that systems like AT91SAM9263EK, Gateway or STK1000 (another AVR32 devboard from Atmel) can be used to produce many different devices — I remember talk with one guy who shown his developer board (about A4 size) and final device (small rugged mobile device with barcode scanner) and told that this devboard was used to create about 10 misc models.
My friend made a project of own device based on AT91 ARM cpu with few peripherials. Total cost was less then 100 EUR and it can be used to different tasks and also give possibility to learn how to write kernel code (to handle all addons).
As Cliff Brake wrote: you cannot afford to not use Linux in your own projects. There are too many drivers and ready to use code to not make use of them. You can even get nice modules for less then 100 dollars (ARM, AVR32, x86 based) if you do not want to design own one. Then next step is OpenEmbedded and you have problem which software to choose as there is too much to choose 🙂
I just got my GTA01B_v4 from UPS courier. This is send as “developer update” as package contains:
- GTA01B_v4 phone
- battery (charged)
- Europlug -> US plug adapter (no idea what for)
After powering phone I started ‘DM2’ application which allow to make few simple tests of hardware. And let Mickeyl and Sean stop talking that Neo1973 has nothing common with “The Matrix” movie — the sound sample used to test audio subsystem is Morpheus telling Neo that he is “The One”.
What do I plan to do when I have two phones? First I will upgrade Bv4 to newer software. Then I have to decide which one will run OpenMoko and which Ångström — so I will be able to compare (now both has OpenMoko distribution installed). And I wonder will Bv4 recognize my SimPlus prepaid card (it is normal 250 entries sim) — Bv3 do not like it.
This time I had to pay customs and UPS — 109 PLN (~30 EUR) in total. And as this time it was sent to me as person not as company I can not add this into company costs. But it does not really matter — I have phone and this is more important 🙂