Galileo Gen1/Gen2¶
Overview¶
Intel Galileo is the first in a line of Arduino-certified development boards based on Intel x86 architecture and is designed for the maker and education communities. It features the Intel Quark SoC X1000, the first product from the Intel Quark technology family of low-power, small-core products.
This board configuration enables kernel support for the board’s Intel® Quark™ SoC, along with the following devices:
- High Precision Event Timer (HPET)
- Peripheral Component Interconnect (PCI) bus query
- Serial Ports in Polling and Interrupt Driven Modes
Note
This board configuration may work with similar boards that are not officially supported.
Hardware¶
This section provides information about the physical characteristics of the board. Subsections contain detailed information on pin names, jumper settings, memory mappings, and board component layout.
Supported Features¶
This board supports the following hardware features:
- HPET
- PCI bus
- Advanced Programmed Interrupt Controller (APIC)
- Serial Ports in Polling and Interrupt Driven Modes
- Ethernet in Interrupt Driven Mode
Interface | Controller | Driver/Component |
---|---|---|
HPET | on-chip | system clock |
PCI | on-chip | PCI library |
APIC | on-chip | interrupt controller |
UART | on-chip | serial port-polling; serial port-interrupt |
Ethernet | on-chip | Ethernet |
The kernel currently does not support other hardware features. See the Intel Quark Core Hardware Reference Manual for a complete list of Galileo board hardware features, and the Intel Quark Software Developer Manual for Linux
PCI¶
PCI drivers assume that IO regions and IRQs for devices are preconfigured identically by the firmware on all supported devices. This configuration is specified in the Kconfig file for the Intel Quark X1000 SoC. The PCI library supports dynamically enumerating PCI devices, but that support is disabled by default.
Note
The PCI library does not support 64-bit devices. Memory address and size storage only require 32-bit integers.
Serial Port Polling Mode Support¶
The polling mode serial port allows debug output to be printed.
For more information, see Intel Quark SoC X1000 Datasheet, section 18.3.3 FIFO Polled-Mode Operation
Serial Port Interrupt Mode Support¶
The interrupt mode serial port provides general serial communication and external communication.
For more information, see Intel Quark SoC X1000 Datasheet, section 21.12.1.4.5 Poll Mode
Interrupt Controller¶
This board uses the kernel’s static Interrupt Descriptor Table (IDT) to program the Advanced Programmable Interrupt Controller (APIC) interrupt redirection table.
IRQ | Name | Remarks | Used by Zephyr Kernel |
---|---|---|---|
17 | INTB | UART | serial port when used in interrupt mode |
20 | timer | HPET | timer driver |
HPET System Clock Support¶
Galileo uses HPET timing with legacy-free timer support. The Galileo board configuration uses HPET as a system clock timer.
Ethernet Support¶
The Ethernet driver allocates a Direct Memory Access (DMA)-accessible pair of receive and transmit buffers and descriptors. The driver operates the network interface in store-and-forward mode and enables the receive interrupt.
For more information, see Intel Quark SoC X1000 Datasheet, section 15.0 10/100 Mbps Ethernet
Connections and IOs¶
For a component layout diagram showing pin names, see page 46 of the Intel Quark SoC X1000 Datasheet.
See also the Intel Galileo Datasheet.
For the Galileo Board Connection Diagram see page 9 of the Intel Galileo Board User Guide.
Jumpers & Switches¶
The kernel uses the Galileo default jumper settings except for the IOREF jumper, which must be set to match the external operating voltage of either 3.3 V or 5 V.
The Galileo default switch settings are:
Jumper | Setting |
---|---|
IOREF | 3.3V or 5V |
VIN | 5V Jumpered |
For more information, see page 14 of the Intel Galileo Board User Guide.
Memory Mappings¶
This board configuration uses default hardware memory map addresses and sizes.
For a list of memory mapped registers, see page 868 of the Intel Quark SoC X1000 Datasheet.
Component Layout¶
See page 3 of the Intel® Galileo Datasheet for a component layout diagram. Click the link to open the Intel Galileo Datasheet.
For a block diagram, see page 38 of the Intel Quark SoC X1000 Datasheet.
Programming and Debugging¶
Use the following procedures for booting an image on a Galileo board.
- Creating a GRUB2 Boot Loader Image from a Linux Host
- Preparing the Boot Device
- Booting the Galileo Board
Creating a GRUB2 Boot Loader Image from a Linux Host¶
If you are having problems running an application using the preinstalled copy of GRUB, follow these steps to test on supported boards using a custom GRUB.
Install the requirements to build GRUB on your host machine.
On Ubuntu, type:
$ sudo apt-get install bison autoconf libopts25-dev flex automake \ pkg-config gettext autopoint
On Fedora, type:
$ sudo dnf install gnu-efi bison m4 autoconf help2man flex \ automake texinfo gettext-devel
Clone and build the GRUB repository using the script in Zephyr tree, type:
$ cd $ZEPHYR_BASE $ ./boards/x86/common/scripts/build_grub.sh i386
Find the binary at
$ZEPHYR_BASE/boards/x86/common/scripts/grub/bin/grub_i386.efi
.
Preparing the Boot Device¶
Prepare either an SD-micro card or USB flash drive to boot the Zephyr application image on a Galileo board. The following instructions apply to both devices.
Build a Zephyr application; for instance, to build the
hello_world
application on Galileo:# On Linux/macOS cd $ZEPHYR_BASE/samples/hello_world mkdir build && cd build # On Windows cd %ZEPHYR_BASE%\samples\hello_world mkdir build & cd build # Use cmake to configure a Ninja-based build system: cmake -GNinja -DBOARD=galileo .. # Now run ninja on the generated build system: ninja
Note
A stripped project image file named
zephyr.strip
is automatically created in the build directory after the application is built. This image has removed debug information from thezephyr.elf
file.Use one of these cables for serial output:
Format a microSD as FAT
Create the following directories
efi
efi/boot
kernel
Copy the kernel file
outdir/galileo/zephyr.strip
to the$SDCARD/kernel
folder.Copy your built version of GRUB to
$SDCARD/efi/boot/bootia32.efi
Create
$SDCARD/efi/boot/grub.cfg
containing the following:set default=0 set timeout=10 menuentry "Zephyr Kernel" { multiboot /kernel/zephyr.strip }
Booting the Galileo Board¶
Boot the Galileo board from the boot device using GRUB2 with the firmware present in the on-board flash.
Steps¶
Insert the prepared boot device (micro-SD card or USB flash drive) into the Galileo board.
Connect the board to the host system using the serial cable and configure your host system to watch for serial data. See https://software.intel.com/en-us/articles/intel-galileo-gen-2-board-assembly-using-eclipse-and-intel-xdk-iot-edition for the gen. 2 board, https://software.intel.com/en-us/articles/intel-galileo-gen-1-board-assembly-using-eclipse-and-intel-xdk-iot-edition for the gen. 1 board, or the Getting Started guide that you received with the board.
Note
On Windows, PuTTY has an option to set up configuration for serial data. Use a baud rate of 115200 and the SCO keyboard mode. The keyboard mode option is in a submenu of the Terminal menu on the left side of the screen.
Power on the Galileo board.
When the following output appears, press F7:
Press [Enter] to directly boot. Press [F7] to show boot menu options.
From the menu that appears, select UEFI Misc Device to boot from a micro-SD card. To boot from a USB flash drive, select the menu entry that describes that particular type of USB flash drive.
GRUB2 starts and a menu shows entries for the items you added to the file
grub.cfg
.Select the image you want to boot and press Enter.
When the boot process completes, you have finished booting the Zephyr application image.
Note
If the following messages appear during boot, they can be safely ignored.
WARNING: no console will be available to OS error: no suitable video mode found.
Known Problems and Limitations¶
At this time, the kernel does not support the following:
- Isolated Memory Regions
- Serial port in Direct Memory Access (DMA) mode
- Supervisor Mode Execution Protection (SMEP)
Bibliography¶
- Intel Galileo Datasheet, Order Number: 329681-003US
- Intel Quark SoC X1000 Datasheet, Order Number: 329676-001US