The Barebox project has released version 2014.03.0 of its bootloader:New or updated Barebox features are:
- The i.MX25 and i.MX27 processors got support for initializing from devicetree now. For the other i.MX boards supported in Barebox, the devicetrees have been updated.
- Initial support for the MIPS Loongson architecture has been added.
- The UBIFS implementation is now able to read links.
- We can now automatically construct a console= parameter for the kernel, by reading the necessary information from the oftree.
- Several bugs have been fixed, i.e. for eMMC, SoC type detection for i.MX6, PFD clock gating, the ASIX AX88772B USB network card, NAND chip handing and SD cards on MX25.
- A new driver for the National Semiconductor DP83865 PHY has been added, and the Freescale MCIMX53-START-R is now supported and the support for Tegra20 was improved.
- The environment for the sandbox has been updated.
All in all, Barebox makes good progress. We see more and more community people working with it in the meantime.
The Barebox project has released version 2014.02.0 of its bootloader:New or updated Barebox features are:
- many bug fixes and improvements all over the code
- support for the OpenCores 10/100 Mbps ethernet MAC was added
- the IPU framebuffer driver (i.MX35) was improved and now supports clock calculation with low jitter. This enables the usage of external LVDS connected LC displays
- the memory management was changed and Barebox now finds a location where to store the ATAGS for the kernel parameters by its own in a generic way. All platforms now make use of it, so the platform specific code shrinks once more a little bit, due to the armlinux_set_bootparams() function is gone now.
During our embedded linux projects, the kernel engineers at Pengutronix do a lot of improvements which end up in the mainline kernel. Here's a short story about what went into the recently released 3.13:
SocketCAN maintainer Marc Kleine-Budde fixed a memory leak in the peak_usb driver. He found out that the flexcan driver used the wrong clock on MX5, which resulted in wrongly calculated bit rates. In the c_can driver, he fixed a "scheduling while atomic" bug. Other janitorial work has been done to the ti_hecc CAN driver and the CAN core.
Philipp Zabel works on graphics tasks on MX5 and MX6, both related ot the DRM driver and to the Video parts. He submitted a patch to the v4l2 subsystem which makes it possible to map DMABUF buffers with write permission. A spec violation regarding the setting of the pixel format and with invalid pixel formats for v4l2 has been fixed. He also implemented try_decoder_cmd to let userspace determine available commands and flags. For the CODA video encoder/decoder found on i.MX27/53/6, debugging was improved. The picture type reported by the CODA unit is now properly propagated into the software framework, and the driver does now correctly detect different CODA hardware types. The compressed flag is now fixed in output buffers and the buffer handling in case of a stream-off is improved. On CODA7541, the video encoder/decoder component in MX5 and MX6, the driver is now able to handle more than 4 concurrent accesses. In the v4l2 driver core, Philipp added patches which improve DMABUF and user pointer handling. For the i.MX DRM driver which is currently in staging, Philipp added support to make use of the PRIME functionality introduced by the "drm: GEM CMA: Add DRM PRIME support" patch and added DRM plane support. He removed the old ipu_framebuffer data structure from the kernel and added suport for the BGR888 graphics format to the IPU driver and its display controller and for the BGR565 format. In order to support small displays on MX6, he improved the end of line handling. As the IPU is used both on the display output and video input side, he improved the handling of drm_fourcc format description.
Michael Grzeschik fixed a bug in the USB gadget subsystem for composite drivers, which happened when an USB device got unplugged while still being used. Michael is working on improving the ci13xxx USB controller driver, which had a lot of issues recently. A lot more patches are currently pending for this controller.
During the 3.13 cycle, Uwe Kleine-König mainlined the EFM32 Cortex-M3 processor platform. During this work, EFM32 got DEBUG_LL functionality and proper timekeeping, and a bug with GPIO bitbanging was fixed. Uwe started to package the CAN utilities for debian. As a preparation, he went through the CAN files in mainline and improved the copyrights in the headers. Uwe also fixed some issues in the fsl-dspi driver. Uwe helped the transition to clockevents_config_and_register function, which had to be reverted for AT91RM9200 some time ago. At that time, a rounding problem let this driver fail, due to the bug in the driver core; the mechanism was also added for the DaVinci processor family. Other janitorial work has been done in the CSR SiRF watchdog driver.
Markus Pargmann hunted several audio issues this time. One of them was caused by locking issues in the mxs-dma driver for MX28. A patch hit mainline which fixes the locking in this driver. A second bug in this driver happened after a channel reset. Now that the issue is fixed, the state is set correctly after a reset occured. The channel reset does also seem to have a hardware issue: when being in READ_FLUSH state, the dma controller could stop working. A fix was added to the kernel to avoid this situation. Another patch fixes the correct residuum reporting for cyclic DMA; the DMA interrupt handler so far formerly handled all available channel interrupts it could finde; now the interrupt handling was fixed to handle only the relevant channels. On AM335x, Markus fixed an error with rx handling in the c_can driver and improved the IRQ register checking. The w1-gpio driver was changed to use devm_* functions. While doing so, the error handling for this driver was improved. All in all, the mainline situation improves slow but constantly for AM335x. For i.MX27, Markus added the pincontrol driver, with a core driver to access registers on MX1/21/27. On MX28, Markus fixed the error handling of the serial audio interface (SAIF) and improved the consumption of trigger commands and its state handling.
Steffen Trumtrar mainly worked on mainline support for the SoCFPGA FPGA plus ARM-SOC made by Altera. He improved the clock management and improved the devicetrees: an important part of this work was to distribute the right devicetree nodes to the different dtsi files. He added support for the Terasic SoCkit board, a whitespread development kit for the SoCFPGA. Additionally, he fixed a bug to handle PWM correctly when being initialized from oftree. He also worked on the MC13783 power controller and added more infrastructure (i.e. routes, muxes, switches) and more mixer controls to the audio part to the mc13783.
Jan Lübbe added support for oftree initialisation to the AT25 SPI EEPROM driver.
Sascha Hauer fixed the event clearing in the i.MX6 DRM driver for the rare case when a userspace program exits exactly during a page flip.
Jürgen Beisert improved the i.MX23/i.MX28 I2C controller driver and split up the functionality for the two different chips. The PIO mode does not work. He also worked on the Low Rate ADC driver currently in staging and added devicetree initialisation and interrupt support. He made it also possible now to distinguish MX23 and MX28 on runtime, so the same driver can now be used for both chips. As it was not possible to fix all remaining issues, he improved the TODO list in staging.
All in all, 3.13 was a busy cycle for the Pengutronix kernel team. The patch rate hitting mainline is nevertheless decreasing, as we are working on more complex components (i.e. the IPU graphics unit on MX6).
The PTXdist project has released version 2014.01.0 of the embedded linux build system:
The pakage templates for integrating self-written programs into a PTXdist BSP have been fixed. This mechanism lets you create a new set of build rules for packages with "simple" makefiles:
$ ptxdist newpacket src-make-prog
After answering a few questions, a template for the build rules and for the menu entries is created in rules/
If the program does not already exist (i.e. when starting a new program), ptxdist creates a Makefile and hello-world file in local_src/
With this release, the mechanism above was fixed to do the right thing.
Recently, the lowpan-tools package has been added, which contains several utilities for using the 6LoWPAN IPv6-over-802.15.4 wireless communication stack on Linux.
The lowpan-tools package had dependency issues regarding python. With the current updates, python is now only a dependency if really necessary. This improves the build time.
Introduction of a "staging" area:
Some packages have been moved into the newly introduced "staging" area: acpid, upstart and mplayer. These packages do not compile any more, but they are currently not so important for the maintainer team that they have already spent the effort to reactivate them and fix the bugs.
This is something where we hope for the wider community: if you are interested in getting these packages back into ptxdist mainline, please help us and send patches.
Some help texts in the ptxdist menus and the toplevel helpfile have been improved and reflect the behaviour of the code in a better way now.
The automatically generated ptxdistrc has been synchronized with the current configuration.
The build rules for Valgrind, the memory leak debug tool, got improved error messages, so it should now be easier to get a working configuration.
rc-once is ptxdist's method of doing certain things on the first boot of a freshly installed embedded system, i.e. when a new SSH host key needs to be created.
With this release, the error handling for rc-once has been improved, so that the user gets booted into rescue mode when rc-once fails.
A lot of small patches have been added, which affects packages like glib, the icu-tools (for C++/Java unicode encoding), libsndfile and JVisu. The SQL database SQ-Lite got cross compiling improvements, and GStreamer does now build properly with Bison 3. Additionally, the host-xz tool has been improved regarding its shared library handling, and some unused files have been removed.
All in all, it was a quiet cycle, as most developers have been out for christmas holidays for the last weeks.
New PTXdist features in 2013
The main new feature was the introduction and tuning of the toolchain 'wrapper': This wrapper ensures a new level of control about how a PTXdist project is build. In earlier days, the binary results relied more or less on the buildsystem each package comes with. With the new wrapper, a package's buildsystem calls the wrapper instead of gcc and other toolchain components, and all command line parameters given to it can be checked or extended. The wrapper provides enforcement of:
- user or project specific compile and link time parameters
- project and cross compile specific include and library search paths
- architecture specific settings and optimization
- link time optimization (omit unused libraries)
- runtime linker optimization
- hardening settings like built-in buffer overflow detection and read-only relocation tables
- checking all kind of include paths against illegal host paths
Using the wrapper improves the reliability of the PTXdist generated root filesystem and catches build failures and inconsistencies at a very early project state.
Basic support for the new graphical environment 'Wayland' was added. This addition is intended for development yet, because various different components Wayland depends on to provide a full featured environment for production are still missed.
For special hardened target systems, PTXdist supports the SELINUX infrastructure. As there is no generic way to configure and parametrize SELINUX, PTXdist cannot support this out-of-the-box. Adding the policies to make use of the SELINUX features is still something an experienced developer must manage manually.
Since mid of 2013 PTXdist can handle plain git and subversion repositories in addition to its handling of archives and directories to get the sources of a package. This new feature simplifies project development in conjunction with application development.