Buildroot 2015.05 release, Bootlin contributions inside

Buildroot LogoThe Buildroot project has recently released a new version, 2015.05. With exactly 1800 patches, it’s the largest release cycle ever, with patches from more than 100 different contributors. It’s an impressive number, showing the growing popularity of Buildroot as an embedded Linux build system.

The CHANGES file summarizes the most important improvements of this release.

Amongst those 1800 patches, 143 patches were contributed by Bootlin. Our most significant contributions for this release have been:

  • Addition of a package for the wf111 WiFi drivers. They allow to use a WiFi chip from Bluegiga, which is being used in one of our customer projects.
  • Addition of the support for using uClibc-ng. uClibc-ng is a “collaborative” fork of the uClibc project, which aims at doing more regular releases and have better testing. Maintained by Waldemar Brodkorb, the project has already seen several releases since its initial 1.0 release. Waldemar is merging patches from the original uClibc regularly, and adding more fixes. It allows Buildroot and other uClibc users to have well-identified uClibc stable versions instead of a 3 years old 0.9.33.2 version with dozens of patches on top of it. uClibc-ng is not currently used as the default uClibc version as of 2015.05, but it might very well be the case in 2015.08.
  • Important internal changes to the core infrastructure. Until this release, the make legal-info, make source, make external-deps and make source-check logic was relying only on the Buildroot configuration file. This was giving correct results for target packages which all have a corresponding Buildroot configuration option, but not for host packages (which for most of them don’t have Buildroot configuration options). Only a manual two-level dependency handling was done for the host packages for the above mentioned commands. With our work, the handling of those features has been moved to be part of the package infrastructure itself, so it’s using proper make recursivity to resolve the entire dependency tree. Due to this, the results of make legal-info or make external-deps may be longer following this release, but it’s because it’s now actually correct and complete. You can look at the patches for more details, but these changes are very deep into the core Buildroot infrastructure.
  • Large number of build fixes. We contributed 52 patches fixing issues detected by the autobuild infrastructure.
  • Addition of the imx-usb-loader package, which can be used to load over USB a new bootloader on i.MX6 platforms, even if the platform has no bootloader or a broken bootloader. We also use it as part of one of our customer projects.

With 142 patches, Bootlin engineer Thomas Petazzoni is the third contributor to this release by number of patches:

git shortlog -s -n 2015.02..

   397	Bernd Kuhls
   393	Gustavo Zacarias
   142	Thomas Petazzoni

But by far, our most important contribution by far for this release is Thomas acting as the interim maintainer: on the total of 1800 patches merged for this release, Thomas has been the committer of 1446 patches. He has therefore been very active in merging the patches contributed by the Buildroot community.

There are already some very interesting goals set for the Buildroot 2015.08 release, as you can see on the Buildroot release goals page.

Also, if you want to learn Buildroot in details, do not hesitate to look at our Buildroot training course!

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.

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.

2015 Q1 newsletter

The Bootlin team wishes you a Happy New Year for 2015, with plenty of optimism and energy!

Bootlin is happy to take this opportunity to share some news about the latest training and contribution activities of the company.

Kernel contributions

We continue to work significantly on support for various ARM processors in the Linux kernel. Our contributions to the latest kernel releases:

  • 147 patches from Bootlin merged in Linux 3.17, making Bootlin the 14th contributing company for this release by number of patches. See our blog post about this release.
  • 155 patches from Bootlin merged in Linux 3.18, making Bootlin the 14th contributing company. See our blog post for more details.
  • For the upcoming 3.19 release, we already have 196 patches merged.

One of the highlights was that we added support for the Atmel SAMA5D4 SoC to the Linux kernel even before the new chip was announced by Atmel! That’s a very positive sign for customers when an SoC is supported in the mainline Linux kernel sources right at product launch, instead of having to wait for months or years before the community developers can catch up.

Note that we also added Atmel SAMA5D3 SoC support to Xenomai, a hard real-time extension for the Linux kernel. Thanks to this, the Atmel SAMA5D3 Xplained board can now run with the 2.6.x release of Xenomai.

Besides those highlights, most of our kernel contributions were as usual centered around support for specific families of ARM processors: CPUs from Marvell EBU and Marvell Berlin, from Atmel and from Allwinner. We added a new network driver for some Marvell EBU processors, added SMP support for Marvell Berlin processors, added a DMA controller driver for Allwinner processors, and did a lot of maintenance work to support these processors in the mainline kernel.

Buildroot contributions

Our involvement into the Buildroot project, a popular embedded Linux build system, is going on. Our engineer Thomas Petazzoni contributed 136 patches to the 2014.11 release, making him the second contributor by number of patches. Thomas is also taking care of the maintenance of the project on a more regular basis, reviewing and merging patches from contributors.

OpenWRT contributions

