raw-os的实时性具体数据通报

jorya_txj   2014-2-3 14:34 楼主
由于raw-os的内核集成了系统最大关中断时间的测量,所以测试变得会很简单,用户只需要移植一个定时器的接口就行了。下面是两个平台的具体测试结果:

iar 6.6 编译器优化等级中间(相当于-O2)  在k60 100Mhz 的cpu 平台下,在开了内核最大关中断为0us的特性下, 内核最大关中断时间实际测试为0.7us。
iar 6.6 编译器优化等级中间(相当于-O2)  在k60 100Mhz 的cpu 平台下,在关了内核最大关中断时间为0us的特性下,实际量的内核最大关中断时间为6.2us。


keil 4.71版本下编译器优化等级-O2, 在lpc1788 120Mhz的cpu平台下,在开了内核最大关中断为0us的特性下, 内核最大关中断时间实际测试为0.43us。
keil 4.71版本下编译器优化等级-O2, 在lpc1788 120Mhz的cpu平台下,在关了内核最大关中断为0us的特性下, 内核最大关中断时间实际测试为5.8us。

需要指出的是在开了最大内核0us中断特性的情况下, 内核最大关中断时间是一个稳定的常数,但是在关了最大内核0us中断特性的情况下,内核最大关中断时间取决于使用的系统api。
举个例子,如果用户采用广播的发送信号量,或者广播发送信息到队列,或者使用flag,一次唤醒多个任务的话,内核关中断时间会急剧上升。

大部分应用下关掉最大内核0us中断特性,也能满足应用的需求了。最大内核0us中断特性往往应用在一些极端苛刻实时性的应用下,比如精度需要控制在1us以下的这种应用等等。

回复评论 (10)

搞不懂为什么要关中断?
点赞  2015-8-5 18:10
引用: samos2011 发表于 2015-8-5 18:10
搞不懂为什么要关中断?

因为要保护临界区。
点赞  2015-8-6 16:24
引用: jorya_txj 发表于 2015-8-6 16:24
因为要保护临界区。

那您的CM系列为什么也要关中断呢?
点赞  2015-8-6 17:52
非CM的CPU是要关中断,做个汇编封皮,在汇编中关了中断再调用OS的C代码,岂不是最快关中断时间,跟编译器优化级别没有任何关系 本帖最后由 samos2011 于 2015-8-6 17:59 编辑
点赞  2015-8-6 17:58
引用: samos2011 发表于 2015-8-6 17:58 非CM的CPU是要关中断,做个汇编封皮,在汇编中关了中断再调用OS的C代码,岂不是最快关中断时间,跟编译器优化级 ...
你理解错了,最大关中断时间的意思了。这个是指关了中断后多长时间再开中断,不是单纯的关中断时间,那根本没任何意义。建议踏踏实实学习rtos基础理论。 本帖最后由 jorya_txj 于 2015-8-10 12:55 编辑
点赞  2015-8-10 12:47
关中断不就是为了避免内核函数重入吗!
CM处理器已经不需要你关中断来避免了
点赞  2015-8-10 14:23
你连<系统调用>都不用(也可能是你不懂),内核函数居然是直接调用,
点赞  2015-8-10 14:49
引用: samos2011 发表于 2015-8-10 14:49
你连都不用(也可能是你不懂),内核函数居然是直接调用,

你好,针对你的描述有两个问题:

1 内核函数为啥不能直接调用?对于一个没有进程概念的rtos来说系统调用是否需要?

2 CM处理器已经不需要你关中断来避免重入,那使用什么来保护临界区?如果通过屏蔽底优先级中断来实现关中断, 在raw-os里面只要把移植关中断的接口改为屏蔽低优先级中断的接口即可,这只是一个简单的移植的工作。架构设计上是完全支持的。

一个rtos的设计必须要考虑各种芯片平台的存在不仅仅是CM处理器。
点赞  2015-8-11 13:22
那你不能视CM的优点而不见!
点赞  2015-8-11 13:35
祝你的OS越做越好吧!
点赞  2015-8-11 13:37
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复
      缈昏瘧锛