Embedded Linux, kernel and Android engineer job openings (2012)

Home based jobs in Europe or at one of our offices in France

Penguin worksTo meet increasing demand for its Embedded Linux, kernel and Android engineering services, Bootlin is looking for developers:

  • With experience developing embedded Linux systems
  • With experience developing device drivers for the Linux kernel, and porting Linux on new hardware
  • With visible contributions to Free Software used in embedded systems, such as the Linux kernel, BusyBox, build systems, compilers…
  • With technical writing skills and an interest for training

Experience with Android low-level development, allowing to teach our Android System Development course would also be a strong advantage, though not mandatory.

A first possibility is be hired in France. Being able to join one of our offices in France (Toulouse or Orange) will be an advantage, but working from home in other parts of France will be possible too. We are also open to people living in a country with the Euro currency, working from home, and able to work as full time contractors.

We have a first opening that we would like to fill between September and December 2012. If demand continues to grow, we expect to hire more engineers with the same profile in the following months. We also hope to expand the home based jobs to countries outside Europe in the next years, but it will take a bit more time.

See our careers page for a full description.

Bootlin at the Libre Software Meeting

In a previous post, we detailed all the talks of the Embedded Systems and Open Hardware track of the Libre Software Meeting, taking place in Geneva in early July.

Bootlin will have a quite important presence at this event, with three talks and one tutorial given by Bootlin engineers. You’ll find below the descriptions of the talks given by Bootlin. Both my colleague Maxime Ripard and myself will be present at Libre Software Meeting, and we will be happy to meet you there to discuss Embedded Linux and Android topics!

A look through the Android Stack

Android has established itself in the past years as a major player in the mobile market, outperforming any other mobile systems.

To do so, Google relied both on well established open-source components, such as the Linux Kernel, and munching them together in a brand new userspace environment. This talk will detail the most important components of Android userspace and the interactions between them that allow developers to face a consistent API for their applications.

This talk will be given on Tuesday 9th July 2012, at 14:00, by Maxime Ripard, embedded Linux and Android engineer at Bootlin. Maxime is also teaching our newest training course on Android system development.

Buildroot: a nice, simple and efficient embedded Linux build system

Started in late 2001 by uClibc developers, Buildroot has grown over its 10 years history from a testing tool for the uClibc C library to a complete, vendor-neutral, embedded Linux build system. Until early 2009, the project was mostly unmaintained and the quality slowly decreased, frustrating many Buildroot users. Fortunately, since early 2009, Peter Korsgaard took over the maintainership of Buildroot, and the project has considerably evolved since then: stable releases are published every three months, the user and developer community has grown significantly, the existing features have been cleaned up, many other new features have been added, the project is no longer uClibc-specific and the quality has been vastly improved. Buildroot now offers a nice, simple and efficient mechanism to build small to medium sized embedded Linux systems, such as the ones found in many industrial systems or highly dedicated systems. Many users are amazed about how easy it is to get started with Buildroot, especially compared to other build systems. This presentation will show how Buildroot can be used to build embedded Linux systems, highlighting the new features and improvements made over the last few years, and detailing how the simplicity of Buildroot allows you to focus on developing the applications for your system. A quick overview of the future Buildroot developments will also be provided.

This talk will take place on Wednesday 10th July at 17:00 and will be given by Thomas Petazzoni, embedded Linux engineer at Bootlin, and long time Buildroot contributor.

Linux kernel on ARM: consolidation work

In Spring 2011, Linus Torvalds asked the ARM Linux maintainers to clean up the contents of arch/arm/ in the Linux kernel code by doing more consolidation between ARM sub-architectures.

More than a year later, a lot of work has been accomplished in this area, especially thanks to the introduction of the device tree for the ARM architecture, the pinctrl subsystem and the clock framework into the Linux kernel.

Through this talk, we will present the challenges the ARM architecture creates in terms of Linux kernel support, and then describe from a technical point of view how the device tree, the pinctrl subsystem and the clock subsystem work and how they can improve the consolidation between different ARM sub-architectures.

The talk will be designed to be accessible to an audience having only a moderate knowledge of kernel programming and internals, and will therefore provide enough context for such audience to understand the issues that those different mechanisms are striving to solve.

This talk will take place on Thursday 11th July at 10:00 and will be given by Thomas Petazzoni, embedded Linux engineer at Bootlin.

