Embedded Bits attends Embedded Linux Conference Europe

A few weeks ago the engineering team of Embedded Bits attended the Embedded Linux Conference Europe (ELCE) held this year in Düsseldorf, Germany. As described by The Linux Foundation: “The conference is the premier vendor-neutral technical conference for companies and developers using Linux in embedded products. This conference, now in it’s 8th year, has the largest collection of sessions dedicated exclusively to embedded Linux and embedded Linux developers. ELCE is embedded Linux experts talking about solutions to your embedded Linux problems. ELCE consists of 3 days of presentations, tutorials and Bird-of-a-Feather sessions.”

Attending the event provides our engineers with a valuable opportunity to keep up to date with the ever changing Linux landscape and to mix with the community shaping its future.

This year we also presented a talk titled ’12 Lessons Learnt in Boot Time Reduction’, slides for this talk are available here with videos expected to follow in due course.

Andrew Murray presenting  '12 Lessons Learnt in Boot Time Reduction' at ELCE

Andrew Murray presenting ’12 Lessons Learnt in Boot Time Reduction’

Continue Reading →

Embedded Bits sponsors Aberystwyth Students for SailBot 2014 Competition

Embedded Bits is proud to be sponsoring a group of 6 British undergraduates from Aberystwyth University to enter their team ‘Aber SailBot‘ into the 2014 International Robotic Sailing Regatta held next month in San Francisco.

The ‘SailBot’ International Robotic Sailing Regatta is a robotic sailing competition in which teams of university and college students compete. The goal is to create an unmanned sail boat that navigates through a variety of challenges with limited, if any, human control. The event outline describes events such as fleet racing, station keeping, autonomous navigation, judges evaluation and a long distance run (10 km!). When you consider the hurdles that must be overcome to succeed in these challenges you’ll quickly see how the regatta provides a great opportunity for it’s participants to develop a broad range of multi-disciplinary skills.

Continue Reading →

Understanding Boot Time Variability with the Zynq ZC702

One of the challenges of boot time reduction is understanding why the boot time of a device may vary with each reboot, this is important because we strive not only for minimal boot times but for consistently minimal boot times. This post uses a Xilinx Zynq platform to demonstrate how we can measure, understand and find the causes of boot time variability. We’ll also provide an insight into how we use automation at Embedded Bits to improve the process.

To explore boot time variability we’ll be using Xilinx’s Zynq-7000 based ZC702 evaluation kit. The Zynq range of SoC’s cleverly combine a dual-core Cortex A9 MPCore with programmable logic (Artix-7 FPGA). The ZC702 is provided with a ‘Base Targeted Reference Design (TRD)‘ (a Linux distribution on an SD card) – we’ll use this to perform our investigation against.

By its very nature, the only way to measure variability is to measure the boot time over and over again during successive runs (time consuming!). At Embedded Bits where possible we install development boards into our board farm – along with providing benefits such as board sharing and collaborative working, it crucially provides automation – we’ll take advantage of this as we explore boot time variability. We’ll start by instructing the farm to repeatedly reboot the board whilst capturing boot logs.

Continue Reading →

Embedded Bits Joins ARM® Connected Community®

Bournemouth – 11th November, 2013 – Embedded Bits, a leading provider of optimized embedded solutions today announced it is a new member in the ARM Connected Community, the industry’s largest ecosystem of ARM-based technology and services. As part of the ARM Connected Community, Embedded Bits will gain access to a full range of resources to help it market and deploy innovative solutions that will enable developers to get their ARM Powered® products to market faster.

Continue Reading →

One Second Cold Linux Boot with OpenCV

As a means to demonstrate our boot time reduction skills, last November we put together a demo which shows an Embedded Linux device cold-booting in less than a second.

The demo consists of an ARM Cortex-A9 based device connected to a camera, 7-segment display and HDMI display. The device uses the camera along with OpenCV based software to count the number of yellow balls present on the table beneath and display the count on the 7-segment display. The device also outputs the camera image and ball detection illustration on the LCD display.

The device is able to do all this within one second of software reset, here is the video:

We’ve put lots of information on how we achieved this on our Boot Time Demos page which can be found here.

Continue Reading →

Scripted Modification of Kernel Configs

Whilst recently making changes to an embedded Linux distribution I came across a modest but very powerful feature of the kernel’s tried and test Kconfig system. What I discovered was a script that allows for scripted modification of kernel configuration files, i.e. .config and *_defconfig files.

The script, which first appeared in the 2.6.29 kernel can be found in the kernel’s scripts/ directory and its usage is very straight forward. Here are some examples:

# Enable timing information on printk's
./scripts/config --enable CONFIG_PRINTK_TIME

# Change the path of the initramfs
./scripts/config --set-str CONFIG_INITRAMFS_SOURCE ../fs

# Increase the size of the kernel log buffer
./scripts/config --set-val CONFIG_LOG_BUF_SHIFT 14

# Enable LZO compression for SquashFS in ~/test_defconfig
./scripts/config --file ~/test_defconfig --enable CONFIG_SQUASHFS
Continue Reading →

Using ‘delay_use’ to speed up USB Enumeration

Whilst investigating ways to improve the cold boot time of embedded Linux I came across a little known control parameter of the USB stack known as ‘delay_use‘. It’s a parameter that describes the amount of time given to Mass Storage Devices to allow them to ‘settle down’ before being used. This article examines ‘delay_use’ and identifies how it may be used to reduce boot time and improve responsiveness.

Continue Reading →

Boot Time Reduction Training Courses

Embedded Bits is proud to announce that we will soon be offering public training events which teach the skills required to reduce the cold boot time of embedded Linux devices. This is offered as a one-day public training event or can be held on-site at your offices and customised for your needs. The course teaches everything you need to start making a big difference to your boot time.

We believe that having in house boot time reduction skills can provide a cost effective means to reducing and maintaining small boot times on your current and future projects.

For more information see our training page or register your interest by emailing training@embedded-bits.co.uk

Continue Reading →

Understanding “vmalloc region overlap”

I recently came across the following disconcerting message in my kernel’s boot output:

Truncating RAM at 40000000-5fffffff to -57ffffff (vmalloc region overlap).
...
Kernel command line: console=ttySC0,115200 mem=512M
...
Memory: 384MB = 384MB total

Which is the kernel’s way of saying “I understand there may be some RAM here – but I’m not going to use it all”. So what is the cause of this warning? And what do we need to do to reclaim that lost RAM?

Continue Reading →

A nasty string initialization bug in C

Today I encountered a bug that was quite difficult to find regarding strings. In order for strings to work they must be null-terminated, and this implies that an array of characters can contain a string with a length equal to the array size minus one, because there must be space for the null character. I found out that, when initializing array of chars with strings, the compiler does not complain if just the null character doesn’t fit.

Continue Reading →