Tenon

陆伍
1小时前发布 /正在检测是否收录...
广告 广告 广告 广告 广告 广告 广告 广告 广告 广告

项目介绍

基于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已支持

关键特性

  • 支持嵌入式平台:plat-raspi、plat-rk3568
  • posix接口兼容 -- 持续更新
  • 调试工具:openocd+gdb
  • 调试工具:NS8250串口驱动
  • 实时微库:支持抢占式调度
  • 实时微库:支持中断抢占、中断嵌套
  • 同步微库:支持自旋锁、互斥锁、信号量、消息队列
  • 支持虚拟文件系统
  • 网络微库: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代码的依赖。

参考资源

⬇️ 下载地址

喜欢就支持一下吧
点赞 0 分享 赞赏
评论 抢沙发
OωO
取消
广告