Tutorial on using Buildroot, a nice, simple and efficient embedded Linux build system

Started in late 2001 by uClibc developers, Buildroot has grown over its 10 years history from a testing tool for the uClibc C library to a complete, vendor-neutral, embedded Linux build system. Until early 2009, the project was mostly unmaintained and the quality slowly decreased, frustrating many Buildroot users. Fortunately, since early 2009, Peter Korsgaard took over the maintainership of Buildroot, and the project has considerably evolved since then: stable releases are published every three months, the user and developer community has grown significantly, the existing features have been cleaned up, many other new features have been added, the project is no longer uClibc-specific and the quality has been vastly improved. Buildroot now offers a nice, simple and efficient mechanism to build small to medium sized embedded Linux systems, such as the ones found in many industrial systems or highly dedicated systems. Many users are amazed about how easy it is to get started with Buildroot, especially compared to other build systems.

This workshop follows the Buildroot presentation proposed in the same topic. During one half-day participants will be introduced on how to efficiently use Buildroot for their own projects:

  • Basic usage of Buildroot: generate the first system, boot it on a hardware platform
  • Add packages to Buildroot
  • Customize Buildroot for real-life projects: how to integrate project specific patches, configuration and customization

Participants are invited to come with their own laptop, installed with a sufficiently recent GNU/Linux distribution. Participants are recommended to attend the Buildroot talk by the same speaker before attending the workshop, as the talk will give an overall introduction on Buildroot.

This tutorial will take place on Thursday 11th July from 14:00 to 17:00 and will be given by Thomas Petazzoni, embedded Linux engineer at Bootlin, and long time Buildroot contributor.

Embedded topics at the Libre Software Meeting, Geneva, July 9-11

Libre Software Meeting, Geneva
Libre Software Meeting, Geneva

The Libre Software Meeting is a community-driven free software event that exists since 2000, composed of talks and workshops. Its 2012 edition will take place from July 7th to July 12th in Geneva, Switzerland.

In the context of this conference, I was responsible with Florian Fainelli from the OpenWRT project to organize the Embedded systems and open hardware track. This track will offer an interesting selection of talks related to embedded topics, concentrated between July 9th and July 11th:

Geneva
Geneva

In the Operating Systems track, some other conferences might be of interested to Embedded Linux developers as well:

The entrace to the Libre Software Meeting is free, so don’t hesitate to book your train or flight tickets, and join us at this event!

Android Builders Summit 2012 videos

On February 13-14th 2012, the second edition of the Android Builders Summit took place in Redwood Shores, near San Francisco in California. While Bootlin was not officially in charge of video recording for this conference, we recorded the talks we attended and that we are glad to share below. The Linux Foundation has also recorded those talks (except a few of them for which they had technical issues), and we provide those additional links below. You can also follow our reports from day 1 and day 2 of this conference.

You’ll find below our videos of the main talks we recorded, and also the videos of the lightning talks that took place on the evening of the first day of the conference. Enjoy!

Main talks

Karim YaghmourVideo capture
Opersys
Leveraging Linux’s History With Android
Slides
Bootlin video (32 minutes):
full HD (386M), 450×800 (107M)

Arnd Bergmann, Tim Bird, Greg Kroah-Hartmann, Zach Pfeffer, moderated by Jonathan CorbetVideo capture
IBM/Linaro, Sony Network Entertainment, The Linux Foundation, Linaro, LWN.net
Panel: Android and the Linux Kernel Mainline: Where Are We?
Bootlin video (38 minutes):
full HD (525M), 450×800 (156M)

Marko GargentaVideo capture
Marakana
Customizing Android
Slides
Linux Foundation video
Bootlin video (50 minutes):
full HD (409M), 450×800 (131M)

Tetsuyuki KobayashiVideo capture
Kyoto Microcomputer
How ADB(Android Debug Bridge) Works
Slides
Linux Foundation video
Bootlin video (33 minutes):
full HD (365M), 450×800 (100M)

Andrew BoieVideo capture
Intel
Android OTA SW Updates
Slides
Linux Foundation video
Bootlin video (61 minutes):
full HD (698M), 450×800 (189M)

Benjamin ZoresVideo capture
Alcatel-Lucent
Android Device Porting Walkthrough
Slides
Linux Foundation video
Bootlin video (69 minutes):
full HD (534M), 450×800 (179M)

