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

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

 火... [复制链接]

5

主题

1206

回帖

4812

积分

荣誉版主

积分
4812
 楼主| 发表于 2023-5-6 12:33:45 | 显示全部楼层
本帖最后由 CosyOS 于 2023-5-6 13:15 编辑
杨*** 发表于 2023-5-6 11:25
请问楼主作者,在你设计实现的CosyOS中,有没有计划提供(1)临界区保护接口,(2)中断嵌套时不进行任务调 ...

临界区是有的,同时也开放给用户。CosyOS的临界区只有一种,对于8051、80251内核,在进入临界区时会关闭 SysTick 和 PendSV 中断;对于Arm内核,会屏蔽最低优先级的中断。SysTick 和 PendSV 均为最低优先级。
任务中调用服务时,本身也是要进入临界区执行的。CosyOS从来不会关闭总中断和用户中断,无论哪种内核,只要用户中断不是最低优先级就可实现零中断延迟。
任务中的个别应用,推荐用户进入临界区执行,这样不仅高效,也是因为个别应用封装为API非常的困难。

中断中支持恢复、挂起、删除任务,设置任务优先级等服务,都是先缓存服务的结构体指针,再触发PendSV,在PendSV中统一执行服务,而后再任务调度。
CosyOS在中断中切换任务的一般方法是,一个任务平时为挂起状态,在中断中恢复这个任务,这个任务运行完后再挂起自身。


回复

使用道具 举报 送花

5

主题

1206

回帖

4812

积分

荣誉版主

积分
4812
 楼主| 发表于 2023-5-6 12:56:44 | 显示全部楼层
神*** 发表于 2023-5-6 09:23
大侠,本坛有爱好者咨询 FreeRTOS的问题时也帮忙解答下,
顺便介绍下您的 CosyOS 比 FreeRTOS 的优势,
让 ...

好的,以后我会积极参与的。
回复

使用道具 举报 送花

5

主题

1206

回帖

4812

积分

荣誉版主

积分
4812
 楼主| 发表于 2023-5-6 13:04:29 | 显示全部楼层
本帖最后由 CosyOS 于 2023-5-6 13:07 编辑
32位8051-STCAI 发表于 2023-5-6 09:14
帮网友问下:要消耗多少RAM

关于内存的占用,我现在还不能提供一个准确的数字,一般情况下,8K内存跑十多个任务还是绰绰有余的。然而,这也却决于多方面因素,如用户定义的变量、创建的邮箱、队列的多少等。
回复

使用道具 举报 送花

865

主题

1万

回帖

2万

积分

管理员

积分
25102
发表于 2023-5-6 13:15:37 | 显示全部楼层
有人来批评或来骂街,国产OS就成功指日可待,不要全是赞美的声音,要有客观的批判
1.png

回复

使用道具 举报 送花

5

主题

1206

回帖

4812

积分

荣誉版主

积分
4812
 楼主| 发表于 2023-5-6 13:21:01 | 显示全部楼层
神*** 发表于 2023-5-6 13:15
有人来批评或来骂街,国产OS就成功指日可待,不要全是赞美的声音,要有客观的批判

对的,欢迎大家提出异议,共同探讨,有批评才能有进步。
另外,对于 FreeRTOS 我也不够精通,只能尽量参与。

点评

从 美国的 FreeRTOS 到 国产 CosyOS 是历史必然 学 美国的 FreeRTOS 是为了跟好的学习 国产 CosyOS  发表于 2023-5-6 13:26
回复

使用道具 举报 送花

865

主题

1万

回帖

2万

积分

管理员

积分
25102
发表于 2023-5-6 13:22:01 | 显示全部楼层
我刚注意到大侠的CosyOS 是为 STC8H8K64U
这个 STC 8051世界 最快的 1T 8051, STC8H8K64U量身定制的,
请CosyOS大侠大笔墨介绍下针对STC8H8K64U比其他流行OS的优势
回复

使用道具 举报 送花

189

主题

1411

