Channels ▼

Al Williams

Dr. Dobb's Bloggers

Galileo: The Slowest Fast Computer Around?

January 28, 2014

A few weeks ago I mentioned I had picked up an Intel Galileo. I spent about $60, and for that price I got a pretty interesting little board. Based around an Intel x86-based system on chip, it sports a 400MHz processor with 512K of onboard memory, an additional 256MB of external RAM, USB host and client ports, Ethernet, an SD card slot, and a mini-PCIe card slot. On top of that, it has all the same I/O pins as an Arduino, using the same "shield" layout and can use the Arduino software.

Sounds amazing, right? An Arduino on steroids for $60. Sort of, but not quite. The problem is that the Galileo actually runs a form of Linux.

If you know me at all, that last sentence should have made you do a double take. When have I ever been against Linux? I'm not. However, trying to marry Linux and Arduino together isn't giving me a good feeling and I'll tell you why.

I tried plugging an LCD daughterboard (I hate saying shield) into the device with an eye to porting an Arduino operating system project over to the new board. The LCD simply didn't work. A little surfing online turned up that it may or may not be a library problem, but that there was some consensus that the Galileo may be too slow to drive the LCD using the Arduino code. Too slow? The thing has a 400MHz processor, right?

It does have a 400MHz processor running Linux. It emulates the Arduino using some method I haven't dug into yet and it is substantially slower than a real Arduino. How much slower?

I wrote a very simple program to just toggle a digital I/O pin quickly. I know there are lots of tricks you use to make a real Arduino go faster, but I didn't really care. I just wanted some point of reference. Here's the code:

void setup() {
int bit=0;
while (1) digitalWrite(2,bit=!bit);

void loop() {

It is hard to imagine a simpler program. The figure below shows a standard Arduino Leonardo running that program (I hate to say sketch).

Now here's the exact same sketch on the Galileo:

Do they look almost the same to you? They might at a glance, but look at the time scale on the oscilloscope. The Leonardo is pulsing the pin at just under 100kHz. The Galileo with the same code is managing 223 Hz. That's not a typo. The Leonardo is not quite 500 times faster than the Galileo.

There is an old saying that less is more. I prefer the saying that just enough is more. Sometimes the Arduino — or a similar small embedded processor — is just what you need. Sometimes you need a Linux computer. It is hard to see where a Linux box with a very slow Arduino onboard gets you.

Maybe I'm just too early to the party. If you told me this is a Linux box with support for Arduino daughterboards — er, shields — then I get that. There are plenty of inexpensive daughterboards for Arduino. Of course, then you need to pony up Linux driver support for those devices, too, and that could be a mess.

If you told me you have a full-featured Arduino that could cooperate with running Linux programs, that might be another thing. I'm told you can do this, but with the fake Arduino onboard running at 1/500th the speed of a standard Arduino, I've lost interest.

In time the board could become a competitor to things like the Raspberry Pi or the Beaglebone (both of which I've used and like). Even so, it has a slightly different niche. The Pi and the Beagle are both a little I/O anemic but offer niceties like video output and sound (the jack on the Galileo that looks like audio is actually for a serial port). So a media center project is still going for a Pi. A project that needs a mini-PCIe card and no real display might look at a Galileo.

Will you use a Galileo? What's your dream mashup for an embedded Linux board? Leave a comment and share your thoughts.

Related Reading

More Insights

Currently we allow the following HTML tags in comments:

Single tags


<br> Defines a single line break

<hr> Defines a horizontal line

Matching tags


<a> Defines an anchor

<b> Defines bold text

<big> Defines big text

<blockquote> Defines a long quotation

<caption> Defines a table caption

<cite> Defines a citation

<code> Defines computer code text

<em> Defines emphasized text

<fieldset> Defines a border around elements in a form

<h1> This is heading 1

<h2> This is heading 2

<h3> This is heading 3

<h4> This is heading 4

<h5> This is heading 5

<h6> This is heading 6

<i> Defines italic text

<p> Defines a paragraph

<pre> Defines preformatted text

<q> Defines a short quotation

<samp> Defines sample computer code text

<small> Defines small text

<span> Defines a section in a document

<s> Defines strikethrough text

<strike> Defines strikethrough text

<strong> Defines strong text

<sub> Defines subscripted text

<sup> Defines superscripted text

<u> Defines underlined text

