Back from Embedded Linux Conference Europe 2011

As we announced in a previous blog post, a large part of the Bootlin team attended the 2011 edition of the Embedded Linux Conference Europe in Prague last week.

This was the first european edition of the conference to last three days, and this was much appreciated as it gave the opportunity to attend a lot more conferences and to spend more time talking with developers of the community. My colleagues Michael Opdenacker and Maxime Ripard as well as myself really enjoyed this conference. It really allows to connect with members of the community, learn a lot of new things, and bring home a huge motivation to work on various projects. Despite a few marketing-oriented keynotes, the conference has kept its highly-technical profile, which is great.

Prague

We have recorded all the talks of the three tracks of the Embedded Linux Conference Europe (unfortunately, there wasn’t a similar video crew for the LinuxCon Europe conference which was taking place at the same time). Many of those videos should have a much higher audio quality than what we had in the past, since we could capture the audio directly for the conference room sound system. Unfortunately, one of our camcorders generates a loud noise when connected both to the audio system of the conference room and to the power adapter (this noise disappears when the camcorder is on battery). Therefore, not all conferences could be recorded with this improved audio quality. The encoding and upload of those videos has started on Sunday evening, just a few hours after landing in Toulouse when coming back from ELCE. The process is running 24/24 on two machines in parallel, and we therefore hope to be able to provide those videos online by the end of the week, or at worst at the beginning of next week.

Kernel Developer Panel
Kernel Developer Panel. From left to right: Linus Torvalds, Paul McKenney, Alan Cox, Thomas Gleixner and the moderator, Lennart Poettring

As we also announced, I gave two talks at this Embedded Linux Conference Europe event. One on Buildroot, titled Using Buildroot for real projects, which slides are available on the elinux.org site. More than 50 persons attended the conference which seems to indicate that there is interest around Buildroot. I had a few questions but unfortunately had to stop the conference after just 2/3 questions since I had exhausted my time slot. My second conference was titled Qt for non-graphical applications, and the slides are also available on the elinux.org site. About 45-50 persons attended the conference and in this case as well, I had to speak quite fast to make the 40+ slides discussion fit within the time slot allocated for the conference, which gave only the time for a few questions at the end. Generally speaking, these talks have attracted a nice number of attendees compared to many other talks I’ve seen, so it seems that all the preparation work was not done needlessly.

Nicolas Deschene (TI) and Loïc Minier (Linaro)
Nicolas Deschene (TI) and Loïc Minier (Linaro)

If you couldn’t attend ELCE and are waiting for the videos, I’m sure you’ll also be interested by the date and locations of the next editions of the conference :

  • The next Embedded Linux Conference, US edition, will take place on February 14-16 2012 in Redwood City, near San Francisco in California. This is an unusual date for the ELC (which traditionally took place in April), but it allows the conference to match with the Linaro Connect event for the first quarter of 2012.
  • The next Embedded Linux Conference Europe will take place on November 6-9 2012 in Barcelona, Spain. This is a just a ~4h drive from Toulouse, so definitely, several Bootlin people should be there.

GStreamer 2010 conference videos

Videos from the 2010 edition of the GStreamer conference, Cambridge, UK, Oct. 26, 2010.

After releasing ELC-E videos, here are videos from the 2010 edition of the GStreamer conference. As usual, these videos are released under the terms of the Creative Commons Attribution – ShareAlike Licence version 3.0.

Jonas HolmbergVideo capture
Axis
Case study – GStreamer on Axis devices
Slides
Video (26 minutes):
full HD (223M), 450×800 (72M)

Sebastian DrögeVideo capture
Collabora Multimedia
WebM and GStreamer
Slides
Video (8 minutes):
full HD (75M), 450×800 (24M)

Florent ThieryVideo capture
UbiCast
Using gstreamer for building automated webcasting systems
Slides
Video (31 minutes):
full HD (361M), 450×800 (107M)

