Home‎ > ‎Sergey's Blog‎ > ‎

Intel Galileo - Introduction

posted Oct 24, 2013, 12:59 AM by Sergey Kiselev   [ updated Oct 30, 2013, 9:34 AM ]
I've got my Intel Galileo board view days ago and started playing with it. I will be putting some useful information and my thoughts about this board in this blog.

Unboxing


The kit itself is nicely packaged and other than Galileo board itself it includes 5V/3A power supply, a collection of power plug adapters for various countries, four plastic standoffs, four screws, and a USB Type A to micro USB Type B cable (one you use to connect the board to a computer). The package also has a small thingy that plays Intel chime when Galileo board is removed.



Hardware Specifications

  • Processor: Intel Quark X1000
    • Supports Pentium (the original, P54C) instruction set, plus few newer features, such as support for XD (execute disable) bit and for various power states.
    • Runs on 400 MHz clock
    • Integrated USB Host interface with two ports. In Galileo one of the ports is routed to a micro USB connector and another one is connected to mini PCIe.
    • Integrated USB Device interface. It is connected to a micro USB connector.
    • Two PCIe lanes. On Galileo one is connected to mini PCIe, and another one is unused.
    • Two high speed SPI interfaces. One is used for ADC, another one is routed to ICSP connector.
    • One "legacy" SPI interface. On Galileo it is connected to a 8 MiB flash chip.
    • One I2C interface. On Galileo it is used for I/O expander, but I think it is also available on the Arduino headers.
    • SDIO interface. On Galileo connected to a Micro SD slot.
    • Two UARTs. One can be connected to the ports 0 and 1 on the Arduino headers. The other one is connected to a 3.5 mm connector.
    • Single channel DDR3 controller.
    • Built in Ethernet controller (less PHY).
    • A number of GPIO pins.
  • Memory:
    • 8 MiB SPI flash
    • 256 MiB DDR3
    • Micro SD card slot. (SD and SDHC types are supported, SDXC is not)
    • 512 KiB eDRAM inside the Intel Quark (as I understand it can be mapped to the CPU's memory space and used as a really fast memory)
    • Apparently Intel Quark has some built in firmware flash, not sure if and how it is used in Galileo.
  • Connectors:
    • Arduino-compatible headers. Since Intel Quark doesn't have enough GPIO pins and existing pins don't offer the same versatility as on ATMega micro-controllers used in the original Arduino board, Galileo uses several external ICs to emulate missing GPIO pins: I/O expander - Cypress CY8C9540A; ADC - Analog Devices AD7298; and several MUXes. Pins 3 & 4 are connected directly to the Quark processor, and can be used for high speed I/O.
    • 5V connector. Note Galileo doesn't have a voltage regulator on this input, and so it requires a regulated 5V power supply. Intel also recommends to always use an external power supply and don't rely on USB power from host. It is possible that 500mA USB can provide wouldn't be enough in some situations, for example if powering additional USB or PCIe adapters through the board.
    • Ethernet connector - 100Mbps/10Mbps
    • 3.5mm connector for serial port. It is the same type as used for headphones, but it is not an audio connector. This port is used by BIOS/UEFI for boot messages and also by Linux as a console. Default configuration is 115200 bps, 8 bit, 1 stop bit, no parity. Pinout is as follows:
      • Tip - Tx
      • Ring - Rx
      • Sleeve - Ground
    • Micro USB device port (type B connector)
    • Micro USB host port (type AB connector). I found it useful to have a micro USB to female USB type A adapter to connect USB devices with regular USB plugs. Ubiquitous OTG  (on the go) cables can be used too. (Note that port itself does not support OTG, and will work only as USB host).
    • An unnamed 7-pin header on the top right of the board. It appears to be connected to the SPI flash, and possibly can be used to re-program it.
    • ICSP header - connected to SPI port.
    • Micro SD card connector.
    • 2-pin header for RTC battery (the battery is optional)
    • JTAG connector.
    • Full size mini-PCIe slot.
  • Configuration Jumpers:
    • J2 - Changes the address of onboard Cypress I/O extender so that shields can use its address. The default address is 0x20, and currently the firmware only supports that address, and doesn't know anything about the jumper.
    • IOREF - Selects 5V (default) or 3.3V shields.
    • VIN - Connects VIN pin on Arduino's power header to the Galileo's 5V.
  • Switches:
    • Reboot - Reboots the firmware (Linux image running on the Galileo).
    • Reset - Restarts a sketch without rebooting the firmware.

Software

Galileo comes with a minimal, so called SPI Linux image programmed in the onboard SPI flash. The current image only allows execution of Ardunio sketches. It should be noted that the current firmware will not store sketch in the flash, so it will be lost on power cycle.
Intel supplies "Full" Linux image which can be installed on a micro SD card. It is far from being full, but at least offers wireless support, SSH daemon, etc.
Fortunately Intel supplies Board Support package, which among other things includes everything needed to rebuild the Linux image using Yocto.

Of course Intel also supplies modified Arduino IDE which supports Galileo. Sketches are getting compiled into regular Linux executable files, which are run as root on Galileo. One useful thing - it is possible to use "system" function in sketches to start processes on Linux (for example to configure the Ethernet using ifconfig, and start the SSH daemon).

Serial Console

Serial console is very useful especially if you want to play with firmware and Linux running on the board. A serial console cable is easy to make and requires basic soldering skills and a few components found in your local RadioShack store. Note that most newer computers don't have a serial port. In such case a USB to Serial adapter can be used (I am using an adapter like this).

Making a Serial Console Cable

You'll need:
  • 3.5 mm stereo plug, aka 1/8" plug (e.g. RadioShack 274-284)
  • DE9 female connector (e.g. RadioShack 276-1538)
  • Some wires (use different colors if possible).
  • Some heat shrink isolation
  • Soldering iron, solder, wire stripper or cutters.
Solder wires to connect 3.5 mm connector to DE9 as follows:
  • Tip of 3.5 mm connector - pin 2 of DE9 connector
  • Ring of 3.5 mm connector - pin 3 of DE9 connector
  • Sleeve of 3.5 mm connector - pin 5 of DE9 connector

Pin are usually numbered on DE9 connector - look for really tiny numbers molded in the plastic part of the connector.

Using Serial Console

  1. Install terminal emulator software. For Windows I personally like PuTTY which in addition to serial terminal also includes SSH and telnet clients. On Linux it is possible to use GNU screen or minicom.
  2. Install driver for your USB to serial adapter.
  3. Connect everything together: USB to serial adapter to the computer and to the console cable you made, console cable to your Galileo board.
  4. Start terminal emulator, and configure it as follows: 115200 bps, 8 data bits, 1 stop bit, no parity, no flow control. You will also need to configure serial port name. If using USB to serial adapter with Windows open Device Manager, expand Ports section, and note the port name (COM<some_number>) your USB to serial converter is using. For example to start GNU screen use something like screen /dev/ttyS0 115200,cs8 (replace /dev/ttyS0 with the actual serial port device name).
  5. Power on your Galileo, you should see UEFI boot messages, followed by GRUB menu, followed by Linux boot messages.
  6. Login to Galileo's Linux system using root as user name. By default root account doesn't have any password, but I really recommend setting one especially if you will be connecting your Galileo to the network.
Comments