# CYNOS **Repository Path**: chenyananee/CYNOS ## Basic Information - **Project Name**: CYNOS - **Description**: 裸机前后台伪操作系统,占用少量资源,组件耦合低,可裁剪性强 - **Primary Language**: C - **License**: Apache-2.0 - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 4 - **Forks**: 0 - **Created**: 2020-04-20 - **Last Updated**: 2026-03-17 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # CynOS(轻量可裁剪伪操作系统) ___ > ***注:为提高系统资源利用率用户任务内避免阻塞,系统已提供一套简单的状态机编程模块*** ___ ## 特性 1. 占用少量资源,组件耦合低,可裁剪性强,移植简单 2. 方便裸机模块化编程 3. 提供系统模块常用框架 ## 系统裁剪 1. 配置cynos_cfg.h文件即可 ## 移植方法(可具体查看demo.c) 1. 包含cynos.h文件 ``` #include "cynos.h" int main(void) { ... } ``` 2. 创建一个内核对象如:创建了一个ui的内核对象,该对象内可以创建5个任务 ``` #include "cynos.h" CREATE_KERNEL_OBJ(ui,5) int main(void) { ... } ``` 3. 为ui内核对象提供时钟,在定时器中断系统中调用Tick ``` void timer_1ms_interrupt() { CynOS_KernelObj_Tick(CYNOS_KEROBJ(ui),1); } ``` 4. 初始化内核对象 ``` int main(void) { CynOS_KernelObj_Init(CYNOS_KEROBJ(ui),5,0); } ``` 5. 创建任务(创建一个user_task的任务 该任务的出初始化函数为user_task_init 并且该任务以不同周期运行) ``` int main(void) { CynOS_KernelObj_Init(CYNOS_KEROBJ(ui),5,0); CynOS_Kernel_Task_Create(CYNOS_KEROBJ(ui), user_task1_init, user_task1, 1000); CynOS_Kernel_Task_Create(CYNOS_KEROBJ(ui), 0, user_task2, 50); CynOS_Kernel_Task_Create(CYNOS_KEROBJ(ui), user_task3_init, user_task3, 60000); CynOS_Kernel_Task_Create(CYNOS_KEROBJ(ui), user_task4_init, user_task4, 200); } ``` 6. 开始任务调度(启动内核对象的线程调度) ``` int main(void) { CynOS_KernelObj_Init(CYNOS_KEROBJ(ui),5,0); CynOS_Kernel_Task_Create(CYNOS_KEROBJ(ui), user_task1_init, user_task1, 1000); CynOS_Kernel_Task_Create(CYNOS_KEROBJ(ui), 0, user_task2, 50); CynOS_Kernel_Task_Create(CYNOS_KEROBJ(ui), user_task3_init, user_task3, 60000); CynOS_Kernel_Task_Create(CYNOS_KEROBJ(ui), user_task4_init, user_task4, 200); //Kernel run CynOS_Start(CYNOS_KEROBJ(ui),KERNEL_RUN_FOREVER); } ``` ## 移植DEMO > 系统移植DEMO - 任务建立及状态机模块的使用示例(可查看demo.c) ## 配置 | 宏名 | 描述 | | :------------ |:---------------:| | CONFIG_CYNOS_CPU_LEN | 系统位宽 | | CONFIG_CYNOS_SYSTICK_PERIOD | 系统时基速度(产生一次中断的时间单位MS) | | CONFIG_USE_CYNOS_DEBUG | 调试模块开关 | | CONFIG_USE_CYNOS_EVENT | 事件功能开关 | | CONFIG_CYNOS_DEBUG_SIZE | DEBUG 模块资源 |