fanxsp
发表于 2024-5-8 10:27:01
奇怪了,你的优化等级?
tzz1983
发表于 2024-5-8 10:31:19
fanxsp 发表于 2024-5-8 10:27
奇怪了,你的优化等级?
8级, 我刚才试了一下 变量类型 char, 更加不对付
fanxsp
发表于 2024-5-8 10:32:55
tzz1983 发表于 2024-5-8 10:13
不一样的,==0 因为是整形变量, 会用JZJNZCJNE ADD,0XFF 等手段
你看一下编译结果:
奇怪了,和优化等级也没关系啊
tzz1983
发表于 2024-5-8 10:33:45
fanxsp 发表于 2024-5-8 10:32
奇怪了,和优化等级也没关系啊
那不管它了吧
fanxsp
发表于 2024-5-8 10:45:29
tzz1983 发表于 2024-5-8 10:33
那不管它了吧
好吧,最好是,能找一下原因,你刚才的编译结果是 51 还是 251?
CosyOS
发表于 2024-5-8 10:45:55
杨为民 发表于 2024-5-8 09:36
很多现有的 RTOS,都是墨守陈规,一致采取了 古老的 临界区保护技术(关闭总中断),
并未吸取 Arm 为 OS ...
杨老师,我并没有指名道姓说谁是墨守陈规。
tzz1983
发表于 2024-5-8 10:56:50
fanxsp 发表于 2024-5-8 10:45
好吧,最好是,能找一下原因,你刚才的编译结果是 51 还是 251?
编译了你的代码演示1
结果, 无论是SRC, 还是访真窗口的反汇编都是一样的结果:
CosyOS
发表于 2024-5-8 11:03:12
本帖最后由 CosyOS 于 2024-5-8 12:00 编辑
杨为民 发表于 2024-5-8 10:20
你在168楼说:“Keil 在此基础上进一步发展出了新一代的 OS模型,可实现“零中断延迟”。”
你在169楼说 ...
Keil RTX 4/5 是完全继承并发展了 Arm 对 OS 的设计思想,
其它许多 RTOS 都仅是部分借鉴,如在 PendSV 中切换任务。
如何知道是否是完全继承 ?
一是看:大部分内核服务 是否都是通过 SVC、PendSV,来间接执行?
二是看:任务是否可以运行在 “用户级” ?而不是 “特权级” !
CosyOS-II 也仅是部分借鉴了 Arm 的思想,所以 “很多现有的RTOS” 也包括 CosyOS 在内。
1、我敢说,大部分 RTOS 在 Cortex-M 中,都未使用 SVC 来间接执行服务,
即使使用了 PendSV,也仅是用于任务调度/切换;
2、我敢说,大部分 RTOS 在 Cortex-M 中,任务都只能运行在 “特权级”,而无法运行在 “用户级”;
这些在 “新思想” 中,都是不符合 “安全关键” 的,也就是说,
从“新思想”的角度来看,都是不安全的。
当然,上述的 “大部分 RTOS” 也包括 CosyOS 在内。
所以,CosyOS 也是在 “墨守陈规”。
关于 Arm 对 OS 的设计思想,是否先进、好还是不好,暂且不论。
但是,真正的继承了该思想的 RTOS,除了 RTX 外,恐怕是少而又少。
fanxsp
发表于 2024-5-8 11:08:24
本帖最后由 fanxsp 于 2024-5-8 11:13 编辑
tzz1983 发表于 2024-5-8 10:56
编译了你的代码演示1
奇怪了,版本是一样的,应该是和版本没有关系,我之前用的 5.6的,结果也是DJNZ, 有空的时候,我再试试
fanxsp
发表于 2024-5-8 11:43:05
tzz1983 发表于 2024-5-8 10:56
编译了你的代码演示1
昨天我仔细梳理了一下,上下文切换,不关总中断,只关PendSV, 应该是可以的,要做个程序测试一下,你也是这样处理的吗?