Zeeshan AliVideo capture
Nokia
Implementing DLNA using GStreamer
Slides
Video (29 minutes):
full HD (282M), 450×800 (88M)

Olivier CrêteVideo capture
Collabora
Integrating VideoConferencing into Everyday Applications
Slides
Video (29 minutes):
full HD (334M), 450×800 (103M)

Håvard GraffVideo capture
Tandberg
Case study – Tandberg and GStreamer
Video (61 minutes):
full HD (734M), 450×800 (212M)

Wim TaymansVideo capture
Collabora Multimedia
Keynote – GStreamer – Current and future development
Video (47 minutes):
full HD (310M), 450×800 (136M)

Rob ClarkVideo capture
Texas Instruments
GStreamer and OMAP4
Video (37 minutes):
full HD (336M), 450×800 (128M)

Martin BissonVideo capture
3D Stereoscopic and GStreamer
Video (13 minutes):
full HD (124M), 450×800 (39M)

Jan SchmidtVideo capture
Oracle Corporation
Interactivity in GStreamer pipelines
Slides
Video (20 minutes):
full HD (265M), 450×800 (76M)

Mike SmithVideo capture
Songbird
Cross platform development with GStreamer
Video (51 minutes):
full HD (542M), 450×800 (165M)

Emanuele QuacchioVideo capture
ST Microelectronics
A GStreamer based framework for adaptive streaming applications
Video (54 minutes):
full HD (592M), 450×800 (174M)

Josep TorraVideo capture
Fluendo
Intel SMD elements in GStreamer
Slides
Video (50 minutes):
full HD (371M), 450×800 (151M)

Philippe NormandVideo capture
Igalia
Webkit, HTML5 and GStreamer
Slides
Video (38 minutes):
full HD (229M), 450×800 (106M)

Edward HerveyVideo capture
Collabora Multimedia
Challenges of video editing in your pocket
Slides
Video (53 minutes):
full HD (416M), 450×800 (174M)

David SchleefVideo capture
Entropy Wave
Optimizing multimedia with Orc
Slides
Video (58 minutes):
full HD (493M), 450×800 (175M)

Luciana FujiiVideo capture
Holoscopio
Landell – live streaming for the masses
Slides
Video (21 minutes):
full HD (110M), 450×800 (58M)

Zaheer MeraliVideo capture
Flumotion and GStreamer
Video (35 minutes):
full HD (202M)

Andrey Nechypurenko and Maksym ParkachovVideo capture
Adaptive video streaming with Ice and GStreamer
Slides
Video (35 minutes):
full HD (279M), 450×800 (107M)

ELCE 2010 videos – Now in full HD

Videos from the Embedded Linux Conference Europe, Cambridge, UK, October 2010

Just a few weeks before the next edition of the Embedded Linux Conference in San Francisco, here are the videos from the previous edition in Europe a few months ago.

These videos took more time to process than expected, because of intense months on our side, but also because of the switch to the VP8 video codec. VP8 is the new Open Source and royalty free video codec, and is a successor to the codec that Theora was derived from. Unlike Theora which is now lagging behind, it is a very close competitor to H264, both in terms of quality and video size.

The switch to VP8 allowed us to release the videos in their original full HD resolution (we now have three full HD camcorders to shoot conference videos), with video files of about the same size.

You will probably need a recent GNU/Linux distribution (such as Ubuntu 10.10) to watch these videos. As this codec released by Google is taking off quickly, you should also find solutions to watch videos on Windows and MacOS X. Don’t hesitate to post comments here about your experience playing these files. You can even watch them on the Panda board, which can decode VP8 with its hardware video decoder.

As usual, these videos are released under the terms of the Creative Commons Attribution – ShareAlike Licence version 3.0.

