CosyOS
发表于 2023-5-6 12:56:44
神农鼎 发表于 2023-5-6 09:23
大侠,本坛有爱好者咨询 FreeRTOS的问题时也帮忙解答下,
顺便介绍下您的 CosyOS 比 FreeRTOS 的优势,
让 ...
好的,以后我会积极参与的。
CosyOS
发表于 2023-5-6 13:04:29
本帖最后由 CosyOS 于 2023-5-6 13:07 编辑
32位8051-STCAI 发表于 2023-5-6 09:14
帮网友问下:要消耗多少RAM
关于内存的占用,我现在还不能提供一个准确的数字,一般情况下,8K内存跑十多个任务还是绰绰有余的。然而,这也却决于多方面因素,如用户定义的变量、创建的邮箱、队列的多少等。
神农鼎
发表于 2023-5-6 13:15:37
有人来批评或来骂街,国产OS就成功指日可待,不要全是赞美的声音,要有客观的批判
CosyOS
发表于 2023-5-6 13:21:01
神农鼎 发表于 2023-5-6 13:15
有人来批评或来骂街,国产OS就成功指日可待,不要全是赞美的声音,要有客观的批判
对的,欢迎大家提出异议,共同探讨,有批评才能有进步。
另外,对于 FreeRTOS 我也不够精通,只能尽量参与。
神农鼎
发表于 2023-5-6 13:22:01
我刚注意到大侠的CosyOS 是为 STC8H8K64U
这个 STC 8051世界 最快的 1T 8051, STC8H8K64U量身定制的,
请CosyOS大侠大笔墨介绍下针对STC8H8K64U比其他流行OS的优势
杨为民
发表于 2023-5-6 13:26:51
CosyOS 发表于 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的特色,又表明了关不关全局中断由用户自己选择的方法
CosyOS
发表于 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,都要全盘重新考量。
这就为系统安全性埋下了伏笔???
这就是 “原生” 与 “移植” 的区别!!!
神农鼎
发表于 2023-5-6 13:55:07
全网热烈讨论中
hu_jia168
发表于 2023-5-6 13:57:08
神农鼎
发表于 2023-5-6 14:00:23
有啥在这讨论,官方保驾护航
页:
1
2
[3]
4
5
6
7
8
9
10
11
12