Posts Tagged ‘multi-core’

Dual Core Rockchip RK3066 mini PC Now Available for $88.88

August 15th, 2012 150 comments

Yesterday, I wrote about the first proper dual core Cortex A9 mini PC based on Rockchip RK3066, but it seemed only available to wholesalers, and I was not really sure it was ready for prime time. But today, one of my reader (Anders) pointed to a vendor selling the device on Aliexpress, and I found out it was sold for the lucky price of $88.88 + shipping.

Rockchip RK3066 mini PC

The picture above (Source: Aliexpress) is the first I’ve seen that looks real, and makes me feel a bit better about this device. The specs listed in Aliexpress are basically the same as I posted yesterday, except we learn that the Wi-Fi chip is Ralink Realtek 8188, more codecs are listed (but I would not read too much into that), and the casing has gone on a diet and shrunk to 8.8 * 3.5 * 1.2cm (vs 10.1 x 3.8 x 1.3cm yesterday).

The information about accessories is very confusing. One picture seems to show a power adapter, mini USB adapter, USB cable and Male to Male HDMI cable (why?) is included, but the description indicates a USB cable and small HDMI cable is provided.

Shipping options include China Mail (~$7), Hong Kong post (~$12) and several couriers. Please note that the vendor appears to be new with only one positive rating.

[Update: It is now available for $89 including shipping via Hong Kong Post from an Aliexpress seller that looks OK. He also posted some pictures of the PCB. The product name is UG802]

If you are the kind of person who likes to tinker with your device and change the source code, bear in mind that Rockchip is known for GPL violations, and it may be hard to get the GPL source, although it does not prevent some from trying.

LinuxCon North America 2012 Schedule

July 26th, 2012 No comments

LinuxCon (North America) 2012 will take place on August 29 – 31, 2012 at Sheraton Hotel & Marina, in San Diego, California. The event will be co-located with the Linux Kernel Summit, the Linux Plumbers Conference, and CloudOpen 2012.

LinuxCon consists of 3 days of keynotes, business and developers related sessions as well as tutorials. There will be over 80 sessions and keynotes during those 3 days. I’ll highlight a few sessions that I find particularly interesting and related to embedded Linux, software development and ARM.

August 29

10:45 – 11:30Life After BerkeleyDB: OpenLDAP’s Memory-Mapped Database by Howard Chu, Symas

Abstract: OpenLDAP’s new MDB library is a highly optimized B+tree implementation that is orders of magnitude faster and more efficient than everything else in the software world. Reads scale perfectly linearly across arbitrarily many CPUs with no bottlenecks, and data is returned with zero memcpy’s. Writes are on average twenty times faster than commonly available databases such as SQLite. The entire library compiles down to only 32K of object code, allowing it to execute completely inside a typical CPU’s L1 cache. Backends for OpenLDAP slapd, Cyrus SASL, Heimdal, SQLite, and OpenDKIM have already been written, with other projects in progress.

10:45 – 11:30Is Android the New Embedded Linux? by Karim Yaghmour, Opersys

Abstract: Linux has been used in embedded systems for quite some time now. “Embedded” in fact represents a substantial part of Linux’s use. Yet, to this day, there’s no single definition of what “Embedded Linux” is. For all practical purposes, “Embedded Linux” remains a set of ad-hoc recipes for building embedded systems based on the Linux kernel; each such system requiring a separate API spec and license vetting. Android on the other hand is a shrink-wrapped embedded Linux distro that has a stable, consistent API, a growing developer community and ODM-friendly licensing. Will these benefits make Android the default building block for Linux-based embedded systems? If so, what does that mean for the wider embedded Linux community, and, for that matter, Linux itself?

11:40 – 12: 45Staying ahead of the multi-core revolution with GDB/CDT by Dominique Toupin, Ericsson

Abtract: These days multi-core chips are unavoidable, more executions needs to be done in parallel and problems become extremely difficult to debug. Upcoming GDB features will facilitate multi-core debugging: global breakpoints with kernel module, PTC sets debug control, target side thread/core bkp/tcp, auto-disabling breakpoints, detection of thread core affinity error, dynamic-printf. Furthermore, the amount of asynchronous data cannot be handled via the cmd line anymore. The Eclipse Multi-Core Debugging Work Group are thus developing the multicore visualizer, dynamic grouping of cores/processes/threads, pinning/cloning of debugging views, GDB events and are synchronizing with the GDB cmd line. In addition, existing multi-core features will be described e.g. non-stop, multi-process, reversible-debugging, tracepoint and LTTng UST markers. A must for anyone who has to debug multicore systems.

