大刀阔斧
发表于 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的操作被覆盖。