As often in conferences, the videos were unfortunately shot is tough lighting conditions. The organizers usually turn off the lights to make it easier for the audience to read the screen. The consequence is a high contrast between the speaker and the screen, causing the speaker to appear very dark when we film her or him together with the screen. In a number of videos, we tried to solve this by using a beach mode provided by our camcorders. While the speaker now looks great, this unfortunately blurred the screen, causing more inconvenience than benefits. We gave up this mode in the last videos and will shoot ELC 2011 is the standard way, even if the speaker looks dark again. At least, with full HD videos, you will be able to read the slides directly on the screen.

The videos from the 2010 GStreamer conference will also be available in the next days, and to help you produce your own videos, we will release our new video processing scripts soon too.

Ruud DerwigVideo capture
Welcome speech
Video (15 minutes):
full HD (228M), 450×800 (71M)

Wolfram SangVideo capture
Pengutronix
Developer’s Diary: Supporting Maintainers
Slides
Video (46 minutes):
full HD (888M)
Rekha Kumar and Nipuna GunasekeraVideo capture
Texas Instruments
Panda board demonstration
Video (14 minutes):
full HD (373M), 450×800 (85M)

Robert SchusterVideo capture
OpenJDK
OpenJDK for Embedded Linux Devices
Slides
Video (39 minutes):
full HD (947M), 450×800 (225M)
Philippe RobinVideo capture
Linaro
Facilitating Open Source Development and Collaboration
Slides
Video (46 minutes):
full HD (548M), 450×800 (160M)
Tim BirdVideo capture
Sony
Android System Programming – Tips and Tricks
Slides
Video (40 minutes):
full HD (471M), 450×800 (142M)
Mischa Jonker and Ruud DerwigVideo capture
Synopsys
Portability is for People Who Cannot Write New Programs – GNU/Linux/OS on ARC
Slides
Video (34 minutes):
full HD (517M), 450×800 (148M)
Leif LindholmVideo capture
ARM
Software Considerations When Using High-Performance Memory Systems
Slides
Video (46 minutes):
full HD (511M), 450×800 (153M)
Ravi Sankar GunturVideo capture
Samsung
A Simple Method to Detect Memory Leaks and Buffer Overruns
Slides
Video (17 minutes):
full HD (171M), 450×800 (55M)
Will NewtonVideo capture
Imagination Technologies
Exploiting On-chip Memories in Embedded Linux Applications
Slides
Video (20 minutes):
full HD (255M), 450×800 (68M)
Andrey FedotovVideo capture
AFSoft
Linux Application in Safety-Critical Environment: A Real-Life Example
Video (39 minutes):
full HD (304M), 450×800 (111M)

Anna DushistovaVideo capture
Mentor Graphics
Eclipse and Embedded Linux Developers: What It Can and What It Cannot Do For You
Slides
Video (31 minutes):
full HD (338M), 450×800 (112M)
Yoshitake KobayashiVideo capture
Toshiba
Linux Kernel Acceleration for Long-term Testing
Slides
Video (30 minutes):
full HD (249M), 450×800 (89M)
Ralf BaechleVideo capture
Wind River
Embedded Linux – The State of the Nation
Video (40 minutes):
full HD (375M), 450×800 (128M)

Jim ZemlinVideo capture
Linux Foundation
The Linux Foundation and CELF
Video (21 minutes):
full HD (282M), 450×800 (71M)

