215 lines
5.7 KiB
ReStructuredText
215 lines
5.7 KiB
ReStructuredText
.. _ehl_crb:
|
|
|
|
Elkhart Lake CRB
|
|
################
|
|
|
|
Overview
|
|
********
|
|
Elkhart Lake Reference Board (EHL CRB) is an example implementation of a
|
|
compact single board computer with high performance for IoT edge devices.
|
|
|
|
This board configuration enables kernel support for the `EHL`_ board.
|
|
|
|
.. note::
|
|
This board configuration works on the variant of `EHL`_
|
|
boards containing Intel |reg| Atom |trade| SoC.
|
|
|
|
Hardware
|
|
********
|
|
|
|
General information about the board can be found at the `EHL`_ website.
|
|
|
|
.. include:: ../../../../soc/x86/elkhart_lake/doc/supported_features.txt
|
|
|
|
|
|
Connections and IOs
|
|
===================
|
|
|
|
Refer to the `EHL`_ website for more information.
|
|
|
|
Programming and Debugging
|
|
*************************
|
|
Use the following procedures for booting an image on a EHL CRB board.
|
|
|
|
.. contents::
|
|
:depth: 1
|
|
:local:
|
|
:backlinks: top
|
|
|
|
Build Zephyr application
|
|
========================
|
|
|
|
#. Build a Zephyr application; for instance, to build the ``hello_world``
|
|
application on Elkhart Lake CRB:
|
|
|
|
.. zephyr-app-commands::
|
|
:zephyr-app: samples/hello_world
|
|
:board: ehl_crb
|
|
:goals: build
|
|
|
|
.. note::
|
|
|
|
A Zephyr EFI image file named :file:`zephyr.efi` is automatically
|
|
created in the build directory after the application is built.
|
|
|
|
Preparing the Boot Device
|
|
=========================
|
|
|
|
Prepare a USB flash drive to boot the Zephyr application image on
|
|
an Elkhart Lake CRB board.
|
|
|
|
#. Format the USB flash drive as FAT32.
|
|
|
|
On Windows, open ``File Explorer``, and right-click on the USB flash drive.
|
|
Select ``Format...``. Make sure in ``File System``, ``FAT32`` is selected.
|
|
Click on the ``Format`` button and wait for it to finish.
|
|
|
|
On Linux, graphical utilities such as ``gparted`` can be used to format
|
|
the USB flash drive as FAT32. Alternatively, under terminal, find out
|
|
the corresponding device node for the USB flash drive (for example,
|
|
``/dev/sdd``). Execute the following command:
|
|
|
|
.. code-block:: console
|
|
|
|
$ mkfs.vfat -F 32 <device-node>
|
|
|
|
.. important::
|
|
Make sure the device node is the actual device node for
|
|
the USB flash drive. Or else you may erase other storage devices
|
|
on your system, and will render the system unusable afterwards.
|
|
|
|
#. Copy the Zephyr EFI image file :file:`zephyr/zephyr.efi` to the USB drive.
|
|
|
|
Booting the Elkhart Lake CRB Board
|
|
==================================
|
|
|
|
Boot the Elkhart Lake CRB board to the EFI shell with USB flash drive connected.
|
|
|
|
#. Insert the prepared boot device (USB flash drive) into the Elkhart Lake CRB board.
|
|
|
|
#. Connect the board to the host system using the serial cable and
|
|
configure your host system to watch for serial data. See
|
|
`EHL`_ website for more information.
|
|
|
|
.. note::
|
|
On Windows, PuTTY has an option to set up configuration for
|
|
serial data. Use a baud rate of 115200.
|
|
|
|
#. Power on the Elkhart Lake CRB board.
|
|
|
|
#. When the following output appears, press :kbd:`F7`:
|
|
|
|
.. code-block:: console
|
|
|
|
Press <DEL> or <ESC> to enter setup.
|
|
|
|
#. From the menu that appears, select the menu entry that describes
|
|
that particular EFI shell.
|
|
|
|
#. From the EFI shell select Zephyr EFI image to boot.
|
|
|
|
.. code-block:: console
|
|
|
|
Shell> fs0:zephyr.efi
|
|
|
|
Booting the Elkhart Lake CRB Board over network
|
|
===============================================
|
|
|
|
Build Zephyr image
|
|
------------------
|
|
|
|
#. Follow `Build Zephyr application`_ steps to build Zephyr image.
|
|
|
|
Prepare Linux host
|
|
------------------
|
|
|
|
#. Install DHCP, TFTP servers. For example ``dnsmasq``
|
|
|
|
.. code-block:: console
|
|
|
|
$ sudo apt-get install dnsmasq
|
|
|
|
#. Configure DHCP server. Configuration for ``dnsmasq`` is below:
|
|
|
|
.. code-block:: console
|
|
|
|
# Only listen to this interface
|
|
interface=eno2
|
|
dhcp-range=10.1.1.20,10.1.1.30,12h
|
|
|
|
#. Configure TFTP server.
|
|
|
|
.. code-block:: console
|
|
|
|
# tftp
|
|
enable-tftp
|
|
tftp-root=/srv/tftp
|
|
dhcp-boot=zephyr.efi
|
|
|
|
``zephyr.efi`` is a Zephyr EFI binary created above.
|
|
|
|
#. Copy the Zephyr EFI image :file:`zephyr/zephyr.efi` to the
|
|
:file:`/srv/tftp` folder.
|
|
|
|
.. code-block:: console
|
|
|
|
$ cp zephyr/zephyr.efi /srv/tftp/
|
|
|
|
#. Restart ``dnsmasq`` service:
|
|
|
|
.. code-block:: console
|
|
|
|
$ sudo systemctl restart dnsmasq.service
|
|
|
|
Prepare Elkhart Lake CRB board for network boot
|
|
-----------------------------------------------
|
|
|
|
#. Enable boot from PXE. Go to EFI shell and make sure that the first boot
|
|
option is ``UEFI PXEv4``.
|
|
|
|
.. code-block:: console
|
|
|
|
Shell> bcfg boot dump
|
|
Option: 00. Variable: Boot0007
|
|
Desc - UEFI PXEv4 (MAC:6805CABC1997)
|
|
DevPath - PciRoot(0x0)/Pci(0x1C,0x0)/Pci(0x0,0x0)/MAC(6805CABC1997,0x0)/IPv4(0.0.0.0)
|
|
Optional- Y
|
|
...
|
|
|
|
#. If UEFI PXEv4 is not the first boot option use ``bcfg boot mv`` command to
|
|
change boot order
|
|
|
|
.. code-block:: console
|
|
|
|
Shell> bcfg boot mv 7 0
|
|
|
|
Booting Elkhart Lake CRB
|
|
------------------------
|
|
|
|
#. Connect the board to the host system using the serial cable and
|
|
configure your host system to watch for serial data.
|
|
|
|
#. Power on the Elkhart Lake CRB board.
|
|
|
|
#. Verify that the board got an IP address:
|
|
|
|
.. code-block:: console
|
|
|
|
$ journalctl -f -u dnsmasq
|
|
dnsmasq-dhcp[5386]: DHCPDISCOVER(eno2) 00:07:32:52:25:88
|
|
dnsmasq-dhcp[5386]: DHCPOFFER(eno2) 10.1.1.28 00:07:32:52:25:88
|
|
dnsmasq-dhcp[5386]: DHCPREQUEST(eno2) 10.1.1.28 00:07:32:52:25:88
|
|
dnsmasq-dhcp[5386]: DHCPACK(eno2) 10.1.1.28 00:07:32:52:25:88
|
|
|
|
#. Verify that network booting is started:
|
|
|
|
.. code-block:: console
|
|
|
|
$ journalctl -f -u dnsmasq
|
|
dnsmasq-tftp[5386]: sent /srv/tftp/zephyr.efi to 10.1.1.28
|
|
|
|
#. When the boot process completes, you have finished booting the
|
|
Zephyr application image.
|
|
|
|
.. _EHL: https://www.intel.com/content/www/us/en/products/docs/processors/embedded/enhanced-for-iot-platform-brief.html
|