The latest development version of this page may be more current than this released 4.0.0 version.

OpenTitan Earl Grey

Overview

The OpenTitan Earl Grey chip is a low-power secure microcontroller that is designed for several use cases requiring hardware security. The OpenTitan Github [2] page contains HDL code, utilities, and documentation relevant to the chip.

Hardware

  • RV32IMCB RISC-V “Ibex” core

  • 128kB main SRAM

  • Fixed-frequency and AON timers

  • 32 x GPIO

  • 4 x UART

  • 3 x I2C

  • 2 x SPI host

  • 1 x SPI device

  • Various security peripherals

Detailed specification is on the OpenTitan Earl Grey Chip Datasheet [1].

Supported Features

The opentitan_earlgrey board configuration is designed and tested to run on the Earl Grey chip simulated in Verilator, a cycle-accurate HDL simulation tool.

Interface

Controller

Driver/Component

NVIC

on-chip

nested vector interrupt controller

Timer

on-chip

RISC-V Machine Timer

UART

on-chip

serial port-polling

SPI

on-chip

SPI host

WDT

on-chip

Always-On Timer (Watchdog)

Other hardware features are not yet supported on Zephyr porting.

Programming and Debugging

First, build and install Verilator as described in the OpenTitan Verilator Setup [3] guide .

Building and Flashing

Here is an example for building the Hello World application. The following steps were tested on OpenTitan master branch @ 6a3c2e98.

# From the root of the zephyr repository
west build -b opentitan_earlgrey samples/hello_world

The OpenTitan Vchip_sim_tb tool can take the Zephyr .elf as input and place it in simulated flash. The OpenTitan test ROM will then run in simulation, read the manifest header from simulated flash, and begin executing Zephyr from the entry point.

$OT_HOME/bazel-bin/hw/build.verilator_real/sim-verilator/Vchip_sim_tb --verbose-mem-load \
-r $OT_HOME/bazel-out/k8-fastbuild-ST-2cc462681f62/bin/sw/device/lib/testing/test_rom/test_rom_sim_verilator.39.scr.vmem \
--meminit=otp,$OT_HOME/bazel-out/k8-fastbuild/bin/hw/ip/otp_ctrl/data/img_rma.24.vmem \
--meminit=flash,$ZEPHYR_PATH/build/zephyr/zephyr.elf

UART output:

I00000 test_rom.c:135] Version: earlgrey_silver_release_v5-9599-g6a3c2e988, Build Date: 2023-01-17 16:02:09
I00001 test_rom.c:237] Test ROM complete, jumping to flash (addr: 20000384)!
*** Booting Zephyr OS build zephyr-v3.2.0-3494-gf0729b494b98 ***
Hello World! opentitan_earlgrey

References