# Phytium-seL4-Sdk **Repository Path**: phytium_embedded/phytium-seL4-sdk ## Basic Information - **Project Name**: Phytium-seL4-Sdk - **Description**: Phytium-driven,seL4 kernel-based,virtual machine and applications. - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 4 - **Forks**: 1 - **Created**: 2026-03-06 - **Last Updated**: 2026-07-07 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Phytium seL4 SDK v1.2.0 基于开源微内核 seL4,借助 Microkit 开发套件进行封装,结合 Phytium-Standalone-SDK 驱动组件,实现用户态 Hypervisor(VMM)与示例应用程序。支持飞腾嵌入式 CPU,提供高效安全的虚拟化支持。 ## 软件架构 1. **seL4 微内核**(拉取)是最底层,提供内核基础服务。它不包含任何设备驱动,所有驱动都在用户态实现。 2. **Microkit**(本地)在 seL4 之上封装为保护域(PD)模型,开发者通过 `.system` 文件描述内存/中断/通信拓扑,无需直接操作 seL4 API。 3. **VMM 和 Example**(本地)都基于 Microkit API 开发。VMM 在 Microkit 上叠加 stage-2 页表转换,实现虚拟机监控器。 4. **Standalone-SDK**(拉取)是裸机驱动库,SDK 将其驱动代码移植到 seL4 用户态,在 Microkit PD 模型下运行——驱动不运行在内核,而是作为用户态 PD 的一部分。 ## 支持平台 | SoC | 对应开发板 | 说明 | |-----|-----------|------| | PD2308 | D3000 | 8 核 ARMv8 | | PE2204 | E2000Q | 4 核 ARMv8 | | PD2408 | D3000M | 8 核 ARMv8 | ## 驱动支持 基于 Phytium-Standalone-SDK,提供以下驱动组件: | 驱动 | 说明 | 使用位置 | |------|------|---------| | UART (PL011) | 串口通信,Shell 交互 | example/hypervisor, example | | XMAC | 以太网控制器,LWIP 协议栈 | example/xmac, example/hypervisor guest | | SD/MMC | SD 卡/eMMC 存储读写 | example/sd | | GPIO | 通用输入输出 | freertos guest | ## 示例程序 `example/` 目录收录了各参考用例: | 用例 | 说明 | 支持平台 | |------|------|---------| | `templates/single_pd` | 单保护域模板,seL4 应用开发起点 | PD2308, PE2204 | | `templates/multi_pd` | 多保护域 SMP 通信(共享内存) | PE2204 | | `memory` | 虚拟内存读写测试(低/高地址 + 动态分配) | PD2308, PE2204 | | `xmac` | XMAC 以太网 IPv4 网络通信(LWIP) | PD2308, PE2204 | | `sd` | SD/TF 卡和 eMMC 检测、读写、性能基准 | PD2308, PE2204 | | `hypervisor` | VMM 虚拟机监控器(调用 components/vmm 组件) | PD2308, PE2204, PD2408 | 每个用例下有独立的 `README.md` 说明用法和预期输出。 ## Guest OS 支持 | Guest 类型 | 功能 | 适用平台 | |-----------|------|---------| | standalone gicv3 | GICv3 中断测试(SGI/PPI/SPI) | PD2308, PE2204 | | standalone xmac_mem | XMAC 网络 + 内存读写 | PD2308, PE2204 | | standalone amp_tools | AMP 多核通信 | PD2308, PE2204 | | FreeRTOS | 单核/多核 |PD2308, PE2204 | | Linux | Alpine Linux kernel 5.10 | PD2308, PE2204, PD2408 | ## 快速开始(示例) ### 1. 安装环境 ```bash ./install.py ``` ### 2. 编译 Hypervisor ```bash cd example/hypervisor make load_kconfig LOAD_CONFIG_NAME=pe2204_aarch64_demo_hypervisor_smp make full_clean && make boot ``` ### 3. 编译 Example ```bash cd example/templates/single_pd make load_kconfig LOAD_CONFIG_NAME=pe2204_aarch64_demo_template make full_clean && make boot ``` 详细用法参考各目录下的 README.md。 ## 注意事项 - 首次运行 `./install.py` 如遇 pyenv TIMEOUT,可切换国内镜像源 - Microkit 依赖 Rust 工具链,需先安装 `rustup` - 编译如遇 `cargo not found`,执行 `curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh`