更多软件将会在我们认为它已经准备好分享的时候发布,直到最终所有 Sparrow(软件和硬件设计)都可以获得。
CantripOS的大部分代码是用Rust语言编写的。Rust crates 存放在这个 git 存储库的 apps/system/components
目录中。CantripOS 系统服务被构造成 CAmkES 组件。目标平台相关的服务被标记:例如[仅限于 Sparrow 平台]
,表示这些服务仅支持在 apps/system/platforms/sparrow
上。
-
DebugConsole:一个面向调试版本的命令行接口,还可以处理日志记录到控制台。
-
MailboxDriver:用于在安全核心和管理核心之间通信的 Mailbox 接口的驱动程序
[仅限于 Sparrow 平台]
。 -
MemoryManager:支持动态内存/对象管理的服务。
-
MlCoordinator:管理运行 ML 作业的服务
[需要 Sparrow 平台的 ML 加速器支持]
。 -
ProcessManager:创建和管理应用程序执行的服务。
-
SDKRuntime:处理应用程序运行时请求的服务。
-
SecurityCoordinator:提供一个接口到安全核心的服务(使用 MailboxDriver)。
-
TimerService:为系统服务和应用程序提供定时器的服务
[需要硬件定时器支持]
。 -
UARTDriver:管理核心上的 UART 的驱动程序
[仅限于 Sparrow 平台]
。
系统服务的集合取决于目标平台。目前有两个平台可以构建:Sparrow
和 rpi3
(以64位模式运行的 Raspberry Pi BCM2837)。Sparrow
平台目前除了作为参考之外并不实用,因为构建它需要工具链和模拟器支持,这些支持尚未发布。rpi3
平台是面向公众消费的目标平台。欢迎贡献额外的平台支持(例如,rpi3 定时器驱动程序可以启用 TimerService)。
所有平台支持的 CantripOS 服务都包括在调试版本和发布版本中。生产版本将 DebugConsole 替换为更受限的接口,并在没有串行控制台时删除 UART 驱动程序。SDKRuntime 更多地是一个概念验证。在 apps 树中编写了用 C 和 Rust 编写的测试应用程序,以使用实验性的 API 进行测试。生产系统可能有自己的 SDK 和相关的运行时,以满足其需求。
除了上述系统服务之外,通用/共享代码位于 cantrip-os-common
目录/包中:
-
allocator:一个基于 linked-list-allocator crate 构建的堆分配器。
-
camkes:支持使用 Rust 编写 CAmkES 组件。
-
capdl:支持读取由 capDL-tool 生成的 capDL 规范。
-
copyregion:一个帮助程序,用于将物理页面临时映射到线程的 VSpace 中。
-
cspace-slot:一个 RAII 帮助程序,用于 slot-allocator。
-
logger:与 Rust logger crate 集成的 seL4。
-
model:支持处理 capDL,由 cantrip-os-rootserver 使用。
-
panic:一个 seL4 特定的 panic 处理程序。
-
sel4-config:用于 seL4 内核配置的构建支持。
-
sel4-sys:seL4 系统接口和构建支持。
-
slot-allocator:用于顶级 CNode 中 slot 的分配器。
allocator
和 logger crates
被系统服务和应用程序都使用。
包版本控制
我们仍在解决包版本控制的问题。目前开发完全是从源代码进行的,并且仍在积极开发中,因此没有更新包版本的相关特性。
原文地址:点击打开
下一节:CantripOS 目标架构依赖