Embedded Linux Projects Using Yocto Project Cookbook

Embedded Linux Projects Using Yocto Project Cookbook Cover

We were kindly provided a copy of Embedded Linux Projects Using Yocto Project Cookbook, written by Alex González. It is available at Packt Publishing, either in an electronic format (DRM free) or printed.

It is written as a cookbook so it is a set of recipes that you can refer to and solve your immediate problems instead of reading it from cover to cover. While, as indicated by the title, the main topic is embedded development using Yocto Project, the book also includes generic embedded Linux tips, like debugging the kernel with ftrace or debugging a device tree from U-Boot.

The chapters cover the following topics:

  • The Build System: an introduction to Yocto Project.
  • The BSP Layer: how to build and customize the bootloader and the Linux kernel, plenty of tips on how to debug kernel related issues.
  • The Software layer: covers adding a package and its configuration, selecting the initialization manager and making a release while complying with the various licenses.
  • Application development: using the SDK, various IDEs (Eclipse, Qt creator), build systems (make, CMake, SCons).
  • Debugging, Tracing and Profiling: great examples and tips for the usage of gdb, strace, perf, systemtap, OProfile, LTTng and blktrace.

The structure of the book makes it is easy to find the answers you are looking for and also explains the underlying concepts of the solution. It is definitively of good value once you start using Yocto Project.

Bootlin is also offering a Yocto Project and OpenEmbedded training course (detailed agenda) to help you start with your projects. If you’re interested, join one of the upcoming public training sessions, or order a session at your location!

Embedded Linux and kernel job openings for 2015

At Bootlin, we are starting to get more and more requests for very cool projects. As it can be very frustrating to turn down very interesting opportunities (such as projects that allow us to contribute to the Linux kernel, Buildroot or Yocto Projects), we have decided to look for new engineers to join our technical team.

Job description in a nutshell

  • Technical aspects: mainline Linux kernel development, Linux BSP and embedded Linux system integration, technical training
  • Location: working in one of our offices in France (Toulouse or Orange)
  • Contract: full-time, permanent French contract

Mainline Linux kernel development

Believe it or not, we now have an increasing number of customers contracting us to support their hardware in the mainline Linux kernel. They are either System on Chip manufacturers or systems makers, who now understand the strong advantages brought by mainline Linux kernel support to their customers and to themselves.

You can see the results: Bootlin is now consistently in the top 20 companies contributing to the Linux kernel. We are even number 6 for Linux 4.0!

Note that this job doesn’t only require technical skills. It also has a strong social dimension, having to go through multiple iterations with the community and with kernel subsystem maintainers to get your code accepted upstream.

Linux BSP and embedded Linux system integration

Such activity involves developing and integrating everything that’s needed to deploy Linux on the customer hardware: bootloader, kernel, build environment (such as Buildroot or the Yocto project), upgrade system, optimizing performance (such as boot time) and fixing issues. Another way is to provide guidance and support to customer learning to do such a job.

As opposed to Linux kernel development projects which are often long term ones (though with step by step objectives which can be reached in days), these are usually shorter and more challenging projects. They allow us to stay in touch with the real-life challenges that customer engineers face every day, and that require to achieve substantial results in a relatively small number of days.

Such projects also constitute opportunities to contribute improvements to the mainline kernel and bootloader projects, as well to the build system projects themselves (Buildroot, Yocto Project, OpenWRT…).

Training and sharing experience

Knowledge sharing is an important part of Bootlin mission and activity. Hence, after gaining sufficient on-the-job experience, another important aspect of the job is teaching, maintaining and improving Bootlin training courses.

You will also be strongly incited to share your technical experience by writing blog posts or kernel documentation, and by proposing talks at international conferences, especially the Embedded Linux Conference (USA, Europe).

Profile

  • Experience: we are open to both experienced engineers and people just out of engineering schools. Though prior experience with the technical topics will be an advantage, we are also interested in young engineers demonstrating great potential for learning, coding and knowledge sharing. People having made visible contributions in these areas will have an advantage too.
  • Language skills: fluency in oral and written English is very important. French speaking skills won’t be a requirement, but an advantage too.
  • Traveling: for training sessions and conference participation, you will need the ability to travel rather frequently, up to 8-10 times a year.
  • Ability to relocate, to one of our offices in France, either in Toulouse or in Orange, to strengthen our engineering teams here.

