update 说明文档/开发流程.md.

Signed-off-by: 零中断延迟的RTOS <cosyos@139.com>
This commit is contained in:
零中断延迟的RTOS
2024-04-08 17:43:07 +00:00
committed by Gitee
parent eb3a7314fd
commit c1f7a807ef

View File

@@ -36,7 +36,7 @@ CosyOS支持高等级优化您完全可以选择8级defaultspeed偏
2、由于CosyOS for 8051在设计上已经摒弃了传统的可重入栈【IBPSTACK/PBPSTACK/XBPSTACK】所以也不建议用户采用。<br>
原因是C51的可重入栈效率十分低下对于XBPSTACK还存在关中断行为。<br>
对于不可重入的C51标准库函数或自定义函数如需要可重入可采用下述方法。<br>
1替换法对于不可重入的C51标准库函数可考虑替换为其它可重入的库函数实现相同的功能。<br>
1等效替换法对于不可重入的C51标准库函数可考虑替换为其它可重入的库函数实现相同的功能。<br>
| non-reentrant | reentrant | 替换条件 |
|--------------------|--------------------------------|----------------------------------|
| strncpy(s1, s2, n) | memcpy(s1, s2, n) | 推荐s2的有效长度至少为n |
@@ -96,7 +96,7 @@ void function_x(void) reentrant
4、为减少代码量用户应手动移除未使用的变量、函数或C文件因为“NOOVERLAY”会导致“REMOVEUNUSED”失效。<br>
方案一 PK 方案二<br>
1、方案一为智能方案所有函数都将成为可重入函数,并自动移除未使用的代码段和数据段。<br>
1、方案一为智能方案所有函数都试图生成可重入函数,并自动移除未使用的代码段和数据段。<br>
2、方案二为性能方案性能上优于方案一但需要用户明确哪些函数需要可重入并声明并手动移除未使用的代码段和数据段。<br>
3、方案一相较方案二需配置更大的任务栈对edata内存的需求将明显增加。<br>
4、如果启用私信功能您仅能采用方案二。<br>
@@ -115,8 +115,8 @@ System\os_handler.c应设置内嵌汇编。<br>
二、C/C++标签页<br>
优化级别CosyOS支持高等级优化您完全可以选择O2级default但不推荐您选择O3级。<br>
C99模式为可选项,建议勾选。<br>
GNU扩展为必选项如不勾选CosyOS将无法正常使用。<br>
C99模式为可选项。<br>
GNU扩展当mcucfg_cmx.h中系统方案配置为全局寄存器变量时GNU扩展为必选项如不勾选CosyOS将无法正常使用。<br>
如选项中没有“GNU extensions”可在下方的“Misc Controls”中添加“--GNU”来启用。<br>
![输入图片说明](../images/KFLC_Arm_2.png)<br>
@@ -143,7 +143,7 @@ MCU配置分为用户定义和系统定义用户定义是需要用户配置
Arm内核堆需要用户自行在启动文件中配置。<br>
8051内核、80251内核没有堆的概念与之相应的是内存池用户需在MCU配置文件中配置。<br>
#### 可重入栈reentrant stack
1、8051内核所有系统服务均不使用可重入栈[IBP/PBP/XBP],也不允许用户使用可重入栈,无需用户配置。<br>
1、8051内核所有系统服务均不使用可重入栈也不建议用户使用可重入栈,无需用户配置。<br>
2、80251内核只有中断同步服务“接收邮件”需要使用可重入栈且系统已经配置好了无需用户配置。<br>
3、Arm内核栈就是可重入栈无需用户配置。<br>
@@ -158,18 +158,9 @@ Arm内核堆需要用户自行在启动文件中配置。<br>
初始化寄存器、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>
需在启动钩子中启动用户任务<br>
注意所有系统任务、定时中断任务、定时查询任务均由CosyOS自动启动无需用户启动。<br>
**_接下来就让我们开始CosyOS之旅吧_** :star: :star: :star: :star: :star: