374 lines
10 KiB
ReStructuredText
374 lines
10 KiB
ReStructuredText
.. _galileo:
|
|
|
|
Board Configuration: galileo
|
|
###############################
|
|
|
|
Overview
|
|
********
|
|
|
|
Developers can use the galileo board configuration
|
|
to build a Zephyr Kernel that runs on a Galileo Development Board (Gen 1 or Gen 2).
|
|
|
|
This board configuration enables kernel support for the board's 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
|
|
|
|
See `Procedures`_ for using third-party tools to load an image onto the target.
|
|
|
|
.. note::
|
|
This board configuration may work with similar boards
|
|
that are not officially supported.
|
|
|
|
Supported Boards
|
|
****************
|
|
|
|
This section provides information about the physical characteristics of boards
|
|
that the galileo board configuration supports.
|
|
Subsections contain detailed information on pin names, jumper settings, memory mappings,
|
|
and board component layout.
|
|
|
|
Pin Names
|
|
=========
|
|
|
|
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
|
|
===============
|
|
|
|
The galileo 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`_.
|
|
|
|
|
|
Supported Features
|
|
******************
|
|
|
|
The galileo board configuration supports the following hardware features:
|
|
|
|
* HPET
|
|
|
|
* PCI bus
|
|
|
|
* Advanced Programmed Interrupt Controller (APIC)
|
|
|
|
* Serial Ports in Polling and Interrupt Driven Modes
|
|
|
|
+-----------+------------+-----------------------+
|
|
| 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 |
|
|
+-----------+------------+-----------------------+
|
|
|
|
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
|
|
===
|
|
|
|
The PCI driver initiates a PCI library scan of the PCI bus for any attached devices.
|
|
When detected, the devices are initialized.
|
|
|
|
.. 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
|
|
====================
|
|
|
|
The galileo board configuration uses the kernel's static
|
|
Interrupt Descriptor Table (IDT) to program the
|
|
Advanced Programmable Interrupt Controller (APIC)
|
|
interrupt redirection table.
|
|
|
|
Interrupts
|
|
----------
|
|
|
|
+-----+-------+---------+--------------------------+
|
|
| 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 platform
|
|
configuration uses HPET as a system clock timer.
|
|
|
|
Procedures
|
|
**********
|
|
|
|
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 default GRUB
|
|
of the hardware, follow these steps to test on Galileo2 boards using a custom
|
|
GRUB.
|
|
|
|
#. Install the requirements to build GRUB on your host machine.
|
|
|
|
On Ubuntu, type:
|
|
|
|
.. code-block:: console
|
|
|
|
$ sudo apt-get install gnu-efi:i386 bison libopts25 \
|
|
libselinux1-dev autogen m4 autoconf help2man libopts25-dev flex \
|
|
libfont-freetype-perl automake autotools-dev libfreetype6-dev \
|
|
texinfo
|
|
|
|
On Fedora, type:
|
|
|
|
.. code-block:: console
|
|
|
|
$ sudo dnf install gnu-efi bison m4 autoconf help2man flex \
|
|
automake texinfo
|
|
|
|
#. Clone and build the GRUB repository using the script in Zephyr tree, type:
|
|
|
|
.. code-block:: console
|
|
|
|
$ cd $ZEPHYR_BASE
|
|
$ ./scripts/build_grub.sh
|
|
|
|
#. Find the binary at :file:`$ZEPHYR_BASE/scripts/grub/bin/grub.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.
|
|
|
|
|
|
#. Set the board configuration to Galileo by changing the :command:`make`
|
|
command to:
|
|
|
|
.. code-block:: console
|
|
|
|
$ make BOARD=galileo
|
|
|
|
|
|
#. Use one of these cables for serial output:
|
|
|
|
`<http://www.ftdichip.com/Products/Cables/USBTTLSerial.htm>`_
|
|
|
|
#. Format a microSD as FAT
|
|
|
|
#. Create the following directories
|
|
|
|
:file:`efi`
|
|
|
|
:file:`efi/boot`
|
|
|
|
:file:`kernel`
|
|
|
|
#. Copy the kernel file :file:`zephyr.strip` to the :file:`$SDCARD/kernel` folder.
|
|
|
|
#. Copy your built version of GRUB to :file:`$SDCARD/efi/boot/bootia32.efi`
|
|
|
|
#. Create :file:`$SDCARD/efi/boot/grub.cfg` containing the following:
|
|
|
|
.. code-block:: console
|
|
|
|
set default=0
|
|
set timeout=10
|
|
|
|
menuentry "Zephyr Kernel" {
|
|
multiboot /kernel/zephyr.elf
|
|
}
|
|
|
|
#. Insert the SDcard in the Galileo board.
|
|
|
|
#. Connect the board to the host system using the serial cable.
|
|
|
|
#. Configure your host system to watch for serial data.
|
|
|
|
* On Linux, screen is a popular method for reading serial
|
|
data.
|
|
|
|
* On Windows, PuTTY has an option to set up configuration for
|
|
serial data.
|
|
|
|
#. Power on the Galileo board.
|
|
|
|
Booting the Galileo Board
|
|
=========================
|
|
|
|
Boot the Galileo board from the boot device using GRUB2
|
|
with the boot loader present in the on-board flash.
|
|
|
|
.. note::
|
|
A stripped project image file is automatically created when the
|
|
project is built. The stripped image has removed debug
|
|
information from the :file:`ELF` file.
|
|
|
|
Prerequisites
|
|
-------------
|
|
|
|
* The automatically created stripped Zephyr application image is
|
|
in the project directory.
|
|
|
|
* A serial port is available for communication.
|
|
|
|
.. note::
|
|
For details on how to connect and configure the serial port,
|
|
see the Getting Started guide that you received with the board.
|
|
|
|
Steps
|
|
-----
|
|
|
|
1. Insert the prepared boot device (micro-SD card or USB flash
|
|
drive) into the board and start the board.
|
|
|
|
The boot process begins and displays a large amount of output.
|
|
|
|
2. When the following output appears, press :kbd:`F7`:
|
|
|
|
.. code-block:: console
|
|
|
|
[Bds]BdsWait ...Zzzzzzzzzzzz...
|
|
[Bds]BdsWait(5)..Zzzz...
|
|
[Bds]BdsWait(4)..Zzzz...
|
|
[Bds]Press [Enter] to directly boot.
|
|
[Bds]Press [F7] to show boot menu options.
|
|
|
|
3. From the menu that appears, select :guilabel:`UEFI Internal Shell`.
|
|
|
|
4. At the shell prompt enter:
|
|
|
|
.. code-block:: console
|
|
|
|
grub.efi
|
|
|
|
GRUB2 starts and a menu shows entries for the items you added
|
|
to the :file:`file grub.cfg`.
|
|
|
|
5. Select the image you want to boot and press :guilabel:`Enter`.
|
|
|
|
When the boot process completes, you have finished booting the
|
|
Zephyr application image.
|
|
|
|
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
|
|
* Ethernet
|
|
* Supervisor Mode Execution Protection (SMEP)
|
|
|
|
Bibliography
|
|
************
|
|
|
|
1. `Intel® Galileo Datasheet`_, Order Number: 329681-001US
|
|
|
|
.. _Intel® Galileo Datasheet:
|
|
http://www.intel.com/newsroom/kits/quark/galileo/pdfs/Intel_Galileo_Datasheet.pdf
|
|
|
|
2. `Intel® Galileo Board User Guide`_.
|
|
|
|
.. _Intel® Galileo Board User Guide:
|
|
http://download.intel.com/support/galileo/sb/galileo_boarduserguide_330237_001.pdf
|
|
|
|
3. `Intel® Quark SoC X1000 Datasheet`_, Order Number: 329676-001US
|
|
|
|
.. _Intel® Quark SoC X1000 Datasheet:
|
|
https://communities.intel.com/servlet/JiveServlet/previewBody/
|
|
21828-102-2-25120/329676_QuarkDatasheet.pdf
|
|
|
|
4. `Intel® Quark Core Hardware Reference Manual`_.
|
|
|
|
.. _Intel® Quark Core Hardware Reference Manual:
|
|
http://caxapa.ru/thumbs/497461/Intel_Quark_Core_HWRefMan_001.pdf
|
|
|
|
5. `Intel® Quark Software Developer Manual for Linux`_.
|
|
|
|
.. _Intel® Quark Software Developer Manual for Linux:
|
|
http://www.intel.com/content/dam/www/public/us/en/documents/manuals/quark-x1000-linux-sw-developers-manual.pdf
|