Andrew MurrayVideo capture
MPC Data
The Right Approach to Minimal Boot Times
Slides
Video (41 minutes):
full HD (472M), 450×800 (149M)
Robert Schwebel and Sascha HauerVideo capture
Pengutronix
Barebox: Booting Linux Fast and Fancy
Slides
Video (45 minutes):
full HD (779M), 450×800 (192M)
Kevin HilmanVideo capture
Deep Root Systems
Runtime Power Management
Slides
Video (45 minutes):
full HD (780M), 450×800 (195M)
Michael OpdenackerVideo capture
Bootlin
Flash Filesystem Benchmarks
Slides
Video (47 minutes):
full HD (937M), 450×800 (229M)
Ari RauchVideo capture
Texas Instruments
The Dynamic Role of Open Linux Architectures in Today’s Mobile Landscape
Slides
Video (34 minutes):
full HD (789M), 450×800 (203M)
Benjamin GaignardVideo capture
ST-Ericsson
Android and GStreamer
Slides
Video (42 minutes):
full HD (432M), 450×800 (133M)
Hans VerkuilVideo capture
Tandberg
Supporting SoC Video Subsystems in Video4linux
Slides
Video (45 minutes):
full HD (424M), 450×800 (139M)
Benjamin ZoresVideo capture
Alcatel-Lucent
State of Multimedia in 2010’s Embedded Linux Devices
Slides
Video (45 minutes):
full HD (784M), 450×800 (219M)
Iago Toral QuirogaVideo capture
Igalia/Grilo
Grilo: Integrating Multimedia Content in Applications
Slides
Video (32 minutes):
full HD (515M), 450×800 (149M)
Jean-Paul SamanVideo capture
M2X BV
Porting VLC to TI DaVinci
Slides
Video (46 minutes):
full HD (516M), 450×800 (167M)
Stefan KostVideo capture
Nokia
Meego Multimedia
Slides
Video (37 minutes):
full HD (316M), 450×800 (105M)
Vitaly WoolVideo capture
Porting Legacy Code to Linux Userspace Driver Framework
Video (26 minutes):
full HD (400M), 450×800 (108M)

Martin MichlmayrVideo capture
Debian
Adapting Debian Installer to NAS and Other Consumer Devices
Slides
Video (21 minutes):
full HD (196M), 450×800 (62M)
Frank ScholzVideo capture
Android and Its Impact On Home Entertainment and Home Automation
Video (28 minutes):
full HD (347M), 450×800 (101M)

WookeyVideo capture
Yaffs
Yaffs updates
Slides
Video (27 minutes):
full HD (312M), 450×800 (95M)
Yann E. MorinVideo capture
Crosstool-ng
Crosstool-NG, A Cross-Toolchain Generator
Slides
Video (41 minutes):
full HD (1.1G), 450×800 (185M)
Armijn HemelVideo capture
Loohuis Consulting
Introducing the Binary Analysis Tool
Slides
Video (47 minutes):
full HD (507M), 450×800 (155M)
Kees-Jan DijkzeulVideo capture
Sioux Embedded Systems
A Gentle Introduction to Autotools
Slides
Video (41 minutes):
full HD (371M), 450×800 (124M)
Klaas Van GendVideo capture
Montavista
Deflating the Virtualization Hype in 3 Simple Steps
Slides
Video (38 minutes):
full HD (507M), 450×800 (131M)
Peter KorsgaardVideo capture
Buildroot
Do More With Less – On Driver-less Interfacing with Embedded Devices
Slides
Video (48 minutes):
full HD (529M), 450×800 (173M)
Ray KinsellaVideo capture
Intel
Xen in Embedded Systems
Slides
Video (34 minutes):
full HD (380M), 450×800 (135M)
Arnout VandecappelleVideo capture
Mind
Practical Testing of Open Source Embedded Systems
Slides
Video (51 minutes):
full HD (364M), 450×800 (160M)
Carmelo Amoroso and Rosario ContarinoVideo capture
STMicroelectronics
Lightweight Prelinker for Kernel Modules
Slides
Video (45 minutes):
full HD (302M), 450×800 (129M)
Frank RowandVideo capture
Sony
Identifying Embedded Real-Time Latency Issues: I-Cache and Locks
Slides
Video (43 minutes):
full HD (272M), 450×800 (120M)
David AndersVideo capture
Texas Instruments
Board Bringup: Methods and Utilities
Slides
Video (34 minutes):
full HD (248M), 450×800 (99M)
John OgnessVideo capture
Linutronix
IPL+UBI: Flexible and Reliable with Linux as the Bootloader
Slides
Video (27 minutes):
full HD (232M), 450×800 (89M)
Vitaly WoolVideo capture
WLAN Chips in Embedded Linux Systems
Video (23 minutes):
full HD (264M), 450×800 (82M)