14:00 – 14:45LLVM-compiled Linux for the Real World by Bryce Adelstein-Lelbach, Center for Computation and Technology

Abstract: Why use Clang and LLVM to compile the Linux kernel? The proposed talk aims to answer this question by focusing on the application of the Clang/LLVM framework to real-world problems. First, Clang’s powerful ability to manipulate and analyze source code will be presented as a tool for detecting bugs and refactoring code. Then, the performance of Clang/LLVM will be considered, and benchmarks comparing GCC-compiled Linux and LLVM-compiled Linux will be shown. A handful of open-source Clang/LLVM examples (plugins and utilities) will be discussed during the presentation and made available for attendees to experiment with.

14:00 – 14:45 LTSI (Long-Term Stable Initiative) by Tsugikazu Shibata, NEC

Abstract: LTSI (Long-Term Stable Initiative) had been established October 2011 as an activity of CE Working Group of the Linux Foundation. LTSI will maintain Long term stable Linux kernel for use of Consumer Electronics industry to share common cost regarding and also help industry engineers to merge their patches into upstream. This talk will update latest status of LTSI project and discuss about next step such as how the development process going on and what version of Linux kernel will be maintained for long term stable use.

14:55 – 15:30Is Auto the new Android? Driving Innovation with Linux Platforms by Dave Gruber, Black Duck Software

Abstract: Like Android years ago, the automotive industry has started to standardize a core Linux-based platform. The question is: how will the auto industry learn from Android’s success and blossom into a thriving application platform where developers can participate and profit? In this session we will compare and contrast the future of the automotive platform with Android success, discuss the projects on the critical path to opening this new market opportunity, and provide tips on how you can participate early to maximize your involvement as the industry grows.

14:55 – 15:30LTTng 2.0: Tracing, Analysis and Views for Performance and Debugging by- Mathieu Desnoyers, EfficiOS Inc.

Abstract: LTTng 2.0 can be used with various tools which help digging through large amount of trace data, from high-level perspectives down to the details. This presentation will focus on the usability of LTTng, showing how the combined user-space and kernel tracers, high-level summary views such as LTTngTop, graphical analysis tools such as the Eclipse Linux Tools LTTng plugin, can be used to solve hard software problems. Target audience: anyone interested in understanding performance issues and developing on multi-core systems.

August 30

10:25 – 11:10Filesystem and Storage Performance by Chris Mason, Fusion-IO

Abstract: This talk will dive into storage and filesystem performance tuning. I’ll cover ways to find bottlenecks in the IO subsystems under a variety of workloads. Different benchmarking programs will be demonstrated along with ways to interpret the results.

10:25 – 12:05Image Processing on the Pandaboard using OpenCV and Kinect, Part I & II  by Jayneil Dalal, Vanderbilt University

Abstract: Nowadays, there are tons of interesting, mind blowing projects based on computer vision, Kinect etc. But the problem is that all of them are done on a computer which is not a portable system! So, commercializing such a project will be very difficult. In this talk, I will cover how to do image processing using the world’s most popular computer vision library, OpenCV on a highly portable ARM based development board called the Pandaboard. Then I will cover how to use the Microsoft Kinect with Pandaboard for advanced image processing related tasks. Almost all the technologies I will be using are open source.

13:30 – 14:15Design Challenges & Future of the Linux Wireless Stack by Johannes Berg, Intel

Abstract: Like any common code, the wireless stack needs to work with a lot of very different devices from different vendors. It hasn’t always done so very well with some drivers even having to work around some aspects of the stack. I’ll use a few recent examples to explain some of the differences between devices, the resulting challenges and changes but also to show the high level of cooperation between different vendors required to reach a common implementation. I’ll also talk about how we achieve that cooperation today and what I hope can be improved in the future.

14:25 – 15:10Open Hardware Tools: An Open Revolution by David Anders, Texas Instruments

Abstract: The emergence of the “Maker” community in the last few years has sparked a technology revolution, fueled by the open sharing of information within the fields of open hardware design and debugging tools. Ubiquitous, powerful, and low-cost micro-controllers have enabled a new breed of capable yet affordable logic analyzers and oscilloscopes. Not only are these types of tools now cost effective, but their creation provides great examples of how the open source model has the ability to positively impact a wide range of fields outside of the realm of software development. Most Linux developers at some point will have the desire to work with or debug electronic systems and devices. This presentation is intended to provide some experience with tools and projects that are open, or open friendly, for designing and debugging electronics projects.