Details about Toulouse and Orange

  • Toulouse is a dynamic city with lots of high-tech and embedded systems companies in particular. Our office in Colomiers can easily be reached by train from downtown Toulouse if you wish to settle there. You would be working with Boris Brezillon, Antoine Ténart, Maxime Ripard and our CTO Thomas Petazzoni.
  • Our main office is settled in Orange in the heart of the Provence region, close to Avignon, a smaller but dynamic city too. It enjoys a sunny climate and the proximity of the Alps and the Mediterranean sea. Accommodation is very affordable and there are no traffic issues! You would be working with our founder Michael Opdenacker and of course remotely with the rest of the engineering team. In particular, we are interested in foreign engineers who could help us develop our services in their home countries.

We prefer not to offer home based positions for the moment, which have their own complexity and cost, while we have plenty of space left in our current offices.

See a full description and details about how to contact us.

New training course on Buildroot: materials freely available

Buildroot LogoLast year, Bootlin launched a new training course on using the Yocto Project and OpenEmbedded to develop embedded Linux systems. In the selection of build system tools available in the embedded Linux ecosystem, another very popular choice is Buildroot, and we are happy to announce today that we are releasing a new 3 days training course on Buildroot!

Bootlin is a major contributor to the Buildroot upstream project, with more than 2800 patches merged as of May 2015 (including the ones contributed with our previous name). Our engineer Thomas Petazzoni alone has contributed more than 2700 patches. He has gathered an extensive knowledge of Buildroot and its internals, being one of the primary authors of the core infrastructures of Buildroot. He is a major participant to the Buildroot community, organizing the regular Buildroot Developer Days, supporting users through the mailing list and on IRC. Last but not least, Thomas acts as an interim maintainer when the main Buildroot maintainer is not available, an indication of Thomas strong involvement in the Buildroot project.

In addition, Bootlin has used and is using Buildroot in a significant number of customer projects, giving us an excellent view of Buildroot usage for real projects. This feedback has been driving some of our Buildroot contributions over the last years.

The 3 days training we have developed covers all the aspects of Buildroot: basic usage and configuration, understanding the source and build trees, creating new packages including advanced aspects, analyzing the build, tips for organizing your Buildroot work, using Buildroot for application development and more. See the detailed agenda.

buildroot-slidesWe can deliver this training course anywhere in the world, at your location (see our rates and related details). We have also scheduled a first public session in English in Toulouse, France, on November 30 to December 2. Contact us at training@bootlin.com if you are interested.

And finally, last but not least, like we do for all our training sessions, we are making the training materials freely available under a Creative Commons BY-SA license, at the time of the training announcement: the first session of this course is being given this week. For the Buildroot training, the available materials are:

Our materials have already been reviewed by some of the most prominent contributors to Buildroot: Peter Korsgaard (Buildroot maintainer), Yann E. Morin, Thomas De Schampheleire, Gustavo Zacarias and Arnout Vandecappelle. We would like to take this opportunity to thank them for their useful comments and suggestions in the development of this new training course.

ELC 2015 videos available

The videos from the last Embedded Linux Conference that took place late March in San Jose, California, are now available on Youtube! This represents a lot of interesting and useful content about embedded Linux topics.

You’ll find below the videos of the three talks given by Bootlin engineers at this Embedded Linux Conference.

An Overview of the kernel DMAEngine subsystem, Maxime Ripard

MLC/TLC NAND Support: Challenges for MTD/NAND Subsystem, Boris Brezillon

The Device Tree as a Stable ABI: A Fairy Tale?, Thomas Petazzoni

Bootlin contributes U-Boot support for SECO i.MX6 uQ7 board

SECO i.MX6 uQ7 SOMAmongst the multiple customer projects we are currently working on that rely on i.MX6 based platforms, one of them is using the SECO i.MX6 µQ7 System on Module as its heart. Unfortunately, the SECO Linux BSP relies on old U-Boot and Linux kernel releases, which we didn’t want to use for this project.

