This is the landing spot for software documentation within the OpenTitan project. More description and information can be found within the [Reference Manual]({{< relref “doc/rm” >}}) and [User Guide]({{< relref “doc/ug” >}}) areas.
There are three major parts to the OpenTitan software stack:
We use the term “image” to denote a complete, standalone executable which has been prepared for the OpenTitan platform chip. This is to differentiate from a “library”, which is a collection of functions that are not complete enough to run on their own.
This software runs on the primary core within the OpenTitan platform chip itself. You can find all the device software in the sw/device
directory of the repository.
The device software is split into two parts:
Device software must be written in C, Assembly, or Rust.
This software runs on the OTBN cryptographic co-processor within the OpenTitan platform chip. You can find all the OTBN software in the sw/otbn
directory of the repository.
This software consists of a number of hand-written assembly routines which can be run on the OTBN co-processor.
Normally, this software can not be run on its own, and the main processor has to set up the data and instructions for the OTBN co-processor before it triggers the start of execution.
OTBN Software must only be written in Assembly.
This software is for host-side use, either in preparing images or interacting with a running OpenTitan platform chip. You can find all the host software in the sw/host
directory of the repository.
Host software must be written in C++ or Rust.
The OpenTitan Software API Documentation contains automatically generated documentation for the public software APIs. This includes the Device Interface Functions (DIFs).
All DIFs are also documented on their respective [Hardware IP Specification]({{< relref “hw” >}})
See [Vendor Tool User Guide]({{% relref “doc/ug/vendor_hw.md” %}})