CantripOS 上手2:CantripOS 软件组织结构

更多软件将会在我们认为它已经准备好分享的时候发布,直到最终所有 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 平台]

系统服务的集合取决于目标平台。目前有两个平台可以构建:Sparrowrpi3(以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 的分配器。

allocatorlogger crates 被系统服务和应用程序都使用。

包版本控制
我们仍在解决包版本控制的问题。目前开发完全是从源代码进行的,并且仍在积极开发中,因此没有更新包版本的相关特性。

原文地址:点击打开

下一节:CantripOS 目标架构依赖

1 Like

感谢分享!“CantripOS的大部分代码是用Rust语言编写的”, 很感兴趣。

谢谢大佬分享!

谢谢分享!

厉害了 啥也看不懂(ToT) 还得继续学习

谢谢分享!