Bootlin working on the $9 C.H.I.P. computer

C.H.I.P computer

If you’re following the news about embedded Linux and new cool development platforms, you for sure couldn’t miss the announcement on the world’s first $9 computer. This computer, called C.H.I.P., was started through a crowd-funding campaign on Kickstarter and reception in the Free Software and Open Source community has been very positive. Out of an initial funding goal of $50,000, NextThing Co, the Oakland, California based company creating this product eventually managed to raise more $2,000,000 of funding.

NextThing Co announced their intention to support the platform in the most open way possible: the schematics will be made available, and it will be supported in the mainline Linux kernel.

It turns out that the processor NextThing Co has chosen for this platform is an Allwinner R8 processor. Bootlin has been working since several years on supporting Allwinner processors in the mainline Linux kernel: our engineer Maxime Ripard is the maintainer of the Allwinner SoC support.

Thanks to this long term involvement, Bootlin has been asked by NextThing Co to work with them to support the C.H.I.P. computer in the mainline Linux kernel, and in the process bring some significant improvements to the support of Allwinner processors in the kernel.

C.H.I.P, world first $9 computer

NextThing Co announced recently our collaboration in a blog post on Kickstarter:

We’re incredibly excited to announce that we’ve partnered with one of the premier contributors to ARM Linux: Bootlin! We will be collaborating with their amazing team of ARM Linux engineers, and of course our Kernel Hacker backers to help us test and mainline C.H.I.P.’s kernel modifications as we move forward.

Bootlin is also very excited to be working with NextThing Co on this project! Thanks to this, over the next months, we will have a very substantial amount of time dedicated to this project, and we will regularly push code to support the missing hardware Allwinner SoC hardware blocks in the mainline Linux kernel and to support the C.H.I.P. board.

Pocket C.H.I.P

More details about the C.H.I.P:

  • Availability planned for 2016 for the general public. A selection of 1000 kernel hackers who backed on Kickstarter will have the platform earlier.
  • Very small platform: 40mm x 60mm, making is even smaller than a Raspberry Pi or BeagleBone.
  • Allwinner R8 processor, clocked at 1 Ghz, and offering OpenGL/OpenVG acceleration through an ARM Mali GPU
  • 512 MB of RAM
  • 4GB of on-board NAND flash storage
  • WiFi and Bluetooth 4.0 to connect the system to the outside world
  • One USB host port
  • Powered through a micro USB connector which also supports USB OTG (either USB host or device).
  • Jack connector for composite video out, headphones and microphone input.
  • Many headers to connect external devices (SPI, I2C, UART + 8 GPIOs)
  • Integrated circuit for charging a LiPo battery and being powered by it
  • Additional HDMI or VGA add-on boards will be needed to connect to displays with the corresponding connectivity.

Bootlin engineer Alexandre Belloni co-maintainer of Linux Atmel processor support

Atmel SAMA5After becoming the co-maintainer of the Linux RTC subsystem, Bootlin engineer Alexandre Belloni also recently became a co-maintainer for the support of Atmel ARM processors in the Linux kernel.

Bootlin has been working since early 2014 with Atmel to improve support for their processors in the mainline kernel. Since this date, our work has mainly consisted in:

  • Modernizing existing code for Atmel processors: complete the switch to the Device Tree and the common clock framework for all platforms, rework all that was needed to make Atmel processor support compatible with the ARM multiplatform kernel, and do a lot of related driver and platform refactoring.
  • Implement a complete DRM/KMS driver for the display subsystem of the most recent Atmel processors.
  • Upstream support for the Atmel SAMA5D4, the latest Cortex-A5 based SoC from Atmel.

Thanks to this long-term involvement from Alexandre Belloni and Boris Brezillon, Alexandre was appointed as a co-maintainer of Atmel support, replacing Andrew Victor who hasn’t been active in kernel development since quite some time. He is joining Nicolas Ferre and Jean-Christophe Plagniol-Villard in the team of maintainers for the Atmel platform.

Alexandre has sent his first pull request as an Atmel co-maintainer on May 22, sending 9 patches to the ARM SoC maintainers, planned for the 4.2 kernel release. His pull request was quickly merged by ARM SoC maintainer Arnd Bergmann.

Bootlin is proud to have one of its engineers as the maintainer of one very popular embedded Linux platform, which has had since many years a strong commitment of upstream Linux kernel support. Alexandre is the third Bootlin engineer to become an ARM platform maintainer: Maxime Ripard is the maintainer of Allwinner ARM processor support, and Gregory Clement is the co-maintainer of Marvell EBU ARM processor support.

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.

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.

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!

Bootlin at FOSDEM 2015