回帖

5527

积分

荣誉版主

积分
5527
发表于 2023-5-6 13:26:51 | 显示全部楼层
Cos*** 发表于 2023-5-6 12:33
临界区是有的,同时也开放给用户。CosyOS的临界区只有一种,对于8051、80251内核,在进入临界区时会关闭 S ...

临界区保护分为两种情况,一种是操作系统本身对系统自身的资源(任务表、调度过程等)的保护,如你上面提到的。另一种是对公共资源的保护,比如对一个12位的ADC,一个任务(如实验板上的NTC)读了一个字节后,任务被切换了,新任务重新进行了ADC变换,然后任务再切换回来后读到的另一个字节已经不是原来的字节了,就会产生错误。为了避免出现这类错误,就需要公共资源临界区保护。如果按照传统操作系统的临界区保护方法编程太过复杂,不得已RTT、uC/OS以及FreeRTOS这些RTOS才提供了“关全局中断”(EA=0)的通用临界区保护手段。
但是,使用中断对于STC单片机十分重要,因此避免在RTOS关闭全局中断是一个很重要的选择。建议将CosyOS现在的特色“所有内核全局不关中断的RTOS”修改为“所有内核不关全局中断EA的RTOS”更为贴切,这样既体现了CosyOS的特色,又表明了关不关全局中断由用户自己选择的方法
回复

使用道具 举报 送花

5

主题

1206

回帖

4812

积分

荣誉版主

积分
4812
 楼主| 发表于 2023-5-6 13:44:23 | 显示全部楼层
本帖最后由 CosyOS 于 2023-5-6 16:04 编辑

首先,CosyOS在开发之初就设定好了基本框架,要实现所有内核全局不关中断,
要全面支持STC的8位、32位8051 MCU。针对STC MCU的优化是贯穿始终的,
这一点从 MCU配置文件 中就能体现。
代码中的所有细节均考虑到了系统级全局变量的可重入性,确保安全可信。

CosyOS是原生支持STC的8位、32位8051 MCU的,非移植的OS可比
移植的OS在很多细节的地方可能会存在安全隐患。

我描述一种典型的情况,某些RTOS在开发之初只考虑了对Arm等32位以上MCU的支持,并没有考虑对51、251的支持,
所以很多系统级的全局变量(4bytes及以下)是根本不用考虑重入问题的,因为汇编都是单指令访问完成。
然而移植到51、251情况就完全不同了,51只有单字节变量不会重入,251只有data、edata直接寻址不会重入,
间接寻址汇编一次只能访问1-2个字节。什么是间接寻址呢?idata、pdata、xdata访问都是间接寻址,指针的访问也是间接寻址。
如 u32 edata * edata p; 读写*p都是间接寻址,虽然数据在edata中,但汇编也要两条指令才能完成读或写。
每个OS中都有大量的指针访问,Arm32完全不用考虑的问题,换成了51/251,都要全盘重新考量。
这就为系统安全性埋下了伏笔???

这就是 “原生”“移植” 的区别!!!


点评

那STC8A8K64D4这款型号用你的系统需要做哪些修改呢,项目不想更换CPU了  发表于 2023-8-8 11:07
此RTOS 非移植,是原生就支持 STC32G12K128, STC8H8K64U  发表于 2023-5-15 20:21
已全局置顶,精华语录啊  发表于 2023-5-6 13:53
此话已全球转播  发表于 2023-5-6 13:50
回复

使用道具 举报 送花

865

主题

1万

回帖

2万

积分

管理员

积分
25102
发表于 2023-5-6 13:55:07 | 显示全部楼层

全网热烈讨论中
1.png
回复

使用道具 举报 送花

2

主题

160

回帖

4314

积分

论坛元老

积分
4314
发表于 2023-5-6 13:57:08 | 显示全部楼层
1.png
回复

使用道具 举报 送花

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

本版积分规则

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

GMT+8, 2026-9-22 05:58 , Processed in 0.077818 second(s), 81 queries .

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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