Like every year for more than 10 years, Bootlin engineers will participate to the next Embedded Linux Conference, which takes place in Portland on March 12-14. Of course, it will be our first ELC with our new company name! In total, eight engineers from Bootlin will participate to the event. Maxime Chevallier, who joined Bootlin last Monday, will be attending the conference, his first one with a Bootlin hat (but Maxime has already been a speaker at the last Embedded Linux Conference Europe).
We will also be giving a number of talks, tutorials or moderating Bird of a Feather sessions:
Miquèl Raynal will give a talk titled Drive your NAND with Linux, sharing his experience rewriting the NAND controller driver for Marvell platforms, significantly improving the NAND core subsystem along the way, making it more flexible to support advanced NAND controllers.
We’re really happy to again meet the embedded Linux open-source community at this event! It is worth mentioning that following this event, Bootlin CTO Thomas Petazzoni will be in the Silicon Valley on March 15-16, available for business meetings: do not hesitate to contact us if you’re interested.
Last month, five engineers from Free Electrons participated to the Embedded Linux Conference in Portlan, Oregon. It was once again a great conference to learn new things about embedded Linux and the Linux kernel, and to meet developers from the open-source community.
Of course, the slides from many other talks are progressively being uploaded, and the Linux Foundation published the video recordings in a record time: they are all already available on Youtube!
Below, each Free Electrons engineer who attended the conference has selected one talk he/she has liked, and gives a quick summary of the talk, hopefully to encourage you watch the corresponding video recording.
Using SWupdate to Upgrade your system, Gabriel Huau
Gabriel Huau from Witekio did a great talk at ELC about SWUpdate, a tool created by Denx to update your system. The talk gives an overview of this tool, how it is working and how to use it. Updating your system is very important for embedded devices to fix some bugs/security fixes or add new features, but in an industrial context, it is sometimes difficult to perform an update: devices not easily accessible, large number of devices and variants, etc. A tool that can update the system automatically or even Over The Air (OTA) can be very useful. SWUpdate is one of them.
SWUpdate allows to update different parts of an embedded system such as the bootloader, the kernel, the device tree, the root file system and also the application data.
It handles different image types: UBI, MTD, Raw, Custom LUA, u-boot environment and even your custom one. It includes a notifier to be able to receive feedback about the updating process which can be useful in some cases. SWUPdate uses different local and OTA/remote interfaces such as USB, SD card, HTTP, etc. It is based on a simple update image format to indicate which images must be updated.
Many customizations can be done with this tool as it is provided with the classic menuconfig configuration tool. One great thing is that this tool is supported by Yocto Project and Buildroot so it can be easily tested.
Khem Raj from Comcast is a frequent speaker at the Embedded Linux Conference, and one of his strong fields of expertise is C compilers, especially LLVM/Clang and Gcc. His talk at this conference can interest anyone developing code in the C language, to know about optimizations that the compilers can use to improve the performance or size of generated binaries. See the video and slides.
One noteworthy optimization is Clang’s -Oz (Gcc doesn’t have it), which goes even beyond -Os, by disabling loop vectorization. Note that Clang already performs better than Gcc in terms of code size (according to our own measurements). On the topic of bundle optimizations such as -O2 or -Os, Khem added that specific optimizations can be disabled in both compilers through the -fno- command line option preceding the name of a given optimization. The name of each optimization in a given bundle can be found through the -fverbose-asm command line option.
Another new optimization option is -Og, which is different from the traditional -g option. It still allows to produce code that can be debugged, but in a way that provides a reasonable level of runtime performance.
On the performance side, he also recalled the Feedback-Directed Optimizations (FDO), already covered in earlier Embedded Linux Conferences, which can be used to feed the compiler with profiler statistics about code branches. The compiler can use such information to optimize branches which are the more frequent at run-time.
Khem’s last advise was not to optimize too early, and first make sure you do your debugging and profiling work first, as heavily optimized code can be very difficult to debug. Therefore, optimizations are for well-proven code only.
Note that Khem also gave a similar talk in the IoT track for the conference, which was more focused on bare-metal code optimization code and portability: “Optimizing C for microcontrollers” (slides, video).
A Journey through Upstream Atomic KMS to Achieve DP Compliance, Manasi Navare
This talk was about the journey of a new comer in the mainline kernel community to fix the DisplayPort support in Intel i915 DRM driver. It first presented what happens from the moment we plug a cable in a monitor until we actually see an image, then where the driver is in the kernel: in the DRM subsystem, between the hardware (an Intel Integrated Graphics device) and the libdrm userspace library on which userspace applications such as the X server rely.
The bug to fix was that case when the driver would fail after updating to the requested resolution for a DP link. The other existing drivers usually fail before updating the resolution, so Manasi had to add a way to tell the userspace the DP link failed after updating the resolution. Such addition would be useless without applications using this new information, therefore she had to work with their developers to make the applications behave correctly when reading this important information.
With a working set of patches, she thought she had done most of the work with only the upstreaming left and didn’t know it would take her many versions to make it upstream. She wished to have sent a first version of a driver for review earlier to save time over the whole development plus upstreaming process. She also had to make sure the changes in the userspace applications will be ready when the driver will be upstreamed.
The talk was a good introduction on how DisplayPort works and an excellent example on why involving the community even in early stages of the development process may be a good idea to quicken the overall driver development process by avoiding complete rewriting of some code parts when upstreaming is under way.
Stephen did a great talk about one thing that is often overlooked, and really shouldn’t: Timekeeping. He started by explaining the various timekeeping mechanisms, both in hardware and how Linux use them. That meant covering the counters, timers, the tick, the jiffies, and the various POSIX clocks, and detailing the various frameworks using them. He also explained the various bugs that might be encountered when having a too naive counter implementation for example, or using the wrong POSIX clock from an application.
Karim did a very good introduction to Android Things. His talk was a great overview of what this new OS from Google targeting embedded devices is, and where it comes from. He started by showing the history of Android, and he explained what this system brought to the embedded market. He then switched to the birth of Android Things; a reboot of Google’s strategy for connected devices. He finally gave an in depth explanation of the internals of this new OS, by comparing Android Things and Android, with lots of examples and demos.
Android Things replaces Brillo / Weave, and unlike its predecessor is built reusing available tools and services. It’s in fact a lightweight version of Android, with many services removed and a few additions like the PIO API to drive GPIO, I2C, PWM or UART controllers. A few services were replaced as well, most notably the launcher. The result is a not so big, but not so small, system that can run on headless devices to control various sensors; with an Android API for application developers.
Two weeks ago, the entire Free Electrons engineering team (9 persons) attended the Embedded Linux Conference in San Diego. We had some really good time there, with lots of interesting talks and useful meetings and discussions.
In addition to attending the event, we also participated by giving 5 different talks on various topics, for which we are publishing the slides:
All the other slides from the conference are available from the event page as well as from eLinux.org Wiki. All conferences have been recorded, and the videos will hopefully be posted soon by the Linux Foundation.
Like every year for about 10 years, the entire Free Electrons engineering team will participate to the next Embedded Linux Conference, taking place on April 4-6 in San Diego, California. For us, participating to such conferences is very important, as it allows to remain up to date with the latest developments in the embedded Linux world, create contacts with other members of the embedded Linux community, and meet the community members we already know and work with on a daily basis via the mailing lists or IRC.
Over the years, our engineering team has grown, and with the arrival of two more engineers on March 14, our engineering team now gathers 9 persons, all of whom are going to participate to the Embedded Linux Conference.
As usual, in addition to attending, we also proposed a number of talks, and some of them have been accepted and are visible in the conference schedule:
The Free Electrons team wishes you a Happy New Year for 2016, with many new bits to enjoy in your life!
Free Electrons is happy to take this opportunity to share some news about the latest training and contribution activities of the company.
Free Electrons work on the $9 computer
As announced in our previous newsletter, Free Electrons has been working intensively on developing the low-level software support for the first $9 computer, the C.H.I.P by Next Thing Co.
Next Thing Co. has successfully delivered an initial batch of platforms in September to the early adopters, and has started shipping the final products in December to thousands of Kickstarter supporters.
Those products are using the U-Boot and Linux kernel ported by Free Electrons engineers, with numerous patches submitted to the official projects and more to be submitted in the coming weeks and months:
Support for the C.H.I.P platform itself, in U-Boot and in the Linux kernel;
Support for audio on Allwinner platforms added to the Linux kernel;
Development of a DRM/KMS driver for the graphics controller found on Allwinner platforms;
Significant research effort on finding appropriate solutions to support Multi-Level Cell NANDs in the Linux kernel;
Enabling of the NAND storage in Single-Level Cell mode, until the Multi-Level Cell mode can be enabled reliably;
Addition of NAND support in the fastboot implementation of U-Boot, which is used to reflash the C.H.I.P.
We will continue to work on the C.H.I.P over the next months, with among other things more work on the graphics side and the NAND side.
The primary focus of the majority of our customer projects remain the Linux kernel, to which we continue to contribute very significantly.
We contributed 203 patches to this release, with a new IIO driver for the ADC found on Marvell Berlin platforms, a big cleanup to the support of Atmel platforms, improvements to the DMA controller driver for Atmel platforms, a completely new driver for the cryptographic accelerator found on Marvell EBU platforms.
In this cycle, our engineer Alexandre Belloni became the official maintainer of the RTC subsystem.
We have started to work on supporting the Linux kernel on several ARM 64 bits platforms from different vendors. We will be submitting the initial patches in the coming weeks and will progressively improve the support for those platforms throughout 2016 where a major part of our Linux kernel contribution effort will shift to ARM 64-bit.
Growing engineering team
Our engineering team, currently composed of six engineers, will be significantly expanded in 2016:
Two additional embedded Linux engineers will join us in March 2016 and will be working with our engineering team in Toulouse, France. They will help us on our numerous Linux kernel and Linux BSP projects.
An engineering intern will join us starting early February, and will work on setting up a board farm to contribute to the kernelci.org automated testing effort. This will help us do more automated testing on the ARM platforms we work on.
Upcoming training sessions
We have public training sessions scheduled for the beginning of 2016:
At the beginning of 2016, our entire engineering team will be attending the Embedded Linux Conference in San Diego (US), which means that no less than 9 engineers from Free Electrons will be present at the conference!
Porting Linux on ARM seminar
In December 2015, we gave a half-day seminar entitled “Porting Linux on ARM” in Toulouse (France). The materials, in English, are now freely available on our web site.
The Embedded Linux Conference Europe 2015 will take place on October 5-7 in Dublin, Ireland. As usual, the entire Free Electrons engineering team will participate to the event, as we believe it is one of the great way for our engineers to remain up-to-date with the latest embedded Linux developments and connect with other embedded Linux and kernel developers.
The conference schedule has been announced recently, and a number of talks given by Free Electrons engineers have been accepted:
Thomas Petazzoni will be teaching a 2 hours long Buildroot tutorial. If you want to get started with Buildroot, definitely a good opportunity! It will take place on Tuesday October 6 from 2 PM to 3:50 PM.
We submitted other talks that got rejected, probably since both of them had already been given at the Embedded Linux Conference in California: Maxime Ripard’s talk on dmaengine and Boris Brezillon’s talk on supporting MLC NAND (which we regret since Boris is currently actively working on this topic, so we are expecting to have some useful results by the time of ELCE, compared to his ELC talk which was mostly a presentation of the issues and some proposals to address them). Interested readers can anyway watch those talks and/or read the slides.
In addition to the Embedded Linux Conference Europe itself:
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 Free Electrons 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
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.
This time around, there will be three talks given by Free Electrons engineers:
Boris Brezillon will talk about MLC/TLC NAND Support: (New?) Challenges for the MTD/NAND Subsystem. Boris is Free Electrons MTD and NAND expert. He has recently contributed to the official Linux kernel a driver for the NAND controller available in Allwinner processors, and made some improvements to the NAND controller driver for Freescale i.MX28 processors.
The Free Electrons team wishes you a Happy New Year for 2015, with plenty of optimism and energy!
Free Electrons is happy to take this opportunity to share some news about the latest training and contribution activities of the company.
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 Free Electrons merged in Linux 3.17, making Free Electrons the 14th contributing company for this release by number of patches. See our blog post about this release.
155 patches from Free Electrons merged in Linux 3.18, making Free Electrons 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.
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.
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.
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.
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 Free Electrons 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.
Free Electrons 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 Free Electrons 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!
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.
The 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 Free Electrons, 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.