14:25 – 15:10Linux on AArch64, the 64-bit ARM Architecture by Catalin Marinas, ARM Ltd.

Abstract: This presentation details the Linux kernel implementation on the new AArch64 architecture using the new instruction set, exception and memory models. The presentation will highlight the main changes from previous versions of the ARM architecture and corresponding Linux kernel support.  The presentation is aimed at Linux kernel developers and system programmers with an interest in the 64-bit ARM architecture. Some prior knowledge of Linux kernel architecture porting is assumed and general information about exception handling and MMU functionality will help. This session is important for people planning to work on AArch64 platforms.

August 31

11:00 – 11:45Yocto Project Overview and Update by David Stewart, Intel Corporation

Abstract: The Yocto Project is a joint project to unify the world’s efforts around embedded Linux and to make Linux the best choice for embedded designs. The Yocto Project is an open source starting point for embedded Linux development which contains tools, templates, methods and actual working code to get started with an embedded device project. In addition, the Yocto Project includes Eclipse plug-ins to assist the developer. This talk gives a walk-through of the key parts of the Yocto Project for developing embedded Linux projects. In addition, features will be described from the latest release of the Yocto Project, v1.2. The talk will include demos of some of the key new features such as the Build Appliance and Hob. At the end of the talk, developers should be able to start their own embedded project using the Yocto Project and use it for developing the next great embedded device.

11:00 – 12:40Editing with vi: Fundamentals, Part I & II by Aleksey Tsalolikhin, Vertical Sysadmin, Inc.

Abstract: Most people use about 10% of vi’s capabilities. Learn the other 90% and increase your speed and enjoyment in text editing. The course covers the history, background and design principles of vi; ALL the vi movement commands; many text alteration commands; and the vi command language syntax. Attendees must bring a laptop with “vi” on it for in-class exercises. No prior experience is required, but 20 year veterans of vi have come out raving how much they learned. vi is the usual editor on Linux systems, and you can save a lot of time by learning to use more of its core features.

11:50 – 12:40Linux in a UEFI Secure Boot World by Matthew Garrett, Red Hat

Abstract: The UEFI Secure Boot specification describes a mechanism for restricting the software a machine will boot to appropriately signed binaries. The Windows 8 hardware certification program requires that vendors implement and enable this feature by default. Taken at face value, this locks Linux out of the market. Thankfully, there are things we can do.
This presentation will cover the Secure Boot approaches available to the Linux community and describe the benefits and shortcomings. It will be relevant to admins (who need to know how to configure it) and developers (who need to know how it will affect their software), as well as the users who just want to know how their machines will be booting.

11:50 – 12:40Yocto Project & OpenEmbedded Community BoF by Jeff Osier-Mixon, Intel Corporation

Abstract: This BoF is an opportunity for LinuxCon attendees to meet and converse with developers working on the Yocto Project and OpenEmbedded. All are welcome, from newcomers to experienced developers with problems that need to be solved.

14:10 – 14:55Editing with vi: Advanced Topics, Part I & II by Aleksey Tsaloikhin, Vertical Sysadmin, Inc.

Abstract: This course builds upon the “Editing with vi: Fundamentals” course mentionned above, and covers more text alteration commands, indenting code/config blocks, editing multiple files simultaneously, copying between multiple files, saving partial files, using buffers and macros, powerful ed commands, and searching code. Anybody who uses vi would benefit from taking this class.

15:05 -15:50Linux in Space by Jim Gruen, SpaceX

Abstract: SpaceX is committed to providing the safest, most reliable and economical access to space.  During this talk, we will discuss how Linux supports a fast-moving space startup company, including running the spacecraft itself.

Those are just a few choices among over 80 sessions. You can check the full schedule to find out which sessions suit you best.

You can register to LinuxCon 2012 and CloudOpen 2012 online.

2012 Registration Rates:

  • US$400 through April 29 (Early Bird)
  • US$500 April 30th through July 28th (Standard)
  • US$600 thereafter (Late)
  • Student Registration is $100.

Use GNU Parallel to Speed Up Script Execution on Multiple Cores and/or Machines

July 2nd, 2012 3 comments

I attended BarCamp Chiang Mai 5 last week-end, and a lot of sessions were related to project management, business apps and web development, but there were also a few embedded systems related sessions dealing with subjects such as Arduino (Showing how to blink an LED…) and IOIO board for Android, as well as some Linux related sessions.