We have recently started contributing to the OpenWRT project: improve the kernel support to use defconfig, introduce a notion of board to support different NAND configurations for each platform. We will soon to be pushing support for the Marvell Armada 385 platform, and improved support for the Marvell Armada 370 and XP platforms.

Recent projects

Besides our publicly visible kernel contributions, we do also work on customer-specific projects. Among the latest projects we have done:

  • Develop a complete Board Support Package for a custom TI AM335x based platform: U-Boot porting, Linux kernel porting, and development of a Yocto-generated system. Qt5 and OpenGL are used for the graphical application, a fairly complex audio setup had to be supported, and many traditional interfaces as well (USB Host and Device, CAN, display, etc.)
  • Develop a Board Support Package for a custom Marvell Armada 375 based platform for a telephony system. Not only did we port a Linux kernel on this platform, but we also wrote several DAHDI drivers to interface the telephony hardware of the platform with Asterisk.
  • NAND and UBI stress-testing for a customer-specific Freescale i.MX28 based platform. We improved the NAND controller driver, added a new MTD tool to generate bitflips, and did some long term power-cut stress-testing of the UBIFS setup to ensure the reliability of the platform. See our kernel driver improvements and the new nandflipbits tool.
  • Adapt an existing ADC driver for a customer-specific platform to the modern Industrial Input Output (IIO) subsystem of the kernel.

Conferences: FOSDEM, Embedded World and Embedded Linux Conference

Several Bootlin engineers will participate to the FOSDEM conference, taking place on January 30 and February 1 in Brussels. In addition, Thomas Petazzoni will be participating to the Buildroot Developers Meeting that takes place right after FOSDEM in the Google offices in Brussels.

Bootlin will participate to the Embedded World trade show on February 24-26 in Nuremberg, Germany. We will be present at Atmel’s booth and visiting exhibitor booths too. For people in Europe, this will be a good opportunity to ask your questions about our embedded Linux training and engineering services. In particular, you will be able meet our engineers Alexandre Belloni, Thomas Petazzoni (CTO), Michael Opdenacker (CEO) and Anja Roubin as well, the new person in charge of our training services.

This year again, most of the Bootlin engineering team (7 engineers) will participate to the 2015 edition of the Embedded Linux Conference on March 23-25 in San Jose, California. We submitted several talk proposals, but our presence won’t depend on the number of talks that are eventually accepted. Participating to this conference, and to its European edition in the fall too, is very important for us to make sure we do not miss any of the interesting developments in the technical community, and above all to strengthen our ties with the community developers. This helps us to be good technical trainers with valuable experience and information to share. The strong relationships with other community developers (and in particular with project maintainers) also help us when our customers contract us to add hardware support or features to official versions of community projects such as the Linux kernel.

Free technical documentation resources

Since the latest edition of this newsletter, we started running our new Yocto Project and OpenEmbedded course, and we released all training materials for this course. As usual, such materials are meant to be used by people learning by themselves too. All you have to do is get your hands on a Beaglebone Black board, read the slides and try to do the labs!

Our engineer Maxime Ripard also contributed documentation about the DMAEngine subsystem in the Linux kernel.

Upcoming training sessions – Now in Paris too!

The news is that we will run new public sessions in Paris, in addition to the ones we usually organize in Toulouse, Avignon and Lyon in France. We are starting with our embedded Linux and our Yocto courses, but other topics will follow too.

So, here are our next session dates:

See sessions and dates for more details. Of course, we can also deliver our training courses at your location, anywhere in the world. Feel free to contact us for a quote.

If you are interested in more frequent news about Bootlin, you can follow us on Twitter, Google+ and LinkedIn.

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!

Yocto Project and OpenEmbedded training materials published

Yocto Project and OpenEmbedded trainingAs we announced in out latest newsletter, we recently launched a new Yocto Project and OpenEmbedded development training course.

The first public session will take place in Toulouse, France on November 18-20 and we still have a few seats available. We can also deliver on-site sessions at the location of your choice, see our Training cost and registration page for more details.

However, what brings us here today is that we are happy to announce the release of all the training materials of this new course: like all Bootlin training materials, they are available under the Creative Commons Attribution Share-Alike license.

Fully committed to its knowledge sharing principles, Bootlin has chosen to publish those materials even before the first session has taken place.

The materials available are:

We of course welcome reviews, feedback and comments about these materials, in order to improve them where needed. Send us your comments!

Bootlin registered as Yocto Project Participant.

Yocto_Project_Badge_Participant_Web_RGB
Earlier this month, Bootlin applied and was elected Yocto Project Participant by the Yocto Project Advisory Board. This badge is awarded to people and companies actively participating to the Yocto Project and promoting it.

We have mainly contributed to the meta-fsl-arm and meta-fsl-arm-extra layers but we also have some contributions in OpenEmbedded Core and in the meta-ti layer.

