Galileo Gen 2
Intel Galileo Gen 2 Development Board is an Arduino-compatible SBC with an Intel 32-bit Quark X1000 CPU (i386 compatible).
The Gen 2 board allows the I/O to run at 3.3V or 5v, so can accomodate a number of 3.3V modules such as the FLiR Dev Kit.
The Gen 2 Fabrication version is "g", not to be confused with fab variants "c", "d" and "e", which are all not Gen 2.
Contents |
Debian
Galileo can run Debian GNU/Linux, but with some caveats.
F00F Bug
The early Quark X1000 CPUs suffer from a problem not unlike the Pentium F00F bug, where the "lock cmpxchg ..." instruction (only really useful for multi-threaded systems) causes a segfault.
Alas, Debian Wheezy build of glibc uses this instruction, in libpthread.so in particular, which is used by SSH etc. and so we have brokenness.
One workaround is to re-build the glibc package with "-with-cpu=i386" (see Debian Bug report logs - #738575 pthread: segfault in libpthread on Intel Galileo board).
Another is to use a "patched" version of /lib/i386-linux-gnu/libpthread-2.13.so available from http://krmnn.de/temp/libpthread-2.13.so.fixed, as per the post at Galileo Support Community.
SD Card Image
galileo-debian has a SD Card image with Debian Wheezy on it for Galileo. Alas the default root password is not as specified on the website, nor does a "user" user exist.
Therefore, mount the image on a normal Linux system and change the password field for root in etc/shadow. (Also, replace libpthreads-2.13.so, as above). (Also, a good opportunity to increase the size of the root partition of the SD Card before using it on the Galileo).
Building image
Some instructions available at: SetupSDCard (on galileo-debian wiki), but need to download Board Support Package from Intel Quark BSP.
Controlling from C
GPIO etc. on Galileo can be controlled from any language by reading/writing to a set of "files" in sysfs (specifically /sys/class/gpio). There are examples of this available at: BurglarAlarm.c
Blink as shell script
#!/bin/sh GP_LED=7 # 39 for non-Gen 2 GPIO_BASE="/sys/class/gpio" GPIO_LED=${GPIO_BASE}/gpio${GP_LED} if [ ! -d ${GPIO_LED} ] ; then echo -n ${GP_LED} > ${GPIO_BASE}/export fi echo -n "out" > ${GPIO_LED}/direction while /bin/true ; do echo -n "0" > ${GPIO_LED}/value sleep 1 echo -n "1" > ${GPIO_LED}/value sleep 1 done
Non-Gen 2 Galileo links
The following links contain code with constants that refer to (eg.) GPIO mappings on non-Gen 2 boards, but are otherwise quite useful:
External links
- Intel Galileo at Wikipedia
- Intel Galileo Gen 2 Development Board at mouser.com
- Quark SW Release Notes (see 3.3 - 71538 - Linux segfault when using lock prefix instruction under specific circumstances)
- Burglar Alarm Using the Intel® Galileo Board from Intel.com