| # 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, we’ll 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. |