Jason Kridner, Khasim Syed MohammedVideo capture
Texas Instruments
Using Android outside of the Mobile Phone Space
Slides
Linux Foundation video
Bootlin video (34 minutes):
full HD (414M), 450×800 (120M)

Tom MossVideo capture
3LM
The Android Ecosystem
Linux Foundation video
Bootlin video (27 minutes):
full HD (267M), 450×800 (82M)

Karim YaghmourVideo capture
Opersys
Headless Android
Slides
Bootlin video (50 minutes):
full HD (462M), 450×800 (145M)

Tom FoyVideo capture
Intrinsyc
Android on eMMC: Optimizing for Performance
Slides
Bootlin video (34 minutes):
full HD (234M), 450×800 (90M)

Wolfgang MauererVideo capture
Siemens
Real-Time Android
Slides
Bootlin video (59 minutes):
full HD (418M), 450×800 (155M)

Jim HuangVideo capture
0xlab
Improve Android System Component Performance
Slides
Linux Foundation video
Bootlin video (54 minutes):
full HD (457M), 450×800 (152M)

Rodrigo ChiossiVideo capture
Samsung
AndroidXRef: Speeding up the Development of Android Internals
Slides
Linux Foundation video
Bootlin video (38 minutes):
full HD (313M), 450×800 (108M)

Mark BrownVideo capture
Wolfson Microelectronics
Towards a Standard Audio HAL for Android
Slides
Linux Foundation video
Bootlin video (47 minutes):
full HD (227M), 450×800 (123M)

Jen CostilloVideo capture
Topics in Designing An Android Sensor Subsystem: Pitfalls and Considerations
Slides
Linux Foundation video
Bootlin video (36 minutes):
full HD (238M), 450×800 (101M)

Aleksandar (Saša) GargentaVideo capture
Marakana
Android Services Black Magic
Linux Foundation video
Bootlin video (61 minutes):
full HD (410M), 450×800 (169M)

Lightning talks

Dario LaverdeVideo capture
HTC
HTC Dev
Bootlin video (3 minutes):
full HD (44M), 450×800 (13M)

Robert McQueenVideo capture
Collabora
Integrating GStreamer and PulseAudio in Android
Bootlin video (4 minutes):
full HD (49M), 450×800 (16M)

Mark GrossVideo capture
Intel
Android build times and host tweakage
Bootlin video (4 minutes):
full HD (37M), 450×800 (13M)

Tony ManssonVideo capture
Linaro
Painless debugging of native code in Android-based device (using DS-5)
Bootlin video (4 minutes):
full HD (32M), 450×800 (13M)

Paul ArssovVideo capture
ARS Technologies Inc.
How easy is it to support external hardware on Android platform
Bootlin video (4 minutes):
full HD (33M), 450×800 (13M)

Karim YaghmourVideo capture
Opersys
Cyborgstack
Bootlin video (4 minutes):
full HD (60M), 450×800 (18M)

Yahya MirzaVideo capture
Aurora Borealis Software
Towards a heterogeneous application for compute driver performance testing and analysis
Bootlin video (3 minutes):
full HD (47M), 450×800 (14M)

Joe BornVideo capture
Sonrlabs
Sonr, Serial headphone interface and hardware
Bootlin video (4 minutes):
full HD (38M), 450×800 (13M)

Android gdbclient command

Before you even start building Android, Google’s instructions tell you to source the build/envsetup.sh shell script.

This script exports a number of environment variables (that’s why you have to source it), mostly setting the PATH to your different toolchains and to your output directories.

It also defines a number of shell functions. Among them some functions are advertised, like the well-know lunch, that is used to configure to some extent the build system, or the grepping functions, but some are not, like pid, which uses adb to get the PID of a process running on the device.

Among the latter, one seems pretty useful: gdbclient. What gdbclient does is obviously gdb related but in fact it does more than that.

First, you run it by doing gdbclient <binary>:<port> <process_name>

Then it sets up adb with the forward command so that you use it as a transport layer to your device, while it appears as (in that case) opened TCP sockets both on your machine and on the device.

Then, it attaches a gdbserver to the process you gave as the third argument on the device.

Finally, it launches your cross-gdb on your workstation, loads the debugging symbols from the file passed as first argument, and sets up a remote debugging session. All of that through USB!

This is definitely useful, and I can’t say why Google doesn’t advertise it more, but hey, it’s there!