The most useful talk I attended was about “GNU Parallel”, a command line tool that can dramatically speed up time-consuming tasks that can be executed in parallel, by spreading tasks across multiple cores and/or local machines on a LAN. This session was presented by the developer himself (Ole Tange).

This tool is used for intensive data processing tasks such as DNA sequencing analysis (Bioinformatics), but it might be possible to find a way to use GNU Parallel to shorten the time it takes to build binaries. Make is already doing a good job at distributing compilation tasks to several cores, and distcc can be used to extend that to multiple machines, so parallel could potentially used at the beginning of the build (e.g. decompressing multiple files) and after the build (e.g. compressing multiple packages). I haven’t figured out a good way to use it for this task yet, but today, I’ll just give an introduction to GNU Parallel, some examples and links to useful resources.

There is a “parallel” utility available in Ubuntu repository (apt-get install moreutils). I tried and it did not work using the samples for a good reason:

In February 2009 I tried getting parallel added to the package moreutils. The author never replied to the email or the two reminders, but in June 2009 moreutils chose to add another program called parallel. This choice leads to some confusion even today.

So if you want to give GNU parallel a try, you’ll have to download the source and install it. I installed “Chiang Mai” release (22/6/2012):

You’d better make sure you’re going to use the correct version a parallel and not the one from moreutils:

The best way to get started is probably to watch the 3 tutorial YouTube videos. There is also a manpage, but it’s pretty massive as it would be 53 pages long if printed. GNU parallel has a specific syntax (the same as xargs) so you may need to spend some time to familiarize yourself with this tool .

In the first video (shown below), Ole gives the instructions to install parallel and compares the time taken to compress multiple files directly with gzip vs the time taken with parallel + gzip on a dual core machine and multiple machines.

Using “gzip -1 *” on some log files takes about about 20 seconds, but after decompressing the files, and using GNU parallel:

it only takes about 10 seconds as it uses both cores. Decompressing the files takes about the same time whether you use parallel or not, since this is mainly bound to disk I/O.

It’s also possible to display tasks progress on each core. This example shows how to re-compress gz files into bz2 using parallel and outputting the progress and ETA:

“-j+0” tells to distribute 1 job per core, and “–eta” is used to show the progress:

You can also use parallel on multiple machines. First, you need to install GNU parallel on all computers and setup your machines so that they can be accessed by ssh without password. (using public/private keys instead).

The task is the same, but the command line becomes a little more complicated:

ls *.gz |  time /usr/local/bin/parallel -j+0 --eta -S192.168.0.101,: --transfer --return {.}.bz2 --cleanup 'zcat {} | bzip2 -9 >{.}.bz2'

“-S” is used to specify the list of servers (“:” being the localhost), “transfer” is to transfer the files, “return” is to copy back the bz2 to the localhost, and “cleanup” will delete the working files from the other machines.

If you are interested in this tool, you can start watching the video below (basically what I have written above). There are also 2 other video tutorials which are linked at the end of the video.

I’ll try to get hold of the presentation slides used at Barcamp Chiang Mai. In the meantime, if you want to know more about this tool, you can check the examples in the manpage or simply visit GNU Parallel page.

Freescale i.MX6 Quad-Core Benchmark Demo

October 28th, 2011 No comments

Freescale is showcasing the performance of their Quad Core ARM Cortex-A9 i.MX6 Quad processor at ARM Techcon 2011.

The Freescale i.MX6 reference design runs a demo in Android 3.x (Honeycomb) with four windows:

  • JPEG Decoding Window
  • Web browser rendering and scrolling
  • HTML5 Fish tank
  • CPU Usage real-time chart
Quad Core ARM Cortex A9 Benchmark

Freescale i.MX6 Multi-Core Benchmark Setup

The 3 windows used for the benchmark are all using software processing (no GPU involved) to show to performance improvement by moving from 1 to 2 and finally 4 cores.

The benchmark results are quite impressive as with one core JPEG decoding is about 0.6 frame per second and with 4 cores it can decode 4.2 frames per seconds while other windows also show performance improvement.  Freescale says there was little modifications done to make the software work on four core and you don’t even need to have multi-threaded applications to take advantage of 4 cores as the OS will usually take care of this.

You can see the benchmark demo in the video below shot by Charbax of They also talk about the power consumption reduction of having multi-cores as they can reduce the voltage quite a bit for a given task. Freescale i.MX6 also have 3 separate GPU to take care for several tasks. For example, for automotive application, the i.MX6 processor could display the digital tachometer and a GPS map at the same time with no issues of quality of service.