Therefore, Bootlin engineer Boris Brezillon has ported the mainline U-Boot bootloader on this platform, and contributed the corresponding patches. These patches have been merged, and the support for this platform is now part of the 2015.04 U-Boot release. To build it, simply use the secomx6quq7_defconfig configuration.

The work behind these patches was funded by ECA Group.

Bootlin engineer Alexandre Belloni co-maintainer of the Linux RTC subsystem

SparkFun Real Time Clock ModuleThe Linux RTC subsystem supports the Real Time Clock drivers for a large number of platforms and I2C or SPI based Real Time Clocks: it contains about 140 different device drivers, plus the RTC core itself. The current maintainer, Alessandro Zummo, had unfortunately very little time to address all the patches that were sent, and many of them where usually handled by Andrew Morton, acting as a fallback for various parts of the kernel that are not enough actively maintained.

To address this lack of maintainer time, Bootlin engineer Alexandre Belloni recently became a co-maintainer of the RTC subsystem, as can be seen in this patch to the MAINTAINERS file. Alexandre has already started his work by cleaning up the patchwork instance listing all the pending RTC patches, reducing the number of pending patches from 2843 to 436, actively applying new patches being posted, and reviving old patches that never got any attention.

Up to the 4.1 release included, RTC patches will flow to Linus Torvalds through Andrew Morton, but starting from Linux 4.2, Alexandre will start sending his pull requests directly to Linus.

Linux 4.0 released, Bootlin #7 contributing company

Linus Torvalds has released 4.0 a few days ago, deciding to increment the major number version just because he cannot count up to 20 with his fingers and toes. As usual, LWN gave an excellent coverage of the merge window for 4.0 (which at the time was expected to be called 3.20): first part, second part and third part. LWN also published an article with development statistics about the 4.0 cycle.

According to the statistics, Bootlin is the 7th contributing company in number of patches for the 4.0 cycle.

Here is in detail, all our commits to the Linux 4.0 release:

Embedded Linux Conference 2015 slides from Bootlin

Audience at ELC 2015The Bootlin engineering team is back from a busy week at the Embedded Linux Conference 2015 in San Jose, California, last week. During this conference, we presented several talks, a BoF, and participated to the technical showcase with a Buildroot related demo:

  • Maxime Ripard gave a presentation about the DMAengine subsystem, and his slides are available as PDF.
  • Thomas Petazzoni gave a talk about The Device Tree as a stable ABI: a fairy tale?, and the slides are available as PDF.
  • Boris Brezillon gave a talk about MLC/TLC NAND support: (new ?) challenges for the MTD/NAND subsystem, the slides are available as PDF.

Our three talks were all given in front of fully packed rooms, even with a number of people standing in the room for some of them! We were glad to see that the topics we proposed did interest the ELC audience.

Boris Brezillon about support for MLC NAND in MTD
Boris Brezillon about support for MLC NAND in MTD

Thomas Petazzoni about Device Tree bindings as a stable ABI
Thomas Petazzoni about Device Tree bindings as a stable ABI. Photo by Drew Fustini.

In addition to the talk, Thomas Petazzoni organized on Tuesday last week a BoF (Birds of a feather) session on Buildroot, during which approximately 15 persons showed up even though it wasn’t announced in the official schedule. This session was useful to get some feedback from Buildroot users, and meet users and developers in person.

Finally, on Tuesday evening, during the technical show-case, we demo-ed the Buildroot capabilities using a setup that consisted in two platforms running Buildroot-generated systems: a Raspberry Pi 2 system that runs the Kodi media player software, and a Marvell Armada XP based OpenBlocks AX3 system that runs as a NAS providing contents for the media player. This demo was prepared by Buildroot contributor Yann E. Morin, and Bootlin engineer Thomas Petazzoni. The poster presented is available as PDF or SVG, and all the instructions to rebuild the two systems are documented at http://elinux.org/Buildroot:TechShowcase2015_Demo.

