大刀阔斧 发表于 2023-5-22 13:37:54

{:4_250:}

CosyOS 发表于 2023-5-22 17:30:50

FreeRTOS的示例代码,采用的方案是:
“全局可重入函数”+ “移除未使用”;
Generate reentrant funcitons + REMOVEUNUSED;

CosyOS的示例代码,采用的方案是:
“数据不覆盖” + “移除未使用”;
NOOVERLAY + REMOVEUNUSED;
NOOVERLAY 会导致 REMOVEUNUSED 移除的不够彻底,很多未使用的代码段、数据段等未能被移除,所以代码量很大。
针对这一问题暂时先不解决,待确定解决方案后再调整。

CosyOS 发表于 2023-5-23 12:35:10

现已证明,“移除未使用”的前提是“数据覆盖”。
只要加入了控制命令:“NOOVERLAY”,那么,“REMOVEUNUSED” 命令将失效。


通过测试也证明了这一点。


解决方案:
1、使用控制命令:“NOOVERLAY”,而后用户自己手动删除未使用的C文件或库函数;
2、生成全局可重入函数 + “REMOVEUNUSED” 命令。


CosyOS在下一版中,将同时支持上述两个方案,由用户自己选择。


ghost 发表于 2023-5-26 08:08:51

有各平台的DEMO工程学习吗?

神农鼎 发表于 2023-5-26 09:54:29

STC32G12K128实验箱有验证通过

WHX 发表于 2023-5-30 07:40:32

{:4_250:}

大刀阔斧 发表于 2023-5-30 08:52:40

{:4_250:}

bogejiayou 发表于 2023-6-9 19:00:16

高手打擂台,正是我们学习的好时机,多谢你们的发贴与分享,希望社区高手们更加活跃。

jack 发表于 2023-10-17 12:54:42

{:4_250:}

fanxsp 发表于 2023-10-23 23:37:34

CosyOS 发表于 2023-5-18 17:14
是这样的杨老师,
按照我的理解,一个全局变量只要最终访问数据时能一条汇编完成访问,就不会重入,包括 ...

关于单字节变量的原子操作问题,我之前的想法和你是一样,后来发现这种想法也是不对的。比如,有一个单字节变量 K,任务1 执行指令 K+=2 ; 任务2 抢先任务1执行K+=3 ; 如果有临界保护,结果是 K 数值增加5,是正确的。如果没有临界保护,K的数值有可能就增加2 ,加3的操作被覆盖。
页: 1 2 3 4 [5] 6 7
查看完整版本: STC 原生RTOS PK 移植RTOS