Lot was written about why upstreaming matters. And why it should be done earlier than later too. And I found out that I have perfect example.
Few days ago Linus Walleij contacted me with a question:
Hi Marcin, do you still have the Nomadik NHK8815 board? I’m contemplating fixing it to work some time, but haven’t got hold of one. I think it only needs a device tree actually, so we could hack it up at some conference if you’re at the same some time.
And then I realized that indeed — I still have it somewhere in my basement gathering dust. We quickly agreed on shipping it so Linus will be able to finish work on adding support for already obsolete board in mainline kernel.
For me NHK-15 is a perfect example of device which was supported in wrong way. When I got it 5 years ago it was already several kernel releases behind with 220.127.116.11 kernel (no stable updates even). I managed to get Poky Linux running on it but told clearly that it will gather dust after finishing task because for me board with no upstream support is worthless.
So board spent few weeks on my desk and then went back to the box and on shelf in basement. Then became forgotten. For 5 years. Today I opened box, checked contents, added some filling so it is ready for courier. Then I will forget about it again.
UPDATE: My Sim.One board joined NHK-15 as it is hard to find working device with EP93xx processor in it.
When I published my last post about ARM boards there were many questions and suggestions with interesting devices. Thank You all for it.
But there were also suggestions about ARM9 or ARM11 based devices. So I decided that it is good time to write what interest me now in ARM world.
But first some inventory. I had/used/have several devices with ARM cpu:
StrongARM (armv4) one:
- Sharp Zaurus SL-5500 (which took me to ARM world)
ARM920 (armv4t) ones:
- Openmoko GTA01 bv3, bv4 (s3c2410)
- EDB9301 (EP9301 cpu)
- Sim-One (EP9307)
ARM926 (armv5te) ones:
- Sharp Zaurus sl-5600 (pxa250)
- Sharp Zaurus c760/sl-6000 (pxa255)
- Sharp Zaurus sl-c3000 (pxa272)
- Sheevaplug (kirkwood)
- Atmel devboards (at91sam9263, at91sam9m10)
- ST-Microelectronics/ST-Ericsson NDK-15, NHK-15 (st88n15)
- Nokia 770 (omap1710)
- Linksys NSLU2 (ixp425 iirc)
ARM1136 (armv6) ones:
- Nokia N810 (omap2430)
- Bug r1.0, r1.2 (i.mx31)
Cortex-A8 (armv7a) ones:
- Beagleboard B7, B7, C3 (omap3430)
- Nokia N900 (omap3430)
- Nexus S (exynos3)
- Genesi Efika MX Smartbook (i.mx51)
- Freescale Quickstart (i.mx53)
Cortex-A9 (armv7a) ones:
- Pandaboard EA1, A1 (omap4430)
- Archos G9 80 (omap4430)
All of that during last 8 years. Most of my ARM live so far was around ARM926 based devices (some of them still can not be listed here) and I do not want to go there again. Kirkwood core was fastest one with 1.2GHz clock and 512MB of RAM it was really fast machine. I only missed Serial ATA in my Sheevaplug (rev 1.0) but even with hard drive on USB it was nice improvement.
Then I played a bit with ARM11 processors. Ok, they were faster than most of ARM9 cpus but I already had experience with Sheevaplug. And after few months first Cortex-a8 board landed on my desk — I got Beagleboard B7 from Bug labs as test platform for their new device. This was improvement!
I still remember my reaction when connected it to normal LCD monitor and saw it used at 720p resolution (1680×1050 was a bit hard for omap3). Moved to Nokia N900 few months later and found that fast cpu means nothing when paired with slow storage and not enough memory for system.
So today I prefer to not look below Cortex-A9 (or comparable cores like ones from Qualcomm or Marvell). Hope to play one day with Cortex-A5 (which should replace ARM926 one day) just to see how low-end armv7a cpu behave.
And wait for ARMv8 to hit market.
During FOSDEM 2010 I had discussion with Ulf Samuelsson from Atmel and few other guys about developer boards. What is required on them and what should be avoided. Some time later I had a talk with one person about new OMAP3 based board and what I would like to see on it. So I decided to write something in public.
So far I used mostly ARM developer boards from ST Microelectronics/ST Ericsson, Atmel, Cirrus Logic, Intel, Simple machines, Bug Labs, Texas Instruments. Some were better then others etc. But what ideal developer board should have? Let me try to create a list:
- 2 serial ports (one can be null modem, second should have RTS/CTS/DTR lines)
- working Ethernet not placed on USB bus (so it works when USB does not)
- powered USB host port (more then one would be great)
- USB device port
- JTAG connector
- one power input — +5V or +12V — other should be forbidden as those ones can be taken from PC PSU which can power multiple devices at same time
- SD/MMC slot — even if it is over slow SPI (like on Sim.One — 250KB/s max)
- GPIO pins
- I²C bus
- SPI bus
- keypad with Up/Down/Left/Right + Enter at least
- easily reachable reset button (pins to short are acceptable as micro switch can be put on them)
- few LEDs controlled by system
- all connectors put on one or two edges of board — top one + one of side ones are ok (Atmel at91sam9m10-ekes for example)
- mounting holes (so board can be mounted on A5 sheet holder for presentation at stand)
- backup battery for RTC
- quite fresh kernel (not NHK-15 due to 2.6.20 kernel which is 3 years old now)
What to avoid:
- female serial port connectors (Atmel NGW100) — most devs will find 3 null modem cables before straight one
- flat cables which connect “debug boards” with main board (Openmoko phones, NHK-15 from ST Ericsson)
- RJ45 connectors for serial console (Sim.One) — DB9 or properly done USB->RS232 adapter on-board are best
- placing connectors on all edges (BeagleBoard — but it had to be cheap)
- non standard bootloaders (U-Boot is what I prefer)
- Ethernet on USB (Bug 2.0) — it is hard to use when you have problems with USB Host
- jumpers (Atmel boards)
- non standard connectors (Bug r1.2 and it’s Handylink crap — next versions use iPod connector which is easier to use)
I am trying to not cover should developer board contain display with touchscreen or not as it depends on type of board. But if screen is present then more then QVGA (320×240) would be nice (WVGA anyone?). Some kind of video out connector can also be used but would be nice to have one of VGA/DVI/HDMI so normal PC monitor can be used — Composite video and S-Video require searching for some kind of TV…
Which boards are my favorites? There are few:
- FriendlyARM with WVGA screen — cheap product which gives access to everything needed to start with embedded Linux
- Atmel AT91SAM9263-EK — my first own developer board
- BeagleBoard Cx — has own problems but I like the power of it
Some time passed since ELC-E took place. I did not wrote about it before because I was busy with other things and wanted to wait for presentations to be available.
The whole event took place in Grenoble, France on 15-16 October. I was there as a guest of ST-Ericsson company and had one talk there.
There were just 3 tracks so it was much easier to choose which talks to attend. I was on:
- Jon Masters “Porting Linux” — interesting and it was nice to see the person which do LKML summary podcast
- Grégory Clement “How We Got a 3D Application Booting in 5 Seconds Under Linux” — author told about few tricks they tried in a bit boring way
- Sascha Hauer, Marc Kleine-Budde “U-Boot-v2” — project looks nice and I hope that my devices will migrate to this one day
- Cedric Hombourger “Why OpenEmbedded Proved a Good Foundation for MontaVista” — lot of people attended, interesting talk it was. Nice part was when Cedric told that they checked all of currently available free build systems and chosen our one.
- Samuel Ortiz “Linux Wifi Solutions for Mobile Platforms” — lot of technical informations but now I know more about Linux WLAN stack that I did
- Matt Porter “Mythbusters: Android” — nice talk about this system and which parts of it needs lot of work to be usable on other devices then just phones. I was also interested in it as I had Android on Nokia N810 during ELC-E but finally decided to go back to Maemo.
- Alessandro Rubini “Use of the Fast IRQ (FIQ) in ARM-Linux” — again lot of technical informations but I really like how Alessandro do his talks.
- Alex de Vries “Technical Features and Components of Open Source Build Systems” — nice summary of what open embedded distributions lacks and what needs to be done. Was fun to listen how Alex tries to not say “open embedded distributions” too often ;)
- Pierre Pronchery “Hackable Devices: The New Possibilities of Open Hardware”
- Michael Opdenacker “Small Business” — most of small companies which attended have OpenEmbedded services in a list of what they do
I planned to attend few more but decided that Friday will be a good time to see Grenoble in other places then just hotel and conference centre.
What was a nice surprise for me was the amount of people familiar with OpenEmbedded. Most of people which I spoke with used it for misc projects. I had a talk with one guy about “stable” branches and how our view differ. For me “stable/2009” branch is what has to be buildable all the time but can take some updates, he prefers project branches with halted development and just very important fixes related with project.
My “Hacking with OpenEmbedded” talk got some interesting questions. Mostly about Maemo5 support but I do not know too much about it’s status.
Was it worth going? Definitely yes. Met friends, got new contacts, discussed about different projects. Was good to be there. I just hope that next time it will be in a place easier to get to — I had to fly thought Amsterdam so whole trip took me about 12 hours (each way). But on return trip I had interesting talk with Ruud Derwig during flight :D
Will something from ELC-E lands in OpenEmbedded area? Few things:
- I had a talk with Atmel guys about their work on updating linux4sam website and their OpenEmbedded support. AT91 devices will get 2.6.30 kernel in OE and it will land also in “stable/2009” branch on which they plan to base their repository (instead of old stable branch).
- my work on ST-Ericsson NHK-15 board starts to appear in official metadata. I still need to test it on board but base is added.
- one company plans to release OMAP3 based developer board soon and this will be their first use of OpenEmbedded
During Wednesday I was attending ST-Ericsson Community Workshop 2009 in Grenoble, France.
At that event ST-Ericsson presented their NHK-15 developer board and their work on getting U-Boot and Linux kernel support merged into mainline.
The interesting thing was that boards were given for each registered attender. What was inside you can read in one of my previous posts. But there was one more thing — 3Mpix camera daughter board. It is not visible on my pictures as decision about giving them to people was taken one day before event. It works as V4L device but I did not yet tried how good it is.
What was during event? Keynote was given by Harald Welte and it was really interesting talk. Next were:
- NHK-15 presentation
- Linux Kernel
- Poky Linux & OpenEmbedded based environment
Last talk was mine – I said what Poky is, what it gives to the user and then same stuff about OpenEmbedded. Was it good talk or not is to be decided by others.
presentation to download
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.