Ubilinux on the Intel Galileo: A Tale of Two Compilers (Part I)

Hey all,
I'm not sure if I mentioned this at some point (probably didn't....), but I got my hands on an Intel Galileo Gen 1 board. As a quick summary, its an Embedded Linux development board - think Raspberry Pi and BeagleBone Black. However, its a rather monster from those two for two primary reasons:
1 - Coming from Intel, it actually sports an x86-class processor as opposed ARM processors that more common in dev boards today. Specifically, it uses the Intel Quark X1000 SoC running at 400MHz which (according to Wikipedia) has is architecture-similar to the i586 proc family. However, it doesn't support MMX or SSE instructions (these are special machine instructions to make certain operations faster)

2 - Oddly, or perhaps not so oddly, it is programmable from the Arduino IDE out of the box. I personally think its weird to treat an x86-class proc like an 8-bit micro, but that's just me.

Like most other Embedded Linux dev boards on the market, it boots from an SD card. However, you can use it without an SD card as it has an onboard flash memory chip which apparently has some sort of stripped-down version of Linux on it. Without an SD card though, the Galileo is really much like a vanilla Arduino. And yeah, it kinda forgets any sketches you upload to it when the SD card isn't in there.
Obviously using the SD card offers a number of benefits: a full Linux OS, sketch persistence and much better hardware support (supports PCIe WiFi adapters, webcams, etc). Intel offer an SD card image based on the Yocto embedded Linux distribution. Yocto is a much newer distro, and is a bit of a departure from the more common distros we're all used to. For one, it uses the opkg package manager, which has a different set of packages from apt-get used in Debian and Debian derivatives. Suffice to say, I didn't really like Yocto much, perhaps due to my familiarity with Debian and its derivatives.
Enter Ubilinux.
A company named Emutex Labs Ltd apparently released an SD card image for their "Ubilinux" distro, which is (thankfully) based on Debian and runs on the Galileo. Its a bit dated now, but I was too overjoyed to find such a thing so.......and installing it was a cinch. And it runs SSH out of the box too!
Naturally, a day came when I needed to compile some stuff from source. So as expected, I apt-get install'd gcc, g++ and the whole stack. Entered the directory, executed 'make' and waited....
In the process, gcc gave me a warning about "illegal instruction" and immediately aborted the build process. I examined the offending line over and over again, but there was nothing wrong with it.
To cut that story short, it seems that the gcc version available in the Ubilinux repo either has some sort of bug in it, or doesn't play well with the Quark proc on the board.
That certainly didn't bode well for any further exploration with this board, at least not while running Ubilinux.


Popular posts from this blog

Enabling SPI1 on the Raspberry Pi B+/Zero/2/3

Bitbanging SPI on the Raspberry Pi (via spi-gpio)

Getting Started with Logic Analyzers and Pulseview