Grant LikelyVideo capture
Secret Lab Technologies
ARM Flattened Device Tree Status Report
Slides
Video (40 minutes):
full HD (542M), 450×800 (173M)
Koen KooiVideo capture
OpenEmbedded
The State of OpenEmbedded and Tooling to Make Life Easier
Slides
Video (44 minutes):
full HD (308M), 450×800 (122M)
Harald WelteVideo capture
OpenBSC
Running your own GSM+GPRS network using OpenBSC, OsmoSGSN and OpenGGSN
Slides
Video (49 minutes):
full HD (402M), 450×800 (163M)
Arun RaghavanVideo capture
Collabora
PulseAudio In The Embedded World
Slides
Video (30 minutes):
full HD (204M), 450×800 (88M)
Jake EdgeVideo capture
LWN.net
Understanding Threat Models for Embedded Devices
Slides
Video (29 minutes):
full HD (186M), 450×800 (80M)
Gustavo F. PadovanVideo capture
Profusion
The Linux Bluetooth Stack
Slides
Video (30 minutes):
full HD (213M), 450×800 (87M)
Klaas van GendVideo capture
Closing session
Video (62 minutes):
full HD (1.2G), 450×800 (285M)

Chris SimmondsVideo capture
2net
The Embedded Linux Quick Start Guide – Part 1
Slides
Video (52 minutes):
full HD (397M)
Chris SimmondsVideo capture
2net
The Embedded Linux Quick Start Guide – Part 2
Slides
Video (79 minutes):
full HD (660M)
Chris SimmondsVideo capture
2net
The Embedded Linux Quick Start Guide – Part 3
Slides
Video (67 minutes):
full HD (501M)
Chris SimmondsVideo capture
2net
What else can you do with Android? – Part 1
Slides
Video (49 minutes):
full HD (432M), 450×800 (144M)
Chris SimmondsVideo capture
2net
What else can you do with Android? – Part 2
Slides
Video (31 minutes):
full HD (293M), 450×800 (94M)
Chris SimmondsVideo capture
2net
What else can you do with Android? – Part 3
Slides
Video (59 minutes):
full HD (545M), 450×800 (180M)

Here are also videos of the Embedded Linux and Android tutorials by Chris Simmonds.

Linux Kernel Development, third edition

Linux Kernel Development, by Robert Love, 3rd edition

Linux Kernel Development is a book authored by Robert Love, a famous kernel developer. Contrary to the very famous Linux Device Drivers book, Linux Kernel Development is not oriented towards driver development, but instead covers how the core Linux kernel works.

Having this knowledge is not absolutely necessary to write Linux device drivers, but having a good overall understanding of the kernel always help to understand what’s going on in your system, even at the application level. In July this year, the third edition of Linux Kernel Development has been published, which upgrades the book contents to kernel version 2.6.34, a good opportunity to have a new look at the book that Bootlin received a few weeks ago.

