# nonos **Repository Path**: wang-zhulin/nonos ## Basic Information - **Project Name**: nonos - **Description**: 简化的rtos - **Primary Language**: Unknown - **License**: Apache-2.0 - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 2 - **Forks**: 1 - **Created**: 2025-08-27 - **Last Updated**: 2026-03-08 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # nonos > A simple bare-metal task scheduling framework for MCU. `nonos`比`tinyos`和`notos`更简单。 `tinyos`是一个真正的rtos,每个任务都是一个独立的线程。 `notos`是利用C语言的一些魔法提供了类似rtos的接口,在遵循一些不那么令人讨喜的规则和限制之后,每个任务可以看起来“像”一个独立的线程。 `nonos`则更为简单。`nonos`中的“任务”彻底退化为回调函数:定时回调和事件回调。定时任务根据周期触发,事件回调则可通过`nos_event_post`触发。该接口可在任意任务或中断函数中调用。 基于类似`nonos`的方案开发MCU程序,编码者需注意设计自己的任务实现方式,需保证**每个任务函数都应能迅速完成**。 在rtos的世界里,一个任务可以长时间占用cpu,只要它的优先级够低,则其他高优先级的任务仍能按照正确的节奏被调度。但`nonos`的世界中不存在真正的调度,不存在抢占。原本直观的一系列操作,用户需要将其拆分为若干阶段,以状态机的方式,每一次被“调度”的时候只执行其中的一小段。 `nonos`和`notos`一样,无法提供实时性保障。但在一些实时性要求不高、系统资源有限的场合,简单的解决方案或许更有用武之地。