Buildroot demonstration at ELC 2015 technical show case
Buildroot demonstration at ELC 2015 technical show case
Buildroot demonstration at ELC 2015 technical show case
Buildroot demonstration at ELC 2015 technical show case

In addition, it is worth mentioning that all the slides from the Embedded Linux Conference are available at https://events.linuxfoundation.org/events/archive/2015/embedded-linux-conference/program/schedule and http://elinux.org/ELC_2015_Presentations. The talks have been video recorded by the Linux Foundation, and hopefully unlike to what happened to the ELCE 2014 videos, the ELC 2015 videos will really appear online at some point in the future.

The location of the next Embedded Linux Conference was also announced, and it will take place in San Diego next year. It is the first time that the Embedded Linux Conference US edition moves outside of the Silicon Valley!

Linux 3.19 released, overview of Bootlin contributions

It’s been a while that Linus Torvalds has released Linux 3.19 and we already know that the next version of Linux will be called 4.0. It’s not too late though to learn more about the 3.19 release, by reading the following three LWN articles: part 1, part 2 and part 3. KernelNewbies has also updated its page about 3.19.

In terms of statistics for the 3.19 release cycle, LWN has published an article which ranks Bootlin the 13th contributing company, with 205 patches merged. We have been in the top 30th contributing company by number of patches for all kernel releases since Linux 3.8, a sign of our continuous involvement in the upstream kernel community.

Our most important contributions in this kernel release are:

  • For the Atmel ARM processors, numerous cleanup patches from Alexandre Belloni to prepare the platform for ARM multiplatform compliance (the possibility of building the support for Atmel ARM processors together with the support of other ARM processors in a single kernel image). From Boris Brezillon, addition of Device Tree support in the AT91 RTC driver, improvements to the AT91 irqchip driver, addition of a PWM driver for the PWM built into the Atmel HLCDC display controller, addition of Device Tree support for the AT91 hardware random number generator driver, addition of an MFD driver for the Atmel HLCDC display controller, and many other Device Tree fixes and improvements.
  • For the Marvell Berlin ARM processors, addition of USB, SATA and reset controller support. The USB support required numerous core improvements to the USB subsystem, and the addition of a specific USB PHY driver.
  • For the Marvell EBU ARM processors, Gregory Clement added USB PHY support for Armada 375, and CPU hotplug support for Armada 38x as well as several other fixes and improvements. Thomas Petazzoni added suspend to RAM support for Armada XP, fixed a serious problem in the I2C driver that required some major refactoring, and did some HW I/O coherency related fixes.
  • For the Allwinner ARM processors, Maxime Ripard did the relicensing of many Device Tree files from GPL only to GPL+X11 licenses. He also added pinctrl support on Allwinner A80.
  • After writing a dmaengine driver which was merged in 3.17, Maxime Ripard started to get involved in the dmaengine subsystem itself. He contributed a documentation for this subsystem, which was merged in Linux 3.19, as well as several fixes for dmaengine drivers.
  • Addition of a generic linux/media-bus-format.h header file, containing definitions of the various possible pixel formats. This header file was until then specific to the Video4Linux subsystem, but will start being used by the DRM/KMS subsystem. This addition was done in preparation of the introduction of a DRM/KMS driver for the AT91 HLCDC display controller (to come in Linux 4.0).
  • A few small improvements to the core DRM/KMS subsystem, also preparation work for the AT91 HLCDC display controller driver.
  • Fixes for the i.MX28 NAND flash controller driver, the gpmi-nand to properly support the raw access operations, which allow to use the userspace MTD testing utilities to validate the MTD setup. This was part of a customer project we did to assess the quality of the MTD and UBI setup on a Freescale i.MX28 custom platform.

The details of our contributions are:

Embedded Linux Conference schedule announced, several talks from Bootlin

The schedule for the upcoming Embedded Linux Conference, which takes place on March 23-25 in San Jose, has been announced and is available publicly at http://elcabs2015.sched.org/, together with the Android Builders Summit schedule. As usual, there are lots of talks that look very interesting, so we can expect a very useful conference once again.

ELC 2015

This time around, there will be three talks given by Bootlin engineers:

So, book your tickets, and join us for the Embedded Linux Conference at the end of March!