After a quick introduction to the kernel sources (configuring, building, organization of the source tree), the book immediately dives into kernel internals:

  • Process management: how the kernel represents processes and their state, how processes are created inside the kernel, how threads are handled, are processes are terminated.
  • Process scheduling: a full chapter dedicated to the Linux kernel process scheduler. The new CFS scheduler is of course covered in great detail, with large portion of commented source code, for those who want to understand the fine details of the scheduler. Topics such as process sleep/wake-up, preemption, real-time scheduling policies are also covered.
  • System calls are then covered: how they are implemented, how parameters are passed from userspace to the kernel, etc. The call path from your user-space application down to the kernel is well explained in this chapter.
  • Kernel data structures: a generic chapter which details the kernel API for linked lists, queues, maps, and binary trees. Those APIs are omni-present inside the kernel, and it’s therefore a good idea to know how they work, both for understand existing code and for writing new code.
  • Interrupts: how interrupts are handled and how one can write an interrupt handler. Unfortunately, the newly introduced threaded interrupt handlers are not covered, but it’s true that their usage is not yet very widespread inside the mainline kernel.
  • Bottom halves and deferring work, a topic closely related to interrupt handling. It covers bottom halves, softirqs, tasklets and workqueues.
  • Kernel synchronization: two chapters are dedicated to this topic. First a chapter detailing why synchronization is needed, what are the sources of concurrency and what should be protected against concurrent access. And then a chapter detailing the mechanisms provided by the kernel to implement proper synchronization: atomic operations, spin locks, reader-writer spin locks, semaphores, reader-writer semaphores, mutexes, completion variables, sequential locks, preemption disabling, ordering and barriers
  • Timers and time management details how the kernel manages time: ticks, jiffies counter, timers, delaying execution of code are covered in this chapter. There are unfortunately no details about the clocksource and clockevents infrastructure, and no details about how timers and high-resolution timers are implemented. Contrary to other chapters that go fairly deep into the implementation details, this one mostly only covers the API to time management rather than the internals.
  • Memory management is the topic of the following chapter: physical memory management with the page allocator and the physical zones, then the kmalloc, vmalloc and SLAB allocators are covered. High-memory mappings, a topic specific to 32 bits architectures having more than a gigabyte of RAM is also covered in detail. The per-cpu interface is also covered, and will help those who want to understand parts of the kernel that have been optimized for scalability on multiple CPUs.
  • The Virtual Filesystem, with its different objects: superblock, inode, dentry and file is covered in good detail.
  • The block layer is then covered, with a description of the role of the bio structure, the request queues, and the I/O schedulers.
  • Then, the book goes back to more details about the internals of memory management: the mm_struct memory descriptor, the virtual memory areas (so called VMAs) and how they relate with the mmap/munmap system calls. The next chapter continues with a detailed description of the page cache implementation.
  • A fairly strange chapter called “Devices and modules” gives some information about kernel modules (how to build them, how to use module parameters, how dependencies are handled), then covers the internal of the device model (kobjects, ktypes, ksets, krefs) and finally sysfs. Just like the chapter covering the device model in the third edition of Linux Device Drivers, I think it totally misses the point. All the kobject, ktypes, ksets and krefs stuff is very low-level plumbing used by the Linux device model, but it is not exactly what the driver developer needs to interact with in the first place. In my opinion, a good description of the device model should rather explain what struct bus_type, struct driver and struct device are, how they are specialized for the different bus types in pci_driver, pci_device, usb_driver, usb_device, platform_driver, platform_device, and how the registration/probing of drivers and devices is done. I’ve recently given a talk about this topic, the video is in French, but the slides are in English.
  • Debugging is then covered: printk of course, but also oopses, debugging-related kernel options, the magic SysRq key, kernel debuggers, etc.
  • A rather generic chapter about Portability is then proposed, and finally a chapter about Patches, Hacking and the community that details the kernel community, the kernel coding style, how to generate and submit patches, etc.

All in all, Linux Kernel Development remains very good reading. I particularly appreciate the writing style of Robert Love, who manages to make a deeply-technical book interesting and easy to read. Of course, there are some topics in the kernel in which I had to dive myself and for which I’d expect to see more details in this book, but giving every possible detail about a huge beast such as the Linux kernel in just 400 pages is not possible!

Videos from FOSDEM 2010

Peter Korsgaard presenting Buildroot in the Cross build systems workshop at FOSDEM 2010

Like every year, the Free and Open Source Developer European Meeting took place early February in Brussels, and Thomas Petazzoni, from Bootlin, attended and recorded a few talks from the embedded session. However, contrary to previous years, I haven’t been able to record all talks from the embedded session, since I attended talks from other sessions which were already being recorded by others.

Gian-Carlo Pascutto presenting Embedded software development best practices at FOSDEM 2010

