找回密码
 立即注册
楼主: CosyOS

全局不关总中断的 RTOS,CosyOS-III-V1.2.0, 送 擎天柱-AI8051U转89C52核心板

 火... [复制链接]

5

主题

1208

回帖

4820

积分

荣誉版主

积分
4820
 楼主| 发表于 10 小时前 | 显示全部楼层
杨*** 发表于 2026-9-23 02:46
(1)我等你这个回复两年了,我很照顾你的面子没有在你帖子里质疑,并且以华山论剑的方式说明这只是技术讨 ...

首先感谢杨老师的提醒,这是我的疏忽。

关于上述两点问题,我再分别针对 STC32G、Cortex-M、RISC-V 等架构做一下适当的补充。
(CosyOS-III 最新版本 v3.1.5,支持 沁恒-青稞 RISC-V32


一、对可重入函数的支持
0、8051/STC8H
需要用户开启 syscfg.h 中的配置项,可重入函数需显示声明为 reentrant。

1、STC32G
STC32G 如果使用 Keil C251(C251 版本 >= 2.0),是直接支持可重入函数的。
可重入栈由 C251 编译器直接实现,是与 ARM 等同的原理,无需 OS 介入,直接即可支持。
但建议用户开启如下选项:全局生成可重入函数
截图202609230352114805.jpg
这样在整个工程中,只要是非 STATIC 属性的(#pragma functions (static))、
未涉及全局公共资源的(如 printf、malloc 等)函数,都将自动成为可重入函数,而不需要用户显示声明为 reentrant。
但这可能会导致一些报错(L127、L128),具体原因和解决方案可参考如下:
全局不关总中断的 RTOS,CosyOS-III-V1.2.0, 送 擎天柱-AI8051U转89C52核心板 - 第112页 - TF卡, SD卡, 文件系统, uCOS/FreeRTOS,GUI-uGFX/U8g2, RTOS 国芯人工智能技术交流网站 - AI32位8051交流社区


2、Cortex-M、RISC-V 等架构
Keil MDK(AC5、AC6)、IAR-EWARM、GCC、MounRiver Studio Ⅱ,等编译器、IDE 皆直接支持可重入函数,无需用户额外操作。


二、高频中断中调用服务
与 上一篇中对 STC8H 的描述基本一致。
但不同的是:
1、同主频下 STC32G 的平均性能会显著高于 STC8H,因此在高频中断中调用 FIFO服务的弊端问题,会有明显改善。
2、Cortex-M、RISC-V32 等都是32位机,最低主频一般 48M,也都有着不弱的性能表现,同样会有明显改善。
3、尤其是当主频达到 上百兆 后,调用一项 FIFO服务的时间,可在 零点几 us 之内完成,改善会更为明显
4、如果对高频中断的要求较高,如中断周期 1us、必须调用 FIFO服务,采用更高主频、性能更强的处理器即可轻松应对。
总之,在实际项目中,用户仅需关注相关问题并把握“先FLAG,后FIFO”的使用原则,并进行针对性测试,便可防患于未然,有效解决高频中断中调用 FIFO服务 带来的风险问题。


CosyOS-III 最新版本 v3.1.5,还有很多新特性,未来我会陆续介绍。


点评

(1)对于有PendSV的Cortex-M 单片机RTOS,FIFO服务不是必须的,它是属于像Linux和Windows这样的OS操作系统的任务调度特征,在Cortex-A 这里架构是的操作系统上应用很正常。 (2)你将它应用到高性能的STC32位单片机  详情 回复 发表于 3 小时前
回复

使用道具 举报 送花

189

主题

1427

回帖

5560

积分

荣誉版主

积分
5560
发表于 3 小时前 | 显示全部楼层
Cos*** 发表于 2026-9-23 05:22
首先感谢杨老师的提醒,这是我的疏忽。

关于上述两点问题,我再分别针对 STC32G、Cortex-M、RISC-V 等架 ...

(1)对于有PendSV的Cortex-M 单片机RTOS,FIFO服务不是必须的,它是属于像Linux和Windows这样的OS操作系统的任务调度特征,在Cortex-A 这里架构是的操作系统上应用很正常
(2)你将它应用到高性能的STC32位单片机和RV32单片机这两种没有PendSV单片机上是一个有价值的探索
(3)顺带介绍一下,Cortex-A没有PendSV只有同步异常SVCRV32架构没有PendSV只有机器模式软件中断MSIP(相当于CPU的TRAP指令),
STC32位单片机的80251指令集没有PendSV只有TRAP指令和对应的软中断,但是被厂家屏蔽了。所以你的探索有意义。
(4)建议继续研究深化你的FIFO服务任务调度方法,将你的系统CosyOS直接升级定位为“嵌入式小型实时OS系统”,而不是单片机RTOS。
你可以参考Cortex-A架构的Linux的PREEMRT_RT实时内核补丁的技术

(5)建议你不要再强调所谓的“不关闭总中断”特征,原因两个:
首先个OS操作系统比如Linux和Windos都不会关闭总中断,而FIFO服务就是解决的具体方案,CosyOS本来就是一个标准OS的技术方案,强调其实会拉低你的系统档次。
其次强调虽然取悦了一般单片机爱好者(尤其是还没有进阶到RTOS的),但是在懂得计算机操作系统原理的人眼里就是个笑话:你发明了一种吃饭可以不带口水兜的方法是什么意思?幼儿(RTOS)需要带大人(OS操作系统)不需要带这不很正常吗?有什么好炫耀的?


回复

使用道具 举报 送花

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

GMT+8, 2026-9-23 16:11 , Processed in 0.074609 second(s), 53 queries .

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表