FOSDEM BannerFor many open-source developers based in Europe, the FOSDEM is probably the most useful, interesting and exciting conference. Once again this year, several Bootlin engineers will attend the conference:

  • Maxime Ripard, mainly involved in Allwinner related kernel development, as well as more recently OpenWRT support for Marvell platforms
  • Antoine Ténart, involved in Marvell Berlin related kernel development, and one of the developers of our Yocto Project and OpenEmbedded training course
  • Alexandre Belloni, involved in Atmel processors related kernel development, and also one of our Yocto expert.
  • Thomas Petazzoni, involved in Marvell EBU processors related kernel development, and doing a lot of Buildroot contributions.

If you are attending, and want to know more about Bootlin, or discuss career or project opportunities, do not hesitate to contact us prior to the conference. Many of us will probably attend a significant number of talks from the Embedded track, so it should be easy to find us.

Last but not least, Alexandre Belloni will be giving a talk about Starting with the Yocto Project, which will take place on Sunday, at 3 PM in room Lameere.

Finally, Thomas Petazzoni has organized and will participate to the Buildroot Developers Meeting organized right after FOSDEM, and sponsored by Google and Mind.

Linux 3.18 released, Bootlin 13th contributing company

PenguinLinus Torvalds has recently released the 3.18 version of the Linux kernel. As usual, LWN.net made an excellent coverage of the merge window: part 1, part 2 and part 3.

As of 3.18-rc6, LWN.net gathered some statistics about the 3.18 kernel contributions, and Bootlin is ranked as the 13th contributing company for this release in number of patches (see the statistics), right after MEV Limited and before Qualcomm.

A quick summary of our contributions:

  • Improvements to the support of Atmel ARM processors: addition of a memory driver for the RAM controller (Alexandre Belloni), improvements to the irqchip driver to support the new SAMA5D4 processor (Alexandre Belloni), updates to the defconfigs (Alexandre Belloni), new clock driver for the SAMA5D4 processor (Alexandre Belloni), preparation work for multi-platform (Boris Brezillon), numerous fixes to clock drivers (Boris Brezillon), NAND driver improvements (Boris Brezillon), new reset and poweroff drivers and moved all the corresponding logic to a Device Tree based description (Maxime Ripard), refactoring of the clocksource driver and move to the proper drivers/clocksource directory (Maxime Ripard).
  • Improvements to the support of Marvell EBU ARM processors: XOR driver improvements (Ezequiel Garcia), pin-muxing description in Device Tree for more platforms (Ezequiel Garcia), support for the RTC on Armada 375 (Grégory Clement), support for the Spread Sprectrum Generator on Armada 370 (Grégory Clement), improvements to the support of the Armada 370 RD platform (Thomas Petazzoni), extensions to the cpufreq-dt driver to support platforms with independent clocks for each CPU, various fixes.
  • Improvements to the support of Marvell Berlin ARM processors: add support for the Ethernet controller by re-using the existing pxa168_eth driver (Antoine Ténart).
  • Improvements to the support of Allwinner ARM processors: addition of the support for a phase property to the Common Clock Framework, and usage in the context of the MMC clock on Allwinner processors (Maxime Ripard).
  • Various small UBI improvements (Ezequiel Garcia).
  • A number of trivial fixes: removal of IRQF_DISABLED, typo fixes, etc. (Michael Opdenacker).

The detailed list of the patches we have contributed:

DMAEngine Documentation: Work (finally) in Progress

While developping a DMA controller driver for the Allwinner A31 SoCs (that eventually got merged in the 3.17 kernel), I’ve realised how under-documented the DMAEngine kernel subsystem was, especially for a newcomer like I was.

After discussing this with a few other kernel developers in the same situation, I finally started to work on such a documentation during the summer, and ended up submitting it at the end of July. As you might expect, it triggered a lot of questions, comments and discussions that enhanced a lot the documentation itself but also pointed out some inconsistencies in the API, obscure areas or just enhancements.

This also triggered an effort to clean up these areas, and hopefully, a lot more will follow, allowing to eventually clean up the framework as a whole.

And the good thing is that this documentation has been merged by the DMAEngine maintainer and is visible in linux-next, feel free to read it, and enhance it!

Call for participation for the Embedded Linux Conference 2015

San Jose, CaliforniaThe Embedded Linux Conference Europe is just over that it’s already time to think about the Embedded Linux Conference 2015, which will take place on March 23-25 in San Jose, California.

The call for participation has been published recently, and interested speakers are invited to submit their proposals before January, 9th 2015. The notifications of whether your talk is accepted or not will be sent on January, 16th and the final schedule is planned to be published on January, 23th.

At Bootlin, we really would like to encourage developers who are working on interesting embedded Linux related projects to submit a talk about what they are doing: talking about a specific open-source project, feedback on some experience doing an embedded Linux based product, etc. The scope of topics covered by the Embedded Linux Conference is fairly broad, so do not hesitate to submit a proposal. Giving a talk at this conference is really a great way of getting feedback about what you’re doing, raising awareness about a particular project or issue, and generally meeting other developers interested in similar topics.

It is worth mentioning that for those people whose talk is accepted, the entrance ticket is free. For hobbyists working on their own on open-source projects, the Linux Foundation also has the possibility of funding travel to the conference.