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® Atom™ SoC.
Hardware
General information about the board can be found at the EHL website.
Supported Features
In addition to the standard architecture devices (HPET, local and I/O APICs, etc.), Zephyr supports the following Elkhart Lake-specific SoC devices:
I2C
SMBus
UART Serial Port Support
The Elkhart Lake UARTs are NS16550-compatible. Baud rate of 115.2kbps is supported.
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.
Build Zephyr application
Build a Zephyr application; for instance, to build the
hello_world
application on Elkhart Lake CRB:# From the root of the zephyr repository west build -b intel_ehl_crb samples/hello_world
Note
A Zephyr EFI image file named
zephyr.efi
is automatically created in the build directory after the application is built.
Booting the Elkhart Lake CRB Board using UEFI
Preparing the Boot Device
Prepare a USB flash drive to boot the Zephyr application image on a board.
Format the USB flash drive as FAT32.
On Windows, open
File Explorer
, and right-click on the USB flash drive. SelectFormat...
. Make sure inFile System
,FAT32
is selected. Click on theFormat
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:$ 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
zephyr/zephyr.efi
to the USB drive.
Booting Zephyr on a board
Boot the board to the EFI shell with USB flash drive connected.
Insert the prepared boot device (USB flash drive) into the board.
Connect the board to the host system using the serial cable and configure your host system to watch for serial data. See board’s website for more information.
Note
Use a baud rate of 115200.
Power on the board.
When the following output appears, press F7:
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.
Shell> fs0:zephyr.efi
When the boot process completes, you have finished booting the Zephyr application image.
Booting the Elkhart Lake CRB Board over network
Prepare Linux host
Install DHCP, TFTP servers. For example
dnsmasq
$ sudo apt-get install dnsmasq
Configure DHCP server. Configuration for
dnsmasq
is below:# Only listen to this interface interface=eno2 dhcp-range=10.1.1.20,10.1.1.30,12h
Configure TFTP server.
# 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
zephyr/zephyr.efi
to the/srv/tftp
folder.$ cp zephyr/zephyr.efi /srv/tftp
TFTP root should be looking like:
$ tree /srv/tftp /srv/tftp └── zephyr.efi
Restart
dnsmasq
service:$ sudo systemctl restart dnsmasq.service
Prepare the board for network boot
Enable PXE network from BIOS settings.
Make network boot as the first boot option.
Booting the board
Connect the board to the host system using the serial cable and configure your host system to watch for serial data. See board’s website for more information.
Note
Use a baud rate of 115200.
Power on the board.
Verify that the board got an IP address. Run from the Linux host:
$ 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:
$ 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.
Note
To enable PXE boot for Elkhart Lake CRB board do the following:
Enable boot from PXE. Go to EFI shell and make sure that the first boot option is
UEFI PXEv4
.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 orderShell> bcfg boot mv 7 0