blob: c69d2dd1224442bc3d4713a90d6e87f5a377fe11 [file] [log] [blame] [view]
# Project Open Se Cura
Open Se Cura is a project to build a low-power secure embeded platform
for Ambient ML applications. The target platform leverages
[RISC-V](https://riscv.org/) and [OpenTitan](https://opentitan.org/).
The Open Se Cura
software includes a home-grown operating system named CantripOS, that runs
on top of [seL4](https://github.com/seL4) and (ignoring the seL4 kernel)
is written almost entirely in [Rust](https://www.rust-lang.org/).
The Open Se Cura (and CantripOS) are definitely a work in progress. The CantripOS
components are based on an augmented version of seL4's
[CAmkES framework](https://docs.sel4.systems/projects/camkes/).
Critical system services
are CAmkES components that are statically configured. Applications are
developed using an AmbiML-focused SDK and dynamically loaded by the
system services.
## Open Se Cura repositories (what's included here)
Open Se Cura consists of multiple git repositories stitched together with the [repo
tool](https://gerrit.googlesource.com/git-repo/+/refs/heads/master/README.md).
The following git repositories are currently available:
- *build*:
top-level build targets
- *cantrip*:
frameworks for developing in Rust and the CantripOS system services
- *docs*:
various markdown docs on development flows/steps
- *hw*:
HW RTL source code for building blocks of Open Se Cura
- *ml*:
example ML programs based on open-source models
- *scripts*:
support scripts
- *sw*:
SW BSP and programs to run on Open Se Cura.
- *sim*:
Behavioral simulation and RTL simulation environment for Open Se Cura.
- *toolchain*:
[IREE](https://github.com/openxla/iree) ML toolchain
## How we do software development for the Open Se Cura platform
Our primary development environment uses Renode for simulation of the Open Se Cura
hardware design. Renode allows us to do rapid software/hardware co-design of
our multi-core RISC-V target platform. The software environment is derived
from those provided by seL4 & OpenTitan. Debugging leverages Renode facilites
and [gdb talking to Renode](https://antmicro.com/blog/2022/06/sel4-userspace-debugging-with-gdb-extensions-in-renode/)
for system software and application developement.
## Getting started with repo & the build system
This repository includes a multi-platform build framework for use with the
Open Se Cura software. This framwork leverages make, cmake, and cargo.
To get started follow these download steps to clone the Open Se Cura project from
[repo](https://opensecura.googlesource.com) using the
[repo tool](https://gerrit.googlesource.com/git-repo/+/refs/heads/master/README.md)
We assume below this lands in a top-level directory named "opensecura".
``` shell
mkdir opensecura
cd opensecura
repo init -u https://opensecura.googlesource.com/manifest
repo sync -j$(nproc)
```
See the top-level GettingStarted.md for more detail once you download the repository
with `repo sync`
## Source Code Headers
Every file containing source code includes copyright and license
information. For dependent / non-Google code these are inherited from
the upstream repositories. If there are Google modifications you may find
the Google Apache license found below.
Apache header:
Copyright 2023 Google LLC
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
https://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
## Contributing to Open Se Cura
Going forward, well continue to evolve Open Se Cura in the open and seek to
gradually onboard additional partners to contribute to the codebase. Please
contact project-open-se-cura-community@googlegroups.com for more information.