On December 10th 2015, Bootlin engineer Alexandre Belloni gave a half-day seminar on the topic of Porting Linux on an ARM board in Toulouse, France. This seminar covers topics like porting the bootloader, understanding the concept of the Device Tree, writing Linux device drivers and more. With ~50 persons from various companies attending and lots of questions from the audience, this first edition has been very successful, which shows an increasing interest for using Linux on ARM platforms in the industry.
We are now publishing the 220 slides materials from this seminar, available in PDF format. Like all our training materials, this material is published under the Creative Commons BY-SA 3.0 license, which allows everyone to re-use it for free, provided the derivative works are released under the same license. We indeed re-used quite extensively parts of our existing training materials for this half-day seminar.
We plan to give this half-day seminar in other locations in France in 2016. Contact us if you are interested in organizing a similar seminar in your area (we are happy to travel!).
Our French readers are most likely aware of the existence of a magazine called OpenSilicium, a magazine dedicated to embedded technologies, with frequent articles on platforms like the Raspberry Pi, the BeagleBone Black, topics like real-time, FPGA, Android and many others.
Issue #17 of the magazine has been published recently, and features a 14-pages long article Introduction to the Device Tree on ARM, written by Bootlin engineer Thomas Petazzoni.
Besides Thomas article, many other topics are covered in this issue:
- A summary of the Embedded Linux Conference Europe 2015 in Dublin
- Icestorm, a free development toolset for FPGA
- Using the Armadeus APF27 board with Yocto
- Set up an embedded Linux system on the Zynq ZedBoard
- Debugging with OpenOCD and JTAG
- Usage of the mbed SDK on a small microcontroller, the LPC810
- Optimization of the 3R strems decompression algorithm
The FOSDEM conference will take place on January 30-31 in Brussels, Belgium. Like every year, there are lots of interesting talks for embedded developers, starting from the Embedded, Mobile and Automotive Devroom, but also the Hardware track, the Graphics track. Some talks of the IoT and Security devrooms may also be interesting to embedded developers.
Thomas Petazzoni, embedded Linux engineer and CTO at Bootlin, will be present during the FOSDEM conference. Thomas will also participate to the Buildroot Developers Meeting that will take place on February 1-2 in Brussels, hosted by Google.
Linux 4.4 has been released, a week later than the normal schedule in order to allow kernel developers to recover from the Christmas/New Year period. As usual, LWN has covered the 4.4 cycle merge window, in two articles: part 1 and part 2. This time around, KernelNewbies has a nice overview of the Linux 4.4 changes. With 112 patches merged, we are the 20th contributing company by number of patches according to the statistics.
Besides our contributions in terms of patches, some of our engineers have also become over time maintainers of specific areas of the Linux kernel. Recently, LWN.net conducted a study of how the patches merged in 4.4 went into the kernel, which shows the chain of maintainers who pushed the patches up to Linus Torvalds. Bootlin engineers had the following role in this chain of maintainers:
- As a co-maintainer of the Allwinner (sunxi) ARM support, Maxime Ripard has submitted a pull request with one patch to the clock maintainers, and pull requests with a total of 124 patches to the ARM SoC maintainers.
- As a maintainer of the RTC subsystem, Alexandre Belloni has submitted pull requests with 30 patches directly to Linus Torvalds.
- As a co-maintainer of the AT91 ARM support, Alexandre Belloni has submitted pull requests with 46 patches to the ARM SoC maintainers.
- As a co-maintainer of the Marvell EBU ARM support, Gregory Clement has submitted pull requests with a total of 33 patches to the ARM SoC maintainers.
Our contributions for the 4.4 kernel were centered around the following topics:
- Alexandre Belloni continued some general improvements to support for the AT91 ARM processors, with fixes and cleanups in the
at91_can drivers and some clock driver improvements.
- Alexandre Belloni also wrote a driver for the RV8803 RTC from Microcrystal.
- Antoine Ténart added PWM support for the Marvell Berlin platform and enabled the use of cpufreq on this platform.
- Antoine Ténart did some improvements in the
pxa3xx_nand driver, still in preparation to the addition of support for the Marvell Berlin NAND controller.
- Boris Brezillon did a number of improvements to the
sunxi_nand driver, used for the NAND controller found on the Allwinner SoCs. Boris also merged a few patches doing cleanups and improvements to the MTD subsystem itself.
- Boris Brezillon enabled the cryptographic accelerator on more Marvell EBU platforms by submitting the corresponding Device Tree descriptions, and he also fixed a few bugs found in the driver
- Maxime Ripard reworked the interrupt handling of per-CPU interrupts on Marvell EBU platforms especially in the
mvneta network driver. This was done in preparation to enable RSS support in the
- Maxime Ripard added support for the Allwinner R8 and the popular C.H.I.P platform.
- Maxime Ripard enabled audio support on a number of Allwinner platforms, by adding the necessary clock code and Device Tree descriptions, and also several fixes/improvements to the ALSA driver.
The details of our contributions for 4.4:
- Alexandre Belloni (22):
- Antoine Tenart (18):
- Boris BREZILLON (29):
- Gregory CLEMENT (2):
- Maxime Ripard (36):
- Michael Opdenacker (4):
- Thomas Petazzoni (3):
The 4.3 kernel release has been released just a few days ago. For details about the big new features in this release, we as usual recommend to read LWN.net articles covering the merge window: part 1, part 2 and part 3.
According to the KPS statistics, there were 12128 commits in this release, and with 110 patches, Bootlin is the 20th contributing company. As usual, we did some contributions to this release, though a somewhat smaller number than for previous releases.
Our main contributions this time around:
- On the support for Atmel ARM SoCs
- Alexandre Belloni contributed a fairly significant number of cleanups: description of the slow clock in the Device Tree, removal of left-over from platform-data usage in device drivers (no longer needed now that all Atmel ARM platforms use the Device Tree).
- Boris Brezillon contributed numerous improvements to the
atmel-hlcdc, which is the DRM/KMS driver for the modern Atmel ARM SoCs. He added support for several SoCs to the driver (SAMA5D2, SAMA5D4, SAM9x5 and SAM9n12), added PRIME support, and support for the RGB565 and RGB444 output configurations.
- Maxime Ripard improved the dmaengine drivers for Atmel ARM SoCs (
at_xdmac) to add memset and scatter-gather memset capabilities.
- On the support for Allwinner ARM SoCs
- Maxime Ripard converted the SID driver to the newly introduced nvmem framework. Maxime also did some minor pin-muxing and clock related updates.
- Boris Brezillon fixed some issues in the NAND controller driver.
- On the support for Marvell EBU ARM SoCs
- Thomas Petazzoni added the initial support for suspend to RAM on Armada 38x platforms. The support is not fully enabled yet due to remaining stability issues, but most of the code is in place. Thomas also did some minor updates/fixes to the XOR and crypto drivers.
- Grégory Clement added the initial support for standby, a mode that allows to forcefully put the CPUs in deep-idle mode. For now, it is not different from what cpuidle provides, but in the future, we will progressively enable this mode to shutdown PHY and SERDES lanes to save more power.
- On the RTC subsystem, Alexandre Belloni did numerous fixes and cleanups to the
rx8025 driver, and also a few to the
- On the common clock framework, Boris Brezillon contributed a change to the
->determinate_rate() operation to fix overflow issues.
- On the PWM subsystem, Boris Brezillon contributed a number of small improvements/cleanups to the subsystem and some drivers: addition of a
pwm_is_enabled() helper, migrate drivers to use the existing helper functions when possible, etc.
The detailed list of our contributions is:
- Alexandre Belloni (53):
- Antoine Ténart (1):
- Boris Brezillon (22):
- Gregory CLEMENT (3):
- Maxime Ripard (19):
- Thomas Petazzoni (13):