Optimizing real-time waveform display for Raspberry Pi

One of the things that sets BitScope apart from other PC based test, measurement and data acquisitions systems is its interactive software which displays live mixed signal waveforms in real-time running on a wide variety of computers and embedded systems.

Late last year we started porting our software to Raspberry Pi. We love the Pi and while it's not the fastest little computer on the planet (update: it's much faster now), turns out it's more powerful than you might think, if used correctly.

What do we mean by "used correctly"?

In a nutshell we mean to run code optimized for efficient execution on a system with a modest (by today's standards) CPU, FPU and L1/L2 caches, and a partially accelerated X server. This is not to say Raspberry Pi does not have very powerful graphics (it does!) or that it can't do some pretty good number crunching (it can!) but our aim is to leverage what is available in a cross-platform sense without resorting to writing customized GPU code (not yet anyway).

Over the past decade or so software developers have been spoilt somewhat as the Intel juggernaut churned out ever more powerful (and power hungry) processors. In our view all this power has obscured architectural flaws that have crept into the software written for these systems. It has resulted in poorer performance than is otherwise possible if only the software was written a little differently. One only needs to look at the CPU and graphics hardware of an old Amiga to marvel at what can be achieved with much less grunt than a modern x86 i7.

So we started tackling this problem by developing BitScope Display, a cross-platform diagnostic tool to help assess the display performance across all supported platforms. We've focused on platform suitability for real-time interactive use with BitScope. It has enabled our beta testers to provide practical feedback from their Windows, Mac, x86 Linux and ARM/Rasperry Pi based systems as we developed the latest DSO production release.

In the hope that it might be useful to others, we've published it to enable you to see how well your system performs for live waveform display without actually needing a BitScope and without being distracted by other issues such as signal processing, USB performance, network latency or device configuration settings.

There is more to the story of software optimization than just display but for BitScope it goes a long way to achieving our goal; high speed waveform capture and analysis on the widest range of platforms possible. We'll post more updates soon about other ways we're boosting our software performance, especially on Raspberry Pi, so stay tuned!