重命名 说明文档(持续更新中...) 为 说明文档

This commit is contained in:
零中断延迟的RTOS
2024-01-02 17:52:24 +00:00
committed by Gitee
parent a598f8e49f
commit 48ab8acd32
6 changed files with 0 additions and 0 deletions

View File

@@ -0,0 +1,163 @@
### 拷贝系统文件<br>
**System**CosyOS的内核文件。<br>
**Config**CosyOS的配置文件包括系统配置文件和MCU配置文件。<br>
**Hook**CosyOS已经为用户创建好了六个系统钩子函数分别位于各自同名的C文件中用户直接写代码即可。<br>
拷贝上述三个文件夹及其下属文件至您的工程文件夹。<br>
### 添加Group和文件<br>
打开工程添加三个Group分别命名为System、Config、Hook再分别添加同名文件夹下的所有文件至各个Group。<br>
Config组可以添加所有文件也可有选择的添加文件。首先添加syscfg.h再添加相应的MCU配置文件。<br>
如您使用的是51单片机应添加mcucfg_8051.c和mcucfg_8051.h<br>
如您使用的是Cortex-M内核应添加mcucfg_cmx.c和mcucfg_cmx.h。<br>
![输入图片说明](../images/KFLC_group_1.png)<br>
![输入图片说明](../images/KFLC_group_2.png)<br>
### 配置工程<br>
#### 8051内核
一、使用LX51扩展链接器<br>
![输入图片说明](../images/KFLC_8051_1.png)<br>
二、内存模型<br>
内存模型仅支持Large不要选择其它。如果您的变量希望定义在其它内存可在定义时指定存储域。<br>
![输入图片说明](../images/KFLC_8051_2.png)<br>
三、优化级别<br>
可选级别4~8级<br>
推荐级别8级default<br>
CosyOS支持高等级优化您完全可以选择8级defaultspeed偏向于代码执行效率size偏向于减少代码量。<br>
最低不能低于4级必须启用寄存器变量优化最高不能高于8级。即使代码放不下您也不能把优化级别<br>
设置为9级或以上可通过删减代码或增大flash来解决。<br>
![输入图片说明](../images/KFLC_8051_3.png)<br>
四、不覆盖/可重入/移除未使用<br>
1、LX51 Misc标签页添加控制命令“NOOVERLAY”以禁用数据覆盖。<br>
![输入图片说明](../images/KFLC_8051_4.png)<br>
2、由于CosyOS for 8051在设计上已摒弃了传统的可重入栈【IBP/PBP/XBP】所以对于不可重入的库函数或自定义函数<br>
如需要可重入,用户可复制相同的副本(函数)再分别调用,或采用二值信号量、互斥信号量(当仅存在任务中调用时)等方式来实现互斥访问。<br>
3、为减少代码量用户应手动移除未使用的变量、函数或C文件因为“NOOVERLAY”会导致“REMOVEUNUSED”失效。<br>
#### 80251内核
一、Target标签页<br>
CPU模式仅支持Source251 native。<br>
内存模型支持Small、XSmall、Large。<br>
Code Rom Size支持Large、Huge。Huge模式时需用户自行配置Exeternal Memory。<br>
推荐勾选 4 Byte Interrupt Frame Size。<br>
![输入图片说明](../images/KFLC_80251_1.png)<br>
![输入图片说明](../images/KFLC_80251_2.png)<br>
二、HEX Format<br>
Code Rom Size为Huge时仅支持HEX-386格式。<br>
![输入图片说明](../images/KFLC_80251_3.png)<br>
三、优化级别<br>
可选级别3~7级<br>
推荐级别7级default<br>
CosyOS支持高等级优化您完全可以选择7级defaultspeed偏向于代码执行效率size偏向于减少代码量。<br>
最低不能低于3级必须启用寄存器变量优化最高不能高于7级。即使代码放不下您也不能把优化级别<br>
设置为8级或以上可通过删减代码或增大flash来解决。<br>
![输入图片说明](../images/KFLC_80251_4.png)<br>
四、不覆盖/可重入/移除未使用<br>
方案一、“Generate reentrant functions” + “REMOVEUNUSED”<br>
1、C251标签页“Generate reentrant functions”打勾以生成全局可重入函数。<br>
![输入图片说明](../images/KFLC_80251_5.png)<br>
2、L251 Misc标签页添加控制命令“REMOVEUNUSED”以自动移除未使用的代码段和数据段。<br>
![输入图片说明](../images/KFLC_80251_6.png)<br>
方案二、“NOOVERLAY” + “reentrant” + “手动移除未使用”<br>
1、C251标签页“Generate reentrant functions”不可打勾。<br>
2、L251 Misc标签页添加控制命令“NOOVERLAY”以禁用数据覆盖。<br>
![输入图片说明](../images/KFLC_80251_7.png)<br>
3、用户的自定义函数如需要可重入应手动添加“reentrant”属性。<br>
```c
void function_x(void) reentrant;
void function_x(void) reentrant
{
;
}
```
4、为减少代码量用户应手动移除未使用的变量、函数或C文件因为“NOOVERLAY”会导致“REMOVEUNUSED”失效。<br>
方案一 PK 方案二<br>
1、方案一为智能方案所有函数都将成为可重入函数并自动移除未使用的代码段和数据段。<br>
2、方案二为性能方案性能上优于方案一但需要用户明确哪些函数需要可重入并声明并手动移除未使用的代码段和数据段。<br>
3、方案一相较方案二需配置更大的任务栈对edata内存的需求将明显增加。<br>
4、如果启用私信功能您仅能采用方案二。<br>
五、内嵌汇编<br>
System\os_handler.c应设置内嵌汇编。<br>
![输入图片说明](../images/KFLC_80251_8.png)<br>
![输入图片说明](../images/KFLC_80251_9.png)<br>
#### Arm内核
一、Target标签页<br>
使用微库还是标准库与CosyOS无关。<br>
如果MCU有硬件浮点运算单元并且您需要使用它仅需在此开启选项即可。<br>
![输入图片说明](../images/KFLC_Arm_1.png)<br>
二、C/C++标签页<br>
优化级别CosyOS支持高等级优化您完全可以选择O2级default但不推荐您选择O3级。<br>
C99模式为可选项建议勾选。<br>
GNU扩展为必选项如不勾选CosyOS将无法正常使用。<br>
如选项中没有“GNU extensions”可在下方的“Misc Controls”中添加“--GNU”来启用。<br>
![输入图片说明](../images/KFLC_Arm_2.png)<br>
### 系统配置<br>
打开Config\syscfg.h这里是CosyOS的系统配置各项设置均有详细的说明在keil下可使用图形用户界面Configuration Wizard进行配置如出现乱码将文件的编码格式转换为ANSI即可解决。<br>
![输入图片说明](../images/syscfg.png)
### MCU配置<br>
MCU配置分为用户定义和系统定义用户定义是需要用户配置的各项设置均有详细的说明在keil下可使用图形用户界面Configuration Wizard进行配置如出现乱码将文件的编码格式转换为ANSI即可解决。<br>
#### 8051内核
![输入图片说明](../images/mcucfg_8051.png)<br>
#### 80251内核
![输入图片说明](../images/mcucfg_80251.png)<br>
#### Cortex-M内核
![输入图片说明](../images/mcucfg_cmx.png)<br>
### 堆栈配置<br>
#### 栈STACK
所有内核,栈需要用户自行在启动文件中配置。<br>
#### 堆HEAP
Arm内核堆需要用户自行在启动文件中配置。<br>
8051内核、80251内核没有堆的概念与之相应的是内存池用户需在MCU配置文件中配置。<br>
#### 可重入栈reentrant stack
1、8051内核所有系统服务均不使用可重入栈[IBP/PBP/XBP],也不允许用户使用可重入栈,无需用户配置。<br>
2、80251内核只有中断同步服务“接收邮件”需要使用可重入栈且系统已经配置好了无需用户配置。<br>
3、Arm内核栈就是可重入栈无需用户配置。<br>
### 链接文件<br>
用户在自己的各个C文件中需包含系统链接头文件os_link.h。<br>
```c
#include "..\System\os_link.h"
```
### 系统初始化
初始化寄存器、GPIO、中断等工作需在初始化钩子中执行。<br>
### 创建任务
任务线程的创建支持的API包括如下<br>
1、创建一般任务uCreateTask(task, tpl, tss, srt, ndm)<br>
2、创建定时中断任务uCreateTask_TimInt(tmid, arl, task, tpl, tss, srt, ndm)<br>
3、创建定时查询任务uCreateTask_TimQry(tmid, event, arl, task, tpl, tss, srt, ndm)<br>
详情请参阅《CosyOS-API用户参考手册》中的相关说明及示例代码。<br>
### 启动任务
需在启动钩子中启动用户任务支持的API包括如下<br>
1、启动任务uStartTask(task, state)<br>
2、启动任务并就绪uStartTask_Ready(task)<br>
3、启动任务并挂起uStartTask_Suspend(task)<br>
详情请参阅《CosyOS-API用户参考手册》中的相关说明及示例代码。<br>
注意所有系统任务、定时中断任务、定时查询任务均由CosyOS自动启动无需用户启动。<br>
**_接下来就让我们开始CosyOS之旅吧_** :star: :star: :star: :star: :star: