找到
1
篇与
Tenon
相关的结果
-
Tenon {card-default label="📦 项目信息"} 🔧 项目名称:Tenon 💻 开发语言:C ⭐ Star数:119 | 🍴 Fork数:33 📜 开源协议:Apache-2.0 🔗 项目地址:https://gitee.com/tenonos/tenon {/card-default} 项目介绍 基于libos架构的操作系统核心库及构建工具 项目详情 Static Version Badge Static License Badge Static Language Badge TenonOS:简化复杂性,释放创新力,重塑操作系统的开发模式 TenonOS是一款基于LibOS架构的操作系统,旨在提升操作系统扩展、裁剪、移植效率,基于丰富的微库组件池,实现跨场景、跨行业、跨领域的快速能力复用,灵活生成与场景最契合的OS实体。 架构 与传统宏内核、微内核架构的操作系统不同,Tenon采用微库解耦架构,借鉴Unikraft的实现方式,将kernel、驱动、服务进一步拆分封装成接口解耦、功能独立的微库,使用Kconfig进行微库配置和依赖关系管理。Tenon不约束操作系统或内核必须由哪些部件组成,用户可以根据自己的需求选择TenonOS社区或UK社区提供的微库,甚至可以基于框架提供的API封装实现自己的调度器、内存分配器、线程池、同步锁、特定系统调用等微库,达到任意裁剪、新增、优化操作系统功能的目的,使软硬件性能、资源利用率达到极致。 目前Tenon的构建代码和基础框架使用Unikraft V0.16.0版本作为基线,并增加以下平台和主要特性: 支持的平台 平台CPU架构启动协议状态树莓派arm64Linux 64-bit boot protocol已支持rk3568arm64Linux 64-bit boot protocol已支持kvmarm64Linux 64-bit boot protocol已支持d9arm64Linux 64-bit boot protocol已支持关键特性 [x] 支持嵌入式平台:plat-raspi、plat-rk3568 [x] posix接口兼容 -- 持续更新 [x] 调试工具:openocd+gdb [x] 调试工具:NS8250串口驱动 [x] 实时微库:支持抢占式调度 [x] 实时微库:支持中断抢占、中断嵌套 [x] 同步微库:支持自旋锁、互斥锁、信号量、消息队列 [x] 支持虚拟文件系统 [x] 网络微库:netdev框架 [ ] SMP:支持多核启动和跨核调度 [ ] 网络微库:rk3568网卡驱动 示例应用 helloworld rtos-benchmark 对象识别 busybox 如何使用 代码结构 除Tenon框架API和核心微库外,TenonOS社区主仓还提供了用于编译构建的板级支持包仓库、以app为前缀的应用仓库、以lib为前缀的外部微库、以driver为前缀的外部驱动微库、以plat为前缀的外部平台仓库。这些微库会在后续逐步开源。构建时工作目录结构如下 . ├── apps /*此目录用于维护运行在os之上的app,下为示例*/ │ ├── app-busybox │ ├── app-elfloader │ ├── app-helloworld │ ├── app-helloworld-cpp │ └── app-tflite ├── board-support-package /*此目录用于维护板级支持包,包括设备树、bootloader等。下为示例*/ │ ├── kvm │ └── raspberry-pi-3b+ ├── drivers /*此目录用于维护外部驱动,“外部”指不在tenon核心仓维护的代码仓*/ ├── libs /*此目录用于维护外部微库,下为示例*/ │ ├── lib-libcxx │ └── lib-tflite-micro ├── plats /*此目录用于维护外部平台,包含对应平台的os初始化代码。下为示例*/ │ ├── plat-raspi │ └── plat-rk3568 └── tenon /*tenon核心仓库,用于维护API框架和内部微库*/ ├── arch /*cpu架构相关代码*/ ├── build /*保存构建出的镜像和中间产物*/ ├── drivers /*用于维护内部驱动*/ ├── include /*跨微库共用的宏定义、结构体定义等*/ ├── lib /*用于维护框架微库和内部微库*/ ├── plat /*用于维护内部平台,如kvm*/ └── support /*编译构建脚本*/使用指导 Tenon使用make完成编译构建,当前支持kvm、树莓派3b+、rk3568等平台,使用指导请参考quick_start 社区贡献 Tenon欢迎各方以个人、组织、企业形式参与到社区贡献当中,贡献指导请参考Contributing License Tenon采用Apache-2.0开源许可协议。当前代码仓中仍有部分unikraft代码,unikraft采用BSD-3-Clause开源许可协议。当前开发过程中,若要修改uk原有微库的代码,请保留文件中原有LICENSE说明,新增微库或特性请使用Apache-2.0协议。后续开源进程中我们将逐步移除对uk代码的依赖。 参考资源 设计文档 API文档 博客 RequestForComments 微库中心 社区主页 Roadmap ⬇️ 下载地址 下载后请先检查文件完整性,如有问题请在评论区反馈