mirror of
https://gitee.com/cosyos/cosyos.git
synced 2026-02-05 19:39:42 +08:00
15
说明文档/开发流程.md
15
说明文档/开发流程.md
@@ -33,8 +33,19 @@ CosyOS支持高等级优化,您完全可以选择8级(default),speed偏
|
||||
四、不覆盖/可重入/移除未使用<br>
|
||||
1、LX51 Misc标签页,添加控制命令“NOOVERLAY”,以禁用数据覆盖。<br>
|
||||
<br>
|
||||
2、由于CosyOS for 8051在设计上已摒弃了传统的可重入栈【IBP/PBP/XBP】,所以对于不可重入的库函数或自定义函数,<br>
|
||||
如需要可重入,用户可复制相同的副本(函数)再分别调用,或采用二值信号量、互斥信号量(当仅存在任务中调用时)等方式来实现互斥访问。<br>
|
||||
2、由于CosyOS for 8051在设计上已摒弃了传统的可重入栈【IBPSTACK/PBPSTACK/XBPSTACK】,所以也不建议用户采用。<br>
|
||||
原因是C51的可重入栈效率十分低下,对于XBPSTACK,还存在关中断行为。<br>
|
||||
对于不可重入的库函数或自定义函数,如需要可重入,可采用下述的方法。<br>
|
||||
(1)替换法:对于不可重入的库函数,可考虑替换为其它的可重入库函数,实现相同的功能。<br>
|
||||
| non-reentrant | reentrant | 替换条件 |
|
||||
|--------------------|--------------------------------|----|
|
||||
| strncpy(s1, s2, n) | memcpy(s1, s2, n) | 推荐s2的长度至少为n |
|
||||
| strncat(s1, s2, n) | memcpy(s1 + strlen(s1), s2, n) | 推荐s2的长度至少为n |
|
||||
| strcat(s1, s2) | strcpy(s1 + strlen(s1), s2) | 无 |
|
||||
| strncmp(s1, s2, n) | memcmp(s1, s2, n) | 确保其中一个字符串的有效长度至少为n |
|
||||
(2)可重入版本<br>
|
||||
(3)副本:用户可复制相同的副本(函数)再分别调用。<br>
|
||||
(4)互斥函数:或采用二值信号量、互斥信号量(当仅存在任务中调用时)等方式来实现互斥访问。<br>
|
||||
3、为减少代码量,用户应手动移除未使用的变量、函数或C文件,因为“NOOVERLAY”会导致“REMOVEUNUSED”失效。<br>
|
||||
|
||||
#### 80251内核
|
||||
|
||||
Reference in New Issue
Block a user