组件开发指南
TGOSKits 的核心价值不仅在于将各仓库整合到同一工作区,更在于使开发者能够从组件出发,追踪其在 ArceOS、StarryOS 和 Axvisor 中的实际使用方式。本文档介绍 TGOSKits 的多层组件架构、改动影响评估、验证路径选择,以及将新组件接入三套系统的标准流程。
若已知目标 crate 的名称,建议配合 组件概述 阅读本文档:本文档侧重说明"组件处于哪一层、通常影响哪些系统",而组件概述负责回答"它依赖哪些包、文档入口在哪里"。
1. 组件层次结构
新开发者常见的误解是:只有 components/ 下的目录才算组件。实际上,TGOSKits 包含六类组件化层次,每一层均有其职责定位和消费者群体。理解这些层次的划分,对于评估改动影响范围和选择验证路径至关重要。
下表总结了六类组件层次的路径、职责、典型内容与主要消费者:
| 路径 | 角色 | 典型内容 | 主要消费者 |
|---|---|---|---|
components/ | subtree 管理的独立可复用 crate | ax-errno、ax-kspin、axvm、starry-process | 三套系统都可能直接或间接使用 |
os/arceos/modules/ | ArceOS 内核模块 | ax-hal、ax-task、ax-net、ax-fs | ArceOS,且经常被 StarryOS 和 Axvisor 复用 |
os/arceos/api/ | feature 与对外 API 聚合 | ax-runtime、ax-api | ArceOS 应用、StarryOS、Axvisor |
os/arceos/ulib/ | 用户侧库 | ax-std、ax-libc | ArceOS 示例与用户应用 |
os/StarryOS/kernel/ | StarryOS 内核逻辑 | syscall、进程、内存、文件系统 | starryos 包 |
os/axvisor/ | Hypervisor 运行时与配置 | src/、configs/board/、configs/vms/ | Axvisor |
除上述六类核心组件层次外,以下两个目录在验证组件功能和系统集成时也需关注:
platforms/*:平台实现test-suit/*:系统级测试入口
2. 组件依赖关系
理解组件的依赖流向对于评估改动影响范围至关重要。以下流程图展示了从可复用 crate 到最终系统的典型路径:
上述流程图表示常见的三种组件依赖路径:
-
纯复用 crate 直接被系统包依赖
例如components/starry-process、virtualization/axvm -
先经过 ArceOS 模块层,再被上层系统消费
例如ax-hal、ax-task、ax-driver、ax-net -
通过平台和配置接到最终系统
例如内置动态平台platforms/axplat-dyn、外部自定义ax-plat-*兼容包、Axvisor 的configs/board/*.toml
2.1 依赖统计
仓库内 148 个 crate 之间的内部有向边共 533 条,最大层级 16。
| 分类 | 数 |
|---|---|
| ArceOS 层 | 30 |
| Axvisor 层 | 2 |
| StarryOS 层 | 2 |
| 工具层 | 2 |
| 平台层 | 2 |
| 测试层 | 17 |
| 组件层 | 93 |