Tutorials & Training

Follow maintained tutorials that match your platform, then progress from first builds to porting, compartments, debugging, and assurance.

CHERI spans hardware, compilers, operating systems, C and C++ semantics, and security architecture. A staged path connects these layers to practical work without requiring them all in the first exercise. Begin with one maintained platform and add concepts as the experiments need them.

1. Understand the problem

Begin with:

A useful outcome from this stage is the ability to explain bounds, permissions, tags, and least privilege without referring to a particular processor.

2. Run a prepared environment

Use Run CHERI in Simulation to boot CheriBSD in QEMU or run a CHERIoT example. Getting a supplied example working first gives later toolchain changes a known reference point.

Success means you can reproduce the build, name the architecture and application binary interface (ABI), and capture one deliberate capability fault.

3. Build and inspect code

Complete Build Your First Application. Inspect the binary or firmware image with the target tools. Use the debugger to view a capability and identify its address, bounds, permissions, and tag.

4. Port existing software

Choose a small library with tests. Classify each change rather than patching until it compiles. Typical categories are pointer-integer conversions, object bounds, custom allocation, serialisation, inline assembly, and ABI boundaries.

5. Introduce a compartment

Move a parser or similarly narrow component behind a capability interface. Document what it receives and prove that it cannot reach an unrelated object or service.

Maintained technical resources

General CHERI and CheriBSD

CHERIoT

Linux, Zephyr, and ecosystem projects

Training for teams

A useful team workshop should produce artifacts, not only slides. Ask participants to deliver:

Separate introductory learning from product assurance. A tutorial can show the mechanism, while an assurance claim needs a named architecture, implementation, build, workload, and threat model.

Check material before relying on it

CHERI toolchains and target names evolve. Prefer documentation versioned with the source or release you are using. When following a conference recording or older tutorial:

  1. note its date and target architecture
  2. compare commands with the current repository
  3. avoid mixing Morello, generic CHERI-RISC-V, and CHERIoT flags
  4. record any changes needed to reproduce the exercise

That reproduction log is useful learning in its own right and helps improve the documentation for the next developer.

Where next

Find maintained source code, development kits, simulators, operating systems, documentation, and examples for the selected platform.

Downloads →