We also attended talks from the X.org and Coreboot developer roooms : videos for the X.org developer room can be found at http://video.fosdem.org/2010/devrooms/xorg/ and videos for the Coreboot developer room can be found at http://video.fosdem.org/2010/devrooms/coreboot/.

ELC 2010 videos

Videos from the Embedded Linux Conference in San Francisco, April 12-14, 2010.

The 2010 edition of the Embedded Linux Conference was once again a very interesting event. For embedded Linux developers, the Embedded Linux Conference is a perfect place to learn about new technologies, profit from the experience of other developers, and to meet key software developers.

For people who couldn’t attend this conference, and for single core people who didn’t manage to attend two or three talks at the same time, here are the videos that we managed to shoot. As usual, the videos are released with a Creative Commons Attribution – ShareAlike 3.0 license.

We hope it makes you feel like joining the next edition of the conference. If you can’t wait, what about going to ELC Europe in Cambridge (UK) in late October? It has a very interesting program too. Of course, the sessions will also be recorded. I hope to see you there!

Recruiting in Toulouse, France

Penguin worksFor the French speaking readers, we are looking for a graduate engineer to open a new office in Toulouse, France.

All the details are available on our French blog.

This job is not only open to French applicants. Everyone ready to relocate in Toulouse is welcome, but we need someone with a good command of the French language. This will be needed to serve local customers.

ELC Europe 2010 sessions announced

List of sessions and speakers at ELC Europe in Cambridge, UK

Cambridge, UKBeing a member of the organization committee of the Embedded Linux Conference Europe, I get access to fresh news about this yearly conference. The call for presentations is now over and we have just announced the list of sessions.

Note that this list is not the final one yet. Some speakers haven’t confirmed their participation or haven’t sent their biographies yet. There are also two or three speakers added at the last minute who are not listed yet.

The conference will happen in Cambridge, UK, on October 27-28, 2010. Keep an eye on the website (or on our blog). Registration should open in a few days from now, and all practical details will be given then.

See also the agenda of the GStreamer conference which will happen at the same location on the day before.

Embedded Linux Opportunities – Keynote in Eindhoven

Fontys UniversityIf you live near Eindhoven in the Netherlands, or if you can easily get there, you may be interested in the seminar organized by Fontys University on June 25, 2010.

I will be in Eindhoven on that week to give our Embedded Linux System Development course. The session is organized by Fontys University and Alten PTS, and Fontys invited me to give a keynote at their seminar on Friday.

The seminar topic is: “Embedded Linux for SMEs” – A guide to professional development:

  • Ruud Ermers (Fontys) – A Guide to professional development
  • Gerben Blom (Alten PTS) – Android for SMEs
  • Michael Opdenacker (Bootlin) – Embedded Linux Opportunities. Ideas and advise for the Open Minded.
  • The grand race, between arm9 controlled vehicles.
  • Technical demos

Here is the abstract for my speech:

Michael Opdenacker created Bootlin in 2004, a company that is best known worldwide for the technical resources it shares with the embedded Linux community. The more this company shares (in the true sense of sharing: giving and receiving), the more successful it gets.

That’s why Michael will come to exchange ideas and experience on building successful embeddded Linux systems and businesses. Just make sure you send him a SIGSTOP signal at the end of his timeslot.

To water your mouth, this talk will show a few things which are possible with embedded Linux and free software building blocks. You will see how you can turn an idea into something that could keep you busy during your whole life if you are not careful.

So, if you are in the Eindhoven area, this could be a nice opportunity to meet. I hope to see you there!

Buildroot 2010.05 released: again many Bootlin contributions

Buildroot logoJust one day before the end of May, Buildroot 2010.05 has been released by Peter Korsgaard, as predicted by the fixed release schedule used by the project. It can be downloaded at http://buildroot.org/downloads/buildroot-2010.05.tar.bz2. For the record, Buildroot is a simple and efficient tool to build embedded Linux systems: cross-compiling toolchain, root filesystem, kernel image and bootloader.