Bootlin offers a Yocto Project and OpenEmbedded training course that we can deliver at your location, or that you can attend by joining one of our public sessions. Our engineers are also available to provide consulting and development services around the Yocto Project, to help you use this tool for your embedded Linux projects. Do not hesitate to contact us!

Linux 3.17 released, Bootlin 14th contributing company

PenguinLinux 3.17 has been released a few days ago. One can read the coverage of the 3.17 merge window by LWN (part 1 and part 2) to get some details about the new features brought by this kernel release.

As usual, Bootlin has continued to contribute a significant number of patches to this kernel release, even though with 147 patches, our contribution has been less important than for the 3.16 release for which we contributed 388 patches. With 147 patches merged, Bootlin is the 14th contributing company by the number of patches, according to the statistics.

Our contributions remain mainly focused on support for various families of ARM processors:

  • For the Atmel processors
    • Switched to use the generic PWM framework instead of custom PWM drivers. This allowed to remove three obsolete drivers (a backlight driver, a LED driver and a misc driver). This work was done by Alexandre Belloni.
    • Continue the migration to the common clock framework, by adding clock information to a large number of Atmel boards. Done by Alexandre Belloni.
    • Migration of the interrupt controller driver from arch/arm/mach-at91 to drivers/irqchip. Done by Boris Brezillon.
  • For the Marvell EBU processors (Armada 370, 375, 38x, XP)
    • Addition of the mvpp2 network driver, which is used on the Armada 375 SoC. This work was done by Marcin Wojtas from Semihalf, with a lot of review, help and debugging done by Ezequiel Garcia.
    • Addition of cpuidle support for Armada 370 and Armada 38x. This work was done by Grégory Clement and Thomas Petazzoni.
    • Preparation work to enable cpufreq on Armada XP was merged. However the feature cannot be enabled yet due to missing features in the cpufreq-cpu0 driver. Done by Thomas Petazzoni.
  • For Marvell Berlin processors
    • SMP support has been added. Done by Antoine Ténart.
    • Description of the I2C controller has been added to the Device Tree. Done by Antoine Ténart.
    • Support for AHCI has been added. Also done by Antoine Ténart.
  • For Allwinner processors
    • New DMA controller driver for the DMA engine of the Allwinner A31 SoC. Done by Maxime Ripard.
    • A number of fixes and improvements to the pin-muxing driver for Allwinner platforms. Done by Maxime Ripard.
    • Support for the Merrii A31 Hummingbird board has been added. Done by Maxime Ripard.
  • Other changes
    • Addition of a helper function to convert an ONFI timing mode into the according NAND timings. Done by Boris Brezillon.
    • Addition of a driver for the Foxlink FL500WVR00-A0T panel. Done by Boris Brezillon.

The detailed list of our contributions:

Atmel SAMA5D4 support in the mainline Linux kernel

Atmel SAMA5D4Atmel announced its new ARM Cortex-A5-based SoC on October 1, the SAMA5D4. Compared to the previous Cortex-A5 SoC from Atmel, the SAMA5D3, this new version brings a L2 cache, NEON, a slightly different clock tree, a hardware video decoder, and Trustzone support.

Bootlin engineers have worked since several months with Atmel engineers to prepare and submit the support for this new SoC to the mainline Linux kernel. We have actually submitted the patches on September, 11th, almost a month before the official release of the new chip! This means that most of the support for this new SoC will already be part of the upcoming 3.18 kernel release. Meanwhile, it is already possible to test it out by using the linux-next repository.

There are however a few pieces missing pieces to support all aspects of the chip:

  • A few patches are needed to get proper NAND flash controller support.
  • The DMA controller is brand new in this SAMA5D4 SoC, and the DMA controller driver has not yet been merged, even though the patches have been posted a long time ago, and are currently in their sixth iteration.
  • Display support, through a DRM/KMS driver, is also being reviewed. The driver, written by Bootlin engineer Boris Brezillon, was initially designed for the sam9x5 and sam5d3, but will be compatible with sama5d4 as well. The patch series is currently in its seventh iteration.

The last big missing part is support for non-secure mode: for the moment, the system always runs in secure mode. Running the kernel in non-secure mode will require some more work but an initial version will probably be pushed during the next development cycle.

Besides this work on SAMA5D4 support ahead of its public release, Bootlin is also doing a lot of maintenance work on all the Atmel ARM platforms in the Linux kernel: migration to the Device Tree, to the clock framework, to several other new subsystems, etc. See the summary of our kernel contributions to 3.16, 3.15 and 3.14.

Through this work, the Bootlin engineering team has a very deep knowledge of the Linux support for Atmel ARM processors. Do not hesitate to contact us if you need help to bring up the bootloader or kernel on your custom Atmel ARM platform! It is also worth mentioning that Free-Electrons is part of the Atmel partner ecosystem.