# tinyOs **Repository Path**: may0511/tinyOs ## Basic Information - **Project Name**: tinyOs - **Description**: 一个基于CortexM系列的微型操作系统,支持PY32以及AT32等资源受限单片机,内置AST解析器,letterShell等组件。 - **Primary Language**: C - **License**: MIT - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 2 - **Created**: 2024-09-30 - **Last Updated**: 2025-09-16 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # tiny os 本项目是一个基于类单片机实现的一套归一化的系统接口以及一个轮转式的调度系统,旨在对上提供一套兼容性强,并且易于移植的操作系统。 ## 1.各文件夹的作用: * 1.`board`文件夹提供了板级系统接口,所有的板级驱动均位于该文件夹下,其中`0_Common`文件夹中主要存放的是一些板级的配置文件0_Common,如(`AT32`提供了针对at32f425系列单片机的板级接口),其中`board_adapt`提供了系统需要的各硬件启动接口,`core`中提供啦系统启动以及系统调度接口。 * 2.`Doc`为各厂家的数据手册。 * 3.`platform`中提供了系统接的接口。 * 4.`start_up`各芯片主函数存放位置。 * 5.`project`各个芯片的项目路径。 ## 2.平台部分: 1.内核代码位于`platform\OsSupport\tinyOs`路径下,核心部分是`tinyOs.c`中的代码实现,`tinyOs_pthread.c`提供了一套兼容`pthread`的接口。 2.内核的配置可以参考`at32f425Config.c`,其内部可以通过能平台提供的config模块进行选择,config模块的结构体`BoardStartUp`实现如下: ```c typedef struct BoardStartUp { const char *KeyName; const char *DependOn; const char *arg; _init_fund *init_fund; int result; }BoardStartUp; ``` 成员`DependOn`字符串支持逆波兰算法,也就是说该模块可以写为如下代码: ```c BoardStartUp InitTable[] = { int BoardGpioInit(int argc,char** arg) { GpioInit(); return 1; } int Boardosinit(int argc,char** arg) { int KeyValue = 0; get_config_value("UseTinyOs", NULL, 0, &KeyValue); if (KeyValue == 1) { tinyos_printf("TinyOs init\r\n"); return TinyOSInit() == 0; } return -1; } int BoardRunLed(int argc,char** arg) { int KeyValue = 0; get_config_value("RunLedTask", NULL, 0, &KeyValue); if (KeyValue == 1) { tinyos_printf("RunLed init\r\n"); return CreataTask(run_led, NULL, "Running Led", 145, 1) != -1; } return -1; } BoardStartUp InitTable[] = { {"GpioInit",NULL,NULL,BoardGpioInit,0}, {"OsInit",NULL,NULL,Boardosinit,0}, {"BoardRunLed","OsInit==1 && GpioInit==1",NULL,BoardRunLed,0}, //运行灯任务的创建依赖于BoardGpioInit与OsInit两个初始化函数执行成功 }; ``` ## 3.`platform\plantfHardware`提供了平台级的标准接口。