Major changes

The major user-visible changes are:

  • Re-organization of the menuconfig layout for packages. All packages are now organized in categories, making them easier to find
  • Our X.org package set has been upgraded to X.org 7.5.
  • Several new packages have been added: cdrkit, cramfs, genext2fs, genromfs, libatomic_ops, librsync, libusb-compat, lmbench, netperf, squashfs, squashfs3, squid. Many of them have been added as the result of a filesystem code generation cleanup
  • On the internal toolchain side (i.e toolchains generated by Buildroot), we have added support for uClibc 0.9.31, GCC 4.4.4, GDB 7.x and binutils 2.20.1.
  • On the external toolchain side (i.e. re-using existing toolchains), we have improved support for multilib toolchains (such as CodeSourcery toolchains)

In addition to these changes, 41 bugs of our bug tracker have been fixed, and dozens of packages have been upgraded or fixed.

Bootlin contributions

Bootlin has again made significant contributions to this release:

git shortlog -s -n 2010.02..
   224  Paulius Zaleckas
   182  Thomas Petazzoni, from Bootlin
   148  Peter Korsgaard
    28  Gustavo Zacarias
    26  Will Wagner
    14  Lionel Landwerlin
     6  Yann E. MORIN
[...]

The things we have contributed include:

  • A big cleanup in the Buildroot code that generates the root filesystem images. It has been moved from various directories in target/ to a single, central location: fs/. The code that handled the compilation of host utilities to generate the filesystem images (genext2fs, cdrkit, mtd-utils, cramfs, squashfs, etc.) has been moved to normal packages, and an infrastructure has been added to factorize the common code of the various filesystem generation makefiles.
  • Better support for multilib external toolchains
  • A new script that generates nice dependency graph (see below)
  • A clarification of the gettext integration, to make it work properly with glibc toolchains.
  • Fixes to bug #75, bug #1789.
  • Dozens of build fixes found by testing random configurations.
  • Various code cleanups, that lead to the removal of several configuration options, which makes the usage of Buildroot a little bit easier.

Dependency graph generation

Thanks to the new package infrastructure that we have included in Buildroot a few releases ago, it is now easier to retrieve the list of dependencies of each package in a generic way. Using this, I recently implemented a dependency graph generation tool. It allows to generate nice graphs of the dependencies for a given package, like libgtk2 in the following example (click for the full sized version):

Note that packages in red are packages that do not use the generic or autotools infrastructure, so we couldn’t determine what their dependencies are.

We can also generate the dependency graph for a complete Buildroot configuration, with all packages:

Using this tool is fairly easy. You must first install the graphviz package on your distribution. For a single package dependency graph:

./scripts/graph-depends libgtk2 > libgtk2.dot
dot -Tpdf libgtk2.dot -o libgtk2.pdf

For a full dependency graph:

./scripts/graph-depends > full.dot
dot -Tpdf full.dot -o full.pdf

Note that the dependency graph always depends on the selected set of packages. It is not the absolute dependency graph, which would contain all existing dependencies. It only show the dependencies as they are in your current configuration.

Plans for the next release

The next release is scheduled for August (2010.08). I have in mind various things:

  • Cleanup of the bootloader compilation code and integration of support for Barebox. This is already implemented in one of my branch, so I should be able to push this fairly soon to Buildroot
  • Cleanup of the Linux kernel compilation code, with a much-wanted simplification of this. Again, this is already implemented on my side, but requires a little bit more work before being able to push this
  • Continue the effort to convert packages to the generic or autotools infrastructure. I have already sent a status update on this topic to the project mailing-list. We have 56 packages to convert to the generic infrastructure and 77 to convert to the autotools infrastructure.
  • Integration with Crosstool-NG, which is a job that Yann Morin, developer of Crosstool-NG has already started.
  • More improvements of the external toolchain integration
  • If some time is left, a cleanup and reorganization of the board support mechanism, so that we can add more boards in a sane way