搜索
bottom↓
回复: 99

djyos:挑战实时性--46楼有网友贴出了ucosii的测试数据,很给力啊!

[复制链接]

出0入0汤圆

发表于 2011-8-20 13:24:45 | 显示全部楼层 |阅读模式
CPU:lpc1225
主频:40M,flash速度:32M,本例要等待一个周期,实际为20M
要求:来自用户项目的要求,外部中断发生后,必须在2uS以内拉低一个IO口线,无论系统多么繁忙,2uS要绝对保证。
对策:把该外部中断设为实时中断
实测:1.425uS,这是绝对保证的,即使正在执行上下文切换也能保证,有些系统标的中断响应时间是理想状态下的。

M0的向量表只能放在flash中,代码也在flash中运行,flash速度只有20M,如果换成M3,估计时间在1uS以内。

djyos实时中断使用方法:
step1:    初始化硬件,本例只要把相应IO口初始化成中断输入即可。
step2:    编写ISR,与普通函数一样编写。
step3:    连接ISR和外部中断,djyos api:
    int_isr_connect(cn_int_line_PIOINT0,ISR);
step4:    把中断设为实时中断,djyos api:
    int_setto_real(cn_int_line_PIOINT0);
step5:    应答以清中断状态,纯容错性质,有些系统启动后中断处于不定状态。djyos api:
    int_echo_line(cn_int_line_PIOINT0;
step6:    使能中断线,djyos api:
    int_restore_real_line(cn_int_line_PIOINT0);

完毕

阿莫论坛20周年了!感谢大家的支持与爱护!!

如果想吃一顿饺子,就得从冰箱里取出肉,剁馅儿,倒面粉、揉面、醒面,擀成皮儿,下锅……
一整个繁琐流程,就是为了出锅时那一嘴滚烫流油的热饺子。

如果这个过程,禁不住饿,零食下肚了,饺子出锅时也就不香了……《非诚勿扰3》

出0入0汤圆

发表于 2011-8-20 13:37:31 | 显示全部楼层
楼主出关归来~
沙发!!

出0入0汤圆

发表于 2011-8-20 14:36:53 | 显示全部楼层
汗,我要是不要你这东东几个机器周期就可以
没看到这个比其它OS的优势

出0入0汤圆

 楼主| 发表于 2011-8-20 14:48:50 | 显示全部楼层
回复【3楼】liurangzhou
汗,我要是不要你这东东几个机器周期就可以
没看到这个比其它os的优势
-----------------------------------------------------------------------

呵呵,用不用OS,见仁见智了。
我测过,相同的ISR函数,裸奔为1.025uS,跟djyos相差400nS,也就是M0执行5~8条指令的时间。
我不知道是否存在能跟djyos比肩的其他OS,欢迎测试比较。

出0入0汤圆

发表于 2011-8-20 14:58:15 | 显示全部楼层
好久没见LZ了,不懂这个帮顶!

出0入0汤圆

发表于 2011-8-20 15:31:04 | 显示全部楼层
恩,和其它OS做个对比,在说明为什么diyos能做到这个!!

出0入0汤圆

发表于 2011-8-20 15:34:57 | 显示全部楼层
期待DJYOS有更好的表现!

出0入0汤圆

发表于 2011-8-20 16:12:57 | 显示全部楼层
回复【4楼】djyos 都江堰操作系统
回复【3楼】liurangzhou  
汗,我要是不要你这东东几个机器周期就可以  
没看到这个比其它os的优势
-----------------------------------------------------------------------
呵呵,用不用os,见仁见智了。
我测过,相同的isr函数,裸奔为1.025us,跟djyos相差400ns,也就是m0执行5~8条指令的时间。
我不知道是否存在能跟djyos比肩的其他os,欢迎测试比较。
-----------------------------------------------------------------------

我的意思是与其它OS比,
照你这意思是处理中断时,用了djyos比裸奔要快?

出0入0汤圆

 楼主| 发表于 2011-8-20 16:20:35 | 显示全部楼层
回复【8楼】liurangzhou
我的意思是与其它os比,
照你这意思是处理中断时,用了djyos比裸奔要快?
-----------------------------------------------------------------------

建议级认真读别人写的东西再回复,否则对自己对别人都是不尊重,更加浪费广大读帖者得时间。

djyos是1.425uS,裸奔是1.025uS,我什么时候说djyos比裸奔快了?
我说“相差400nS”,说了谁比谁快了吗?

出0入0汤圆

发表于 2011-8-20 16:28:09 | 显示全部楼层
楼下止步,小心着火!

出0入0汤圆

发表于 2011-8-20 16:34:14 | 显示全部楼层
回复【10楼】liurangzhou  
楼下止步,小心着火!
-----------------------------------------------------------------------

你确实理解有误~

出0入0汤圆

发表于 2011-8-20 16:50:50 | 显示全部楼层
如果有其它操作系统做一个比较,可能会更能说明问题。
另外,支持楼主把DJYOS做大做强来,发展过程中有质疑是好事。

出0入0汤圆

发表于 2011-8-20 18:05:32 | 显示全部楼层
【9楼】 djyos 都江堰操作系统
建议级认真读别人写的东西再回复,否则对自己对别人都是不尊重,更加浪费广大读帖者得时间。

djyos是1.425uS,裸奔是1.025uS,我什么时候说djyos比裸奔快了?
我说“相差400nS”,说了谁比谁快了吗?  
======================================================================================
恕我直言,“相差400nS”,也没说比裸奔的慢啊。粗略一看,还以为是比裸奔的快。
为何不直言“比裸奔的慢400nS”呢。
其次,语气咄咄逼人,别人问一下又何妨?
你不写清楚难道就是对读者的尊重,就没有浪费广大读帖者得时间?

出0入0汤圆

发表于 2011-8-20 19:26:03 | 显示全部楼层
回复【13楼】pengshipower
【9楼】 djyos 都江堰操作系统
建议级认真读别人写的东西再回复,否则对自己对别人都是不尊重,更加浪费广大读帖者得时间。  
djyos是1.425us,裸奔是1.025us,我什么时候说djyos比裸奔快了?  
我说“相差400ns”,说了谁比谁快了吗?   
======================================================================================
恕我直言,“相差400ns”,也没说比裸奔的慢啊。粗略一看,还以为是比裸奔的快。
为何不直言“比裸奔的慢400ns”呢。
其次,语气咄咄逼人,别人问一下又何妨?
你不写清楚难道就是对读者的尊重,就没有浪费广大读帖者得时间?
-----------------------------------------------------------------------

可能是我小人之心了,总感觉国内的开发人员有这样一个通病:碰上实力比自己强的,第一反应就是“不服气”,总想着挑出对方的毛病进而证明“他也没比我强多少”…… 共勉

出0入0汤圆

发表于 2011-8-20 19:34:07 | 显示全部楼层
退一步讲,楼主能开发出一个操作系统,就算有时候他想“高调张扬”一下,我们都不能容忍吗?难道我们只能认同那些谦虚低调的高手?

PS:如果看到“相差400ns”第一反应就是“比裸奔的快”,真的要反思一下:怎么会有这种违背常识的第一反应?

出0入0汤圆

发表于 2011-8-20 20:07:58 | 显示全部楼层
【15楼】 ywhbn
PS:如果看到“相差400ns”第一反应就是“比裸奔的快”,真的要反思一下:怎么会有这种违背常识的第一反应?
========================================================================================================
很简单,一般宣传中的“相差”是指自己的产品有优势,这是当前广告宣传的结果。不是你所想象的是“否服气”。
其次直言自己的比裸奔慢400ns是正常的,直接写清楚没什么不妥。

能开发一套能运行操作系统的确不简单,但是轻易给别人带高帽子,说什么“对自己对别人都是不尊重”,有点言过其实。
虽然LZ说的不是我,但是也看不惯这种对别人指手画脚的说法。

其次对你说的什么“国内的开发人员有这样一个通病”,不知你知道多少国外的情况,又认识多少国内的开发人员,才以得出“通病”的结论。我倒是知道国外的第一个蒸气机试航的经典故事。

出0入0汤圆

发表于 2011-8-20 20:23:19 | 显示全部楼层
附加一句:
LZ能开发一个操作系统,的确不容易,论坛里面比LZ牛的人也不在少数,但没有看到哪个牛人因为别人问了一句或者质疑了一下就说别人“对自己对别人都是不尊重”。

出0入0汤圆

发表于 2011-8-20 20:32:51 | 显示全部楼层
为了说明自己产品的实时优势,可以与UCOS、RTEMS、VXWORKS等经典的实时操作系统在同一平台,同一任务条件下对比就一目了然。

这样比任何的言语都有优势,甚至可以造成操作系统领域的震撼。

出0入0汤圆

发表于 2011-8-20 21:36:40 | 显示全部楼层
要不是看到后面有几位兄弟的跟帖,我是不跟了的,这里还是把当时的情况,即我简单头脑的思维活动描述一下:

楼主开始说到:
“要求:来自用户项目的要求,外部中断发生后,必须在2uS以内拉低一个IO口线,无论系统多么繁忙,2uS要绝对保证。”

对于这一句,据我超烂的语文水平的理解,是这个要求非常的难,但我到现在都没有想明白这个要求到底有多难,于是我当时回了两句:
汗(这个字确实不礼貌),我要是不要你这东东几个机器周期就可以 (既然对时间这么苛刻,那自然裸跑的反应速度肯定会快些,只是复杂任务差些,楼主后来说到的见仁见智)
没看到这个比其它OS的优势(众兄弟说到的比较)

正因为对上面的要求没有想明白,感觉楼主并非我等凡人,所以对“我测过,相同的ISR函数,裸奔为1.025uS,跟djyos相差400nS”这句理解的偏差,直觉就是裸奔比dyjos差400ns,于是都没有经过大脑,急于想满足我的好奇心,回了后面的。

因为我的无知,在此向楼主表示深深的歉意!

出0入0汤圆

发表于 2011-8-20 21:44:49 | 显示全部楼层
没看清楚就瞎喷。。。
真服了。

出0入0汤圆

发表于 2011-8-20 21:48:54 | 显示全部楼层
回复【9楼】djyos 都江堰操作系统
回复【8楼】liurangzhou  
我的意思是与其它os比,  
照你这意思是处理中断时,用了djyos比裸奔要快?
-----------------------------------------------------------------------
建议级认真读别人写的东西再回复,否则对自己对别人都是不尊重,更加浪费广大读帖者得时间。
djyos是1.425us,裸奔是1.025us,我什么时候说djyos比裸奔快了?
我说“相差400ns”,说了谁比谁快了吗?
-----------------------------------------------------------------------

+10000000000000000000000

出0入0汤圆

发表于 2011-8-20 21:54:25 | 显示全部楼层
回复【19楼】liurangzhou
要不是看到后面有几位兄弟的跟帖,我是不跟了的,这里还是把当时的情况我简单头脑的思维活动描述一下:
楼主开始说到:
“要求:来自用户项目的要求,外部中断发生后,必须在2us以内拉低一个io口线,无论系统多么繁忙,2us要绝对保证。”
对于这一句,据我超烂的语文水平的理解,是这个要求非常的难,但我到现在都没有想明白,于是我当时回了两句:
汗(这个字确实不礼貌),我要是不要你这东东几个机器周期就可以 (既然对时间这么苛刻,那自然裸跑的反应速度肯定会快些,只是复杂任务差些,楼主后来说到的见仁见智)
没看到这个比其它os的优势(众兄弟说到的比较)
正因为对上面的要求没有想明白,感觉楼主并非我等凡人,所以对“我测过,相同的isr函数,裸奔为1.025us,跟djyos相差400ns”这句理解的偏差,直觉就是裸奔比dyjos差400ns,于是都没有经过大脑,急于想满足我的好奇心,回了后面的。......
-----------------------------------------------------------------------

出0入0汤圆

发表于 2011-8-20 21:54:29 | 显示全部楼层
回复【20楼】Excellence 精益求精
没看清楚就瞎喷。。。
真服了。
-----------------------------------------------------------------------

本帖中我想你用的词最低俗了

出0入0汤圆

发表于 2011-8-20 21:59:03 | 显示全部楼层
诶。。。不管怎么样 ls几位确实说话比较冲  没必要。。。。。抠那字眼干吗。 LZ还没说错 就被喷了 说错了估计祖宗十八代都出来了

出0入0汤圆

发表于 2011-8-20 22:04:58 | 显示全部楼层
国产货 必须顶!!!

出0入0汤圆

发表于 2011-8-20 22:07:46 | 显示全部楼层
回复【24楼】nome 物净
诶。。。不管怎么样 ls几位确实说话比较冲  没必要。。。。。抠那字眼干吗。 lz还没说错 就被喷了 说错了估计祖宗十八代都出来了
-----------------------------------------------------------------------

注意看谁喷谁了

出0入0汤圆

发表于 2011-8-20 22:09:11 | 显示全部楼层
ls几个人明显是找茬的
操作系统本来就是一个代理,只是为了更方便的处理底层

怎么会比裸奔快?  SB都知道是的事情,再说LZ的从头到尾的表达并没有什么含糊的地方啊

回去上小学语文去

出0入0汤圆

发表于 2011-8-20 22:15:11 | 显示全部楼层
哈哈,了不起,还在坚持;

出0入0汤圆

 楼主| 发表于 2011-8-20 22:20:17 | 显示全部楼层
呵呵,一石激起千层浪啊,其实本帖只是客观描述了djyos某一方面的性能,当然包含我自己觉得有些得意的成分,懂得欣赏自己的工作成果才能做好工作,不是么?
    我只写了“相差400nS”,其义确实是为“我只比裸奔慢了400nS”而得意,虽然我没明说是比裸奔慢,但liurangzhou理解成“djyos比裸奔快”有违常识,而且“djyos 1.425uS”和“裸奔1.025uS”这两个数字我写得可是非常明确,没有含糊的。所以当时头脑一热,把这种“误解”当成是“故意曲解”了,才有点发火,请liurangzhou谅解。
    老网友应该还记得,去年和前年曾经有很长一段时间,有一帮人有组织地、变换着马甲来这里辱骂诋毁djyos,直到其中一个人露出马脚,被查到了他的真实身份、电话后,才平息了下来。请原谅我,对一些质疑帖子,有点过敏,以后会注意,不要误解了好心网友。
   
    跟其他OS的对比,欢迎网友来做,我自己做的话,岂不是又做裁判又做球员?特别是中断这一块,OS的表现跟移植者的水平关系很大,比如同是ucosii,不同的人移植出来,中断延迟就不一样,我自己做比较,是没有说服力的。

出0入0汤圆

发表于 2011-8-20 22:21:04 | 显示全部楼层
顶楼主,顶27楼

出0入0汤圆

发表于 2011-8-20 22:41:16 | 显示全部楼层
说实在的,偶也没觉得楼主的表达哪里有问题。

反而是3楼的兄弟貌似有点着急了。
再者,你的“没看到这个比其它OS的优势”是因何而得出的呢?
欢饮贴出你的依据,我想这也是大家在技术型论坛所乐于见到的。

出0入0汤圆

发表于 2011-8-20 22:45:44 | 显示全部楼层
19楼已经有人给出道歉了。

出0入0汤圆

 楼主| 发表于 2011-8-20 22:51:52 | 显示全部楼层
其实都是一点小小的误会,如果大家没意见,我明天把本帖中跟技术无关的回帖全删掉,行使下版主权力,(*^__^*) 嘻嘻……
毕竟,这是技术论坛,大家都愿意看有技术含量的讨论,而不是其他内容。

出0入0汤圆

发表于 2011-8-20 23:49:41 | 显示全部楼层
支持~~

出0入0汤圆

发表于 2011-8-21 08:46:36 | 显示全部楼层
开源伟大 支持楼主

出0入0汤圆

发表于 2011-8-21 09:27:58 | 显示全部楼层
不仔细看贴,浪费了你的时间,也不是楼主的本意。至少我看明白了,没有浪费我的时间。
另外,强列的感觉到一种浮躁的心理。常识性的问题,加上楼主也贴了数据在那里,怎么会有这样的第一反应?至少我不能理解。
国产的东西做大做强,离不开大家的支持,少一些讽刺,多一些支持不是更好么?

出0入0汤圆

发表于 2011-8-21 10:02:24 | 显示全部楼层
回复【23楼】liurangzhou
回复【20楼】excellence 精益求精
没看清楚就瞎喷。。。  
真服了。
-----------------------------------------------------------------------
本帖中我想你用的词最低俗了
-----------------------------------------------------------------------

低俗?我没看出那个字低俗。

不过你的心态有问题?
没看明白楼主的描述,就开始瞎喷。

出0入0汤圆

发表于 2011-8-21 10:19:11 | 显示全部楼层
哈哈,热闹啊

每次都如此,赶赶集呢

出0入0汤圆

发表于 2011-8-21 10:43:37 | 显示全部楼层
回复【13楼】pengshipower
【9楼】 djyos 都江堰操作系统
建议级认真读别人写的东西再回复,否则对自己对别人都是不尊重,更加浪费广大读帖者得时间。  
djyos是1.425us,裸奔是1.025us,我什么时候说djyos比裸奔快了?  
我说“相差400ns”,说了谁比谁快了吗?   
======================================================================================
恕我直言,“相差400ns”,也没说比裸奔的慢啊。粗略一看,还以为是比裸奔的快。
为何不直言“比裸奔的慢400ns”呢。
其次,语气咄咄逼人,别人问一下又何妨?
你不写清楚难道就是对读者的尊重,就没有浪费广大读帖者得时间?
-----------------------------------------------------------------------

你的第一反应是“OS下的中断比裸奔的快”,怎么会如此可怕的潜意识呢。。。而且楼主也列出数据了,支持楼主

出10入10汤圆

发表于 2011-8-21 11:02:50 | 显示全部楼层
其实楼主开贴就写明了:
实测:1.425uS,

还是有人没看清楚。这也人之常情,大家都会有走眼的时候。

出0入0汤圆

发表于 2011-8-21 11:09:00 | 显示全部楼层
DJYOS的授权有没有变?
记得以前是有限授权,商业用途需要付费。而且付费规则还不明确
头像被屏蔽

出0入0汤圆

发表于 2011-8-21 11:28:13 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽

出0入9汤圆

发表于 2011-8-21 11:52:25 | 显示全部楼层
回复【楼主位】djyos 都江堰操作系统
-----------------------------------------------------------------------

请教一下,外部中断响应后,系统是先关总中断然后再处理IO的转变,清中断位再开中断,还是直接进行IO转变再清中断位?

出0入0汤圆

发表于 2011-8-23 00:42:58 | 显示全部楼层
正好也在搞M0,也是nxp的,手头有zlg移植的ucosii,测了一下ucosii的中断延时,交作业了:
手上的板子晶振是12M的,奶奶的lpc的pll只能做整数倍频,害的老子还换了10M的晶振,才调出LZ一样的40M来。
测试方法:初始化定时器,当计数到1000时请求中断,进入中断立即读定时器的值,减去1000即为中断延迟。偷懒了,没用IO,直接读定时器,结果应该和写IO一样的。

测试代码:

void TIMER32_0_IRQHandler (void)
{
        volatile uint32_t time,pr;
        uint16_t loop;
//    OSIntEnter();             ----------这个调用比较费时,要得到极限最短延迟,关掉它。
        time = LPC_TMR32B0->TC ;
        ttt[iii++] = time;
        if(iii == 1000)
        {
                pr =0;
                time = ttt[0];
                for(loop = 0; loop < 1000;loop++)
                {
                        pr += ttt[loop]-1000;
                    if(time < ttt[loop])
                            time = ttt[loop];
                }
                pr /= 1000;
        }
    LPC_TMR32B0->IR      = 0xff;
        LPC_TMR32B0->TC = 0;
        *(uint32_t*)0xe000e280 = (uint32_t)(1<<TIMER_32_0_IRQn);
//    OSSemPost(TimerSem);
//    OSIntExit();
}

/*********************************************************************************************************
** Function name:        timer0Init
** Descriptions:        32位定时器0初始化函数
** input parameters:    无
** output parameters:   无
** Returned value:      无
*********************************************************************************************************/
void timer0Init (void)
{
    LPC_SYSCON->SYSAHBCLKCTRL |= (1 << 9);                              /* 打开定时器模块               */

    LPC_TMR32B0->IR      = 1;
    LPC_TMR32B0->PR      = 0;                                        /* 设置分频系数                 */
    LPC_TMR32B0->MCR     = 1;                                           /* 设置MR0匹配后复位TC并产生中断*/
    LPC_TMR32B0->MR0     = 1000;                          /* 设置中断时间                 */
    LPC_TMR32B0->TCR     = 0x01;                                        /* 启动定时器                   */
    NVIC_EnableIRQ(TIMER_32_0_IRQn);
    NVIC_SetPriority(TIMER_32_0_IRQn, 2);
//    zyIsrSet(TIMER_32_0_IRQn, 2);                                       /* 设置中断并使能               */
}

测量1000次的结果如下:
最短中断延时:40*25nS = 1000nS
平均中断延迟:60*25nS = 1.500uS
最长延迟:787*25nS=19.675uS

结论:相同环境下,ucosii的中断延时最小值优于djyos,平均值略输给djyos,关键是最坏情况。
按LZ所述,djyos的1.425uS绝对保证的,ucosii绝对保证值肯定≥19.675uS,相差十多倍。

以下文字版主添加:

数据很给力啊,看来我要得瑟一会了。
djyos的1.425uS是在系统非常繁忙时测到的,测量次数超过10000次。
对于实时系统来说,最坏情况是最重要的,这不是田忌赛马,就算你赢了“最好情况”和“平均情况”两场,只要“最坏情况”输掉了,满盘皆输,何况ucosii的平均情况也比djyos差。
我敢说,1000次测量,很难测到最坏情况。

出0入0汤圆

发表于 2011-8-23 01:17:27 | 显示全部楼层
真的没觉得楼主的表达有什么问题,毫无歧义!顶楼主!
头像被屏蔽

出0入0汤圆

发表于 2011-8-23 07:57:20 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽

出0入0汤圆

 楼主| 发表于 2011-8-23 08:04:58 | 显示全部楼层
回复【42楼】tomac
djyos的授权有没有变?
记得以前是有限授权,商业用途需要付费。而且付费规则还不明确
-----------------------------------------------------------------------

9月份会公布授权规则,不会让任何人失望的。


回复【44楼】liangyurongde
回复【楼主位】djyos 都江堰操作系统
-----------------------------------------------------------------------
请教一下,外部中断响应后,系统是先关总中断然后再处理io的转变,清中断位再开中断,还是直接进行io转变再清中断位?

-----------------------------------------------------------------------
这个要看具体中断控制器的设计。
关不关总中断,要看你是否支持中断嵌套,若不支持,处理过程一般是:
清总中断——处理IO——清中断位——开中断。
但是,最高优先级的中断可以去掉清总中断这个环节,在实时性要求非常苛刻的情况下,这样可以减少中断延迟。

出0入9汤圆

发表于 2011-8-23 08:21:32 | 显示全部楼层
回复【49楼】djyos 都江堰操作系统
-----------------------------------------------------------------------

谢谢你解了我一个疑问,但我现在还有一个疑问。
刚才看了一下46楼的数据,我猜想ucosii的那个最长延迟可能是由于时钟节拍进行调度时关了总中断(OSIntEnter())时造成的,不知道djyos是如何执行时钟节拍的调度的呢?是否也要执行关总中断,但关了就不能绝对保证时间在2US内吧。
PS:这是我个人疑问,因为我没有读过djyos才发出的,绝对不是要攻击这个系统。请见谅。

出0入12汤圆

发表于 2011-8-23 08:40:03 | 显示全部楼层
楼主,新版本啥时候出来呢???

出0入0汤圆

 楼主| 发表于 2011-8-23 08:51:11 | 显示全部楼层
回复【50楼】liangyurongde
-----------------------------------------------------------------------

楼上多虑了,这是多好的技术交流啊,一点都没说错。
我所反对的,是“故意曲解”,如果我说得不清楚导致一些错误的理解,我会很认真地检查纠正自己的。

djyos的中断架构,用户可以把任何中断线设置为实时中断或者异步信号,用这两个系统调用:
    int_setto_real(cn_int_line_PIOINT0); ----设为实时中断
    int_setto_asyn_signall(cn_int_line_PIOINT0); ----设为异步信号
    操作系统运行过程中,是不关实时中断的,即使在时钟节拍中调度时也一样(依赖于硬件,有些硬件会需要极短时间关闭),当然,这是有代价的,实时中断的ISR中不能使用任何系统调用。
    而异步信号的中断延时,可能比其他一些操作系统更长一些,但异步信号ISR的功能和编程便利程度,都是其他OS不可比的。
    这符合djyos“九九加一”的原则:为99%的需求提供便利性,为1%的极短需求提供可能性。
    ucosii则没有提供这一机制,在访问敏感资源时,所有中断都是关闭的,如果中断发生时中断正好是关闭的,则延迟时间不可确定。

    你不一定要读djyos代码,建议看看我的书,上面有djyos设计思想,在本坛共享着的。

出0入0汤圆

发表于 2011-8-23 08:58:58 | 显示全部楼层
异步中断就是个高优先级的中断任务吧。FreeBSD也是这么干的。这样在中断里可以有阻塞操作。

出0入0汤圆

发表于 2011-8-23 09:04:45 | 显示全部楼层
回复【50楼】liangyurongde  
-----------------------------------------------------------------------

我觉得可以在任务里做时钟节拍处理,通过互斥体来处理共享变量,
可以达到很小的关中断时间!即所有中断的系统调用都推迟到任务里处理!

出20入0汤圆

发表于 2011-8-23 09:09:50 | 显示全部楼层
顶30楼

在PRC做点事真不容易

出0入0汤圆

发表于 2011-8-23 09:14:44 | 显示全部楼层
回复【46楼】substation
......

以下文字版主添加:

数据很给力啊,看来我要得瑟一会了。
djyos的1.425uS是在系统非常繁忙时测到的,测量次数超过10000次。
对于实时系统来说,最坏情况是最重要的,这不是田忌赛马,就算你赢了“最好情况”和“平均情况”两场,只要“最坏情况”输掉了,满盘皆输,何况ucosii的平均情况也比djyos差。
我敢说,1000次测量,很难测到最坏情况。
-----------------------------------------------------------------------

意外or失望?觉得版主犯了基本错误,djyos的最坏情况居然是“可以”测量出来的。怎么我一直以为这个应该是根据程序算出的理论值?你是说1万零1次里面有一次飞机坠毁是可以接受的?

------

编辑原因:改错别字

出0入0汤圆

发表于 2011-8-23 09:18:18 | 显示全部楼层
题外话,我对版主是相当之佩服,但我觉得有的东西还是严谨一点好。

出0入0汤圆

 楼主| 发表于 2011-8-23 09:26:57 | 显示全部楼层
回复【57楼】valley 微风山谷
题外话,我对版主是相当之佩服,但我觉得有的东西还是严谨一点好。
-----------------------------------------------------------------------

嗯,是不够严谨,的确是理论值,然后经过一定数量的实验验证。
谢谢指正,以后注意。

出0入0汤圆

发表于 2011-8-23 09:41:36 | 显示全部楼层

出0入0汤圆

发表于 2011-8-23 10:36:59 | 显示全部楼层
顶楼主

出0入0汤圆

发表于 2011-8-23 11:42:50 | 显示全部楼层
M0的向量表只能放在flash中,代码也在flash中运行,flash速度只有20M,如果换成M3,估计时间在1uS以内。
——————————————————————————————————————————————————
M0的向量表是可以放在RAM中的

出0入143汤圆

发表于 2011-8-23 13:04:32 | 显示全部楼层
不错,可以在实时要求比较高的工控机上用

出0入0汤圆

发表于 2011-8-23 13:35:00 | 显示全部楼层
支持!

出0入0汤圆

发表于 2011-8-23 14:31:59 | 显示全部楼层
将准备学习UCOS  关注

出0入9汤圆

发表于 2011-8-23 16:58:37 | 显示全部楼层
回复【52楼】djyos 都江堰操作系统
-----------------------------------------------------------------------

觉得你这种系统设计思想不错,能否说一下书名,我在论坛搜索一下。网上书店有卖的吗?

出0入0汤圆

发表于 2011-8-23 18:28:55 | 显示全部楼层
说OS会比裸奔快的人,根本上都不理解OS,根本都不了解任务切换,就在这里瞎扯。如果对OS有些了解,就不会有这种理解。

出0入0汤圆

 楼主| 发表于 2011-8-23 22:32:51 | 显示全部楼层
回复【65楼】liangyurongde
-----------------------------------------------------------------------

书在本坛置顶帖中下载,未出版。
http://cache.ourdev.cn/bbs_upload568426/files_25/ourdev_531691.pdf

出0入0汤圆

 楼主| 发表于 2011-8-23 22:37:15 | 显示全部楼层
回复【61楼】AVR_DIY 苹果的另一半
-----------------------------------------------------------------------

是吗,怎样才能把向量表放ram中?我只知道M3是可以的。

回复【62楼】tiky
不错,可以在实时要求比较高的工控机上用
-----------------------------------------------------------------------

是的,本帖中的用户,多亏选择了djyos,不然很难用上操作系统。实时性是ucosii非常非常强调的特性,都满足不了,估计很难有其他操作系统能满足了。
不过现实中,实时性要求如此苛刻的应用,还真不多。

出0入0汤圆

发表于 2011-8-23 23:55:45 | 显示全部楼层
这段时间正在学uCOS-II,这个帖子中有些回复看了很受益,又加深了一点对操作系统的理解。

出0入0汤圆

发表于 2011-9-2 17:59:26 | 显示全部楼层
日本有个tron,据说很有些年头了。。
还是用android吧。。不知道那位大侠能遗址到M3上面来。

出0入0汤圆

发表于 2011-9-2 19:48:49 | 显示全部楼层
欢乐的贴子,运放输出不超过电源的都不是好运放。

出0入0汤圆

发表于 2011-9-2 20:00:57 | 显示全部楼层
这种测试看不出来优劣

建议对比测试时都加入同种TCP协议栈看数据收发来比较更具有说服力

出0入0汤圆

 楼主| 发表于 2011-9-2 22:00:21 | 显示全部楼层
回复【72楼】learner123
这种测试看不出来优劣
建议对比测试时都加入同种tcp协议栈看数据收发来比较更具有说服力
-----------------------------------------------------------------------

结合顶楼、46楼和52楼,你都看不出优劣的话,估计你没搞过嵌入式实时控制,或者没深入搞过。

djyos比ucosii的中断响应时间快10多uS,看似很短,不够你眨下眼的。在实时控制中几个uS有什么意义,我单独说了不算,且看业界大牛ARM公司的做法吧:
ARM7~11,为了节省几个周期压栈时间,就专门为FIQ单独配置了5个32位寄存器。
ARM公司的cortex-m系列的cpu,中断响应只比ARM7~11快几个周期,顶多也就是零点几uS,就作为了不起的进步,大书特书。

协议栈收发能力,是吞吐率的问题,OS有两个指标:实时性和吞吐率,通用OS如windows比较关注吞吐率,RTOS更关注实时性。

出0入0汤圆

发表于 2011-9-2 22:46:05 | 显示全部楼层
终于出关了,不知gui怎么样了?

出0入0汤圆

 楼主| 发表于 2011-9-2 23:51:43 | 显示全部楼层
回复【74楼】superyongzhe 最后的骑士
终于出关了,不知gui怎么样了?
-----------------------------------------------------------------------

老实说,这一年多时间,没把主要精力放在gui上,这也是时势所致。因为djyos首先在智能电网领域取得了突破,而这个行业用户对gui没什么要求,但其他方面的要求却很高,精力都放别的方面去了。

出0入0汤圆

发表于 2011-9-4 08:42:55 | 显示全部楼层
回复【46楼】substation
-----------------------------------------------------------------------

这个测试应该将将要触发的中断优先级设为最高,其单独运行,ucos等类似操作系统有介绍,要达到最快响应时间可以绕过操作系统,直接用高于操作系统能屏蔽中断的最高优先级,可以达到cpu理论的最快响应时间。
所以ucos理论上的最快响应速度也能达到cpu的理论级别,同操作系统传递信号就不能用操作系统调度函数了,而是使用二值函数。
这个思想貌似ucos书上讲述过。

出0入0汤圆

发表于 2011-9-4 08:44:26 | 显示全部楼层
不过还是支持rt-thread djyos 等国内开发人员的坚持,相信有一天国内会出现一批站在世界顶端的操作系统,至少是嵌入式方面的。

出0入0汤圆

 楼主| 发表于 2011-9-4 12:50:17 | 显示全部楼层
回复【76楼】258963519 吾人
-----------------------------------------------------------------------

你所说的方法,已经超出ucosii中断架构了,而djyos是在OS的中断架构内测试的。
这种方法,类似于把中断放在NMI上,只要硬件支持,任何操作系统都做得到的。

出0入0汤圆

发表于 2011-9-4 13:18:13 | 显示全部楼层
回复【78楼】djyos 都江堰操作系统
-----------------------------------------------------------------------
看到最新版的ucos介绍说是为了减少关闭中断时间,将以前版本的很多访问临界资源地方关闭中断改成了禁止任务调度,还有就是每个人移植的ucos中关于汇编部分不同,网上也介绍了好几种方法,有的移植的在进入中断后就禁止中断了,还有介绍可以嵌套中断的移植方法,我想ucos最短中断时间应该跟移植有很大关系,46楼网友说说汇编部分你是怎么做的吧?是否支持嵌套中断。或者把这部分代码贴出来让大牛们看看有没有可以改进的地方啊!还有在ucos-iii中一个重大突破,就是关于任务延时的处理,以前版本都是在系统时钟中断中统计个延时任务的延时时间,现在这部分工作放到一个单独的任务中进行了,也就是系统时钟中断发生后给任务发信号量直接退出,退出的时候发生任务切换切换到ticks任务(当然可以有比ticks任务更高优先级的任务,这时候就不一定是ticks任务被调度了)。


因为之前看过ucos内核,也移植过所以我只是说说我的看法,那些地方可以使中断时间变短,绝对不是要争哪个os更快,这跟我没关系,我也是在业余时间研究一下这些操作系统,很早就想看看djyos了但是官网一直打不开(我手头只有一块6410的板子,就带catch这个优势就跟楼上测试用的硬件没有可比性所以不能自己做测试,请有条件的网友试试吧)我没弄过M3的内核,不知道是不是一样的移植,等有空了我在6410上做一个测试给出参考时间,楼主如果有条件也试试在6410上的时间吧,来PK一下。

出0入0汤圆

发表于 2011-9-4 19:31:39 | 显示全部楼层
回复【78楼】djyos  都江堰操作系统
-----------------------------------------------------------------------
可能是我理解的太少,改天有时间拜读一下djyos的实现方法。
哪个响应除非是在中断里面处理响应,任务响应外部事件达到哪个速度那真的是非常厉害,方便的话公布出来,让我也学习学习。
非挑衅意思,只是想增加一个见识。

出0入0汤圆

 楼主| 发表于 2011-9-5 18:07:00 | 显示全部楼层
回复【80楼】258963519 吾人
-----------------------------------------------------------------------

djyos是开源的,只是暂时新版本未发布而已,而已经发布的版本尚未包含M0。

你看看52楼,看能回答你的问题不。

出0入0汤圆

发表于 2011-9-5 19:54:31 | 显示全部楼层
回复【50楼】liangyurongde  
-----------------------------------------------------------------------

楼上多虑了,这是多好的技术交流啊,一点都没说错。
我所反对的,是“故意曲解”,如果我说得不清楚导致一些错误的理解,我会很认真地检查纠正自己的。

djyos的中断架构,用户可以把任何中断线设置为实时中断或者异步信号,用这两个系统调用:
    int_setto_real(cn_int_line_PIOINT0); ----设为实时中断
    int_setto_asyn_signall(cn_int_line_PIOINT0); ----设为异步信号
    操作系统运行过程中,是不关实时中断的,即使在时钟节拍中调度时也一样(依赖于硬件,有些硬件会需要极短时间关闭),当然,这是有代价的,实时中断的ISR中不能使用任何系统调用。
    而异步信号的中断延时,可能比其他一些操作系统更长一些,但异步信号ISR的功能和编程便利程度,都是其他OS不可比的。
    这符合djyos“九九加一”的原则:为99%的需求提供便利性,为1%的极短需求提供可能性。
    ucosii则没有提供这一机制,在访问敏感资源时,所有中断都是关闭的,如果中断发生时中断正好是关闭的,则延迟时间不可确定。

    你不一定要读djyos代码,建议看看我的书,上面有djyos设计思想,在本坛共享着的。
///////////////////////////////////////////////////////////////////////////////////
个人感觉是一样的,不能进行异步中断,也不能使用任何系统调用,就我所知的实时操作系统应该都可以实现,只不过没有封装成函数而已,而且这个需要CPU的支持,cortex对这个支持的非常不错。

出0入0汤圆

 楼主| 发表于 2011-9-6 12:59:19 | 显示全部楼层
回复【82楼】258963519 吾人
-----------------------------------------------------------------------

首先要明确,操作系统只是一个计算机程序,你能做到的,别人不会做不到,问题在于,谁做了,谁做得更简洁,谁提供了标准接口。
又比如,在djyos下,如果某线程要挂起,等待某中断发生后重新开始,只需要调用:
int_asyn_signal_sync(target_int_src);
即可,连ISR都可以不写,更不需要。
别的操作系统,利用信号量,也是能实现相同功能的,只是没那么方便而已。

出0入0汤圆

发表于 2011-9-6 22:28:40 | 显示全部楼层
回复【83楼】djyos 都江堰操作系统
-----------------------------------------------------------------------

恩,这个同意,也很支持你,很看好你的事件驱动模式编写程序,等以后有精力了好好拜读一下。

出0入0汤圆

发表于 2011-9-9 17:14:24 | 显示全部楼层
这种测试只关注了所谓中断响应,而且是没有什么任务的时候对比,
当然对于很多简单应用,特别是开关量或简单运算的多任务就够了,不过如果只能完成这种简单的任务,称之为操作系统就勉强了
但是似乎作为通用性处理器(相对dsp来说)的实时系统就不足为用了

所以说来电复杂的应用测试更有价值。当然不指望能和vxworks对比,但是要和ucosii对比还是要有更有说服力的证据

因为测试和使用它做产品恐怕我还不敢冒这个风险,不过建议要走到更远就不得不进行更加严格的测试,否则无法进一步提升。此外,该系统结合了相同协议栈做对比,更加有实用价值。
没有细找,但至少我个人目前没有看到对该系统对协议栈的移植,这个工作由作者自己来做更好些,当然作为对比,ucosii在配置和部分移植代码应该等价的情况下进行。

此外,作者似乎进入了到了一个误区,用精确的数据比较模糊的概念就很不适合了,这个我也懒得口水了。同一段代码不同处理器,不同编译器,不同存储器配置,结果都不同,更何况是不同系统。否则,跑个流水灯比速度,恐怕vxworks也比这个还烂吧。

顺便说一下,对不成熟的的操作系统的雏形关注,已经是非常尊重作者了。

出0入0汤圆

发表于 2011-9-9 19:08:04 | 显示全部楼层
回复【70楼】blacknewnew  
日本有个tron,据说很有些年头了。。
还是用android吧。。不知道那位大侠能遗址到m3上面来。
-----------------------------------------------------------------------

很多M3没有MMU

出0入0汤圆

发表于 2011-9-9 23:39:41 | 显示全部楼层
回复【79楼】s200661524
回复【78楼】djyos 都江堰操作系统
-----------------------------------------------------------------------
看到最新版的ucos介绍说是为了减少关闭中断时间,将以前版本的很多访问临界资源地方关闭中断改成了禁止任务调度,还有就是每个人移植的ucos中关于汇编部分不同,网上也介绍了好几种方法,有的移植的在进入中断后就禁止中断了,还有介绍可以嵌套中断的移植方法,我想ucos最短中断时间应该跟移植有很大关系,46楼网友说说汇编部分你是怎么做的吧?是否支持嵌套中断。或者把这部分代码贴出来让大牛们看看有没有可以改进的地方啊!还有在ucos-iii中一个重大突破,就是关于任务延时的处理,以前版本都是在系统时钟中断中统计个延时任务的延时时间,现在这部分工作放到一个单独的任务中进行了,也就是系统时钟中断发生后给任务发信号量直接......
-----------------------------------------------------------------------

回复【82楼】258963519 吾人
-----------------------------------------------------------------------

首先要明确,操作系统只是一个计算机程序,你能做到的,别人不会做不到,问题在于,谁做了,谁做得更简洁,谁提供了标准接口。
又比如,在djyos下,如果某线程要挂起,等待某中断发生后重新开始,只需要调用:
int_asyn_signal_sync(target_int_src);
即可,连ISR都可以不写,更不需要。
别的操作系统,利用信号量,也是能实现相同功能的,只是没那么方便而已。

-----------------------------------------------------------------------

看来ucos-iii也在试图改进ucos-ii的响应速度。

兼听则明。看完这些辩论,感觉操作系统不是那么神秘了。

出0入0汤圆

 楼主| 发表于 2011-9-10 12:23:55 | 显示全部楼层
回复【85楼】learner123
-----------------------------------------------------------------------

你面子太大,这里承受不起,收起来吧。

出0入4汤圆

发表于 2011-9-10 13:46:35 | 显示全部楼层
非常支持楼主的对这方面的研究和努力。我认为现阶段要想操作系统走上商业化实在太难了。一方面强时实性统操作系中要求稳定性有时比时实性更重要。内存管理和事件处理非常严谨和冗余,在工业控制中或强干扰环境应用需要很长时间测试。另一方面强调应用层的操作系统需要强大应用软件层的支持并可能出现专利问题。很多方面都限制了商业化发展。新的操作系统要想得到认可,我觉得应该做这几个方面的事。一是详细的操作文档必需的。二是上手要快不用太多时间就能应用起来,这就得要做好多的实例。我想不会有很多人去研究细节,好用后才可能去研究。三服务要好有问必答,快速解决问题。让时间和工程说话最有说服力。

出0入0汤圆

发表于 2011-9-10 14:57:06 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-9-24 11:33:06 | 显示全部楼层
了解了解!!!mark

出0入0汤圆

发表于 2011-9-27 16:49:48 | 显示全部楼层
国内竟然也有这么6B的东西,又长见识了!支持!

出0入0汤圆

发表于 2011-10-22 14:00:25 | 显示全部楼层
先来学习下作者的编程思想!嘿嘿

出0入0汤圆

发表于 2011-10-25 23:16:55 | 显示全部楼层
不了解djyos,进中断服务前无非是保存上下文等,ucos和djyos处理应该差不多吧,还有就是中断嵌套的问题,如果正在处理一个中断,外部中断来了,这种情形应该是最坏的情况。实时操作系统的实时性应该是指不同优先级任务之间切换的实时性,貌似中断服务应该另当别论。
楼上某些兄弟瞎扯,android都拉出来对比,android根本不是实时操作系统!

出0入0汤圆

发表于 2011-10-26 08:34:39 | 显示全部楼层
有空的时候再过来仔细看看,总之能做OS的人就不是一般的人,在国内也找不到几个。

出0入0汤圆

发表于 2011-11-5 23:24:57 | 显示全部楼层
支持,mark !

出0入0汤圆

发表于 2011-11-6 08:01:41 | 显示全部楼层
不错 支持楼主 !!

出0入0汤圆

发表于 2011-11-6 20:20:47 | 显示全部楼层
作者能把guaranteed中断响应时间做到这么小,确实是很厉害了,因为RTOS最重要的指标就是这个值了。。。
我猜作者应该充分利用了cortex的晚到中断、咬尾中断技术。。。不知道有没有猜对。。

出0入0汤圆

发表于 2011-11-6 22:21:05 | 显示全部楼层
支持楼主!

出0入0汤圆

发表于 2012-6-29 14:13:59 | 显示全部楼层
substation 发表于 2011-8-23 00:42
正好也在搞M0,也是nxp的,手头有zlg移植的ucosii,测了一下ucosii的中断延时,交作业了:
手上的板子晶振 ...

ucos的后续版本  有没有什么改进?

出0入0汤圆

发表于 2012-7-13 07:19:55 | 显示全部楼层
pkjapan 发表于 2011-8-20 22:09
ls几个人明显是找茬的
操作系统本来就是一个代理,只是为了更方便的处理底层

是啊
有一些人就是喷啊喷啊
当然,对于工程师来说,也需要自己注意,不要以为自己认为理所当然的事情,就轻易放弃,还是要说的尽量全面

出0入0汤圆

发表于 2012-8-20 00:04:16 | 显示全部楼层
支持楼主,楼主能开源,很了不起
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-3-28 18:44

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

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