打印

带os到底比不带os有哪些优势?

[复制链接]
楼主: doob
手机看帖
扫描二维码
随时随地手机跟帖
21
高建明| | 2007-11-11 19:57 | 只看该作者 回帖奖励 |倒序浏览

同意LS

使用特权

评论回复
22
wxj1952| | 2007-11-11 21:56 | 只看该作者

举个容易理解的例子

刚刚做了一个钟表程序,理解了RTX51TNY的与超循环方式的不同。超循环方式怎么做?大概是先设定T2=50ms,然后计数变量=20,秒变量=60时,分钟变量+1,分钟变量=60时,小时变量+1。对么?反正像我这样的菜鸟是做不出这个程序的。

   这个程序当秒计数子程序计数出现错误或跑飞时,这个钟表显示就乱了。因为秒/分/小时计数显示子程序都建立在一个软的“平台”上,——50ms计数变量20子程序。也许高手能够设计纠错程序。

   在RTX51平台上设计这个钟表,把秒/分/小时计数显示分成3个任务,OS提供1S稳定系统心跳。也就是说上面由用户设计的“软平台”变成了OS平台(用户不必关心的),——人们知道OS平台是由计算机专家设计的在任何用户系统中必须最具健壮性的平台。这不是一个嵌入式系统设计师“高手”所能够做到的。——这是两个专业的事情,没有任何一个人能够把2个专业的事同时做到绝顶。

   当然,这个设计中分钟计数显示任务也是依据60秒任务+1次,但是如果秒任务出现误差或者受干扰时,只要这个干扰或者误差时间不超过10个(与T2=50ms设定有关)系统心跳时间,受干扰任务就会在下一次系统调度时得到修正。这有点像看门狗原理,又不是。因为用户根本不知道修正原理,说傻瓜就傻瓜吧,反正我菜鸟做的比高手稳定。我也从此不再敬佩超循环设计程序“高手”了。怪累的。

感兴趣我把这个钟表程序贴出来,3个任务总共没有20条C51语句。

修正的例子:假定现在秒位显示的是58秒,过了1S、2S...都看不到有数字进位,仍是58秒显示,原因可能是其他长任务执行时间影响到秒任务的实时运行,过了5秒种之后,突然秒位显示03秒,分钟位也增1。实际这是OS在后台的同步运行,秒计数显示任务虽然被推延,但是最终没有误差。

  

使用特权

评论回复
23
rodger_br| | 2007-11-12 01:21 | 只看该作者

单片机还是裸奔吧

支持,用os资源都有太多的限制

使用特权

评论回复
24
现实主义| | 2007-11-12 08:41 | 只看该作者

看情况

看情况。
有的人开发个低成本的家电类控制器,硬件成本已经压缩到极致,当然想玩OS也不行。
如果硬件成本不是太在乎的话,就上OS吧,毕竟复杂多任务的时候比裸奔好,可靠性有保证。
从个人角度讲,也是提高了经验能力,从单位讲,也是增加了卖点,何乐不为呢?

使用特权

评论回复
25
ayb_ice| | 2007-11-12 08:43 | 只看该作者

我现在也喜欢裸奔

使用特权

评论回复
26
computer00| | 2007-11-12 09:33 | 只看该作者

能裸奔的地方尽量裸奔,嘿嘿

使用特权

评论回复
27
forthlab| | 2007-11-12 10:04 | 只看该作者

大家不要跑题啊

"能裸奔的地方尽量裸奔",这本身没有界定标准的.
就好像说"能用汇编就尽量用汇编"一样.

我现在的CPU也是裸奔的,前面提到的例子用超循环和状态机也能轻松搞定,不过考虑CPU现在已经便宜很多了,内存,RAM越来越大,速度也很快,具备使用OS的条件,所以想多了解一下.

大家还是回答LZ的问题"带os到底比不带os有哪些优势".
麻烦DX多打写字,最好能有具体的描述,好在那里?不好在那里?举例子的时候能说明用的CPU,OS,功能.....,便于大家理解和交流.

使用特权

评论回复
28
HWM| | 2007-11-12 10:12 | 只看该作者

这个问题确实难以归纳。

不妨可以考虑集合组合(OS,MCU,要求),看看哪些组合有价值,哪些非也。

使用特权

评论回复
29
computer00| | 2007-11-12 10:14 | 只看该作者

带OS的优势:

有任务管理,可以分时运行多个任务。
OS还可以提供一些基本的函数和接口供用户使用,使应用程序跟硬件脱离。
OS本身还可以自带很多常用的服务,例如文件系统,网络等等。

使用特权

评论回复
30
forthlab| | 2007-11-12 10:32 | 只看该作者

用超循环和状态机的系统

用超循环和状态机的系统,优点还是很多的,但程序指针在各个状态之间来回跳,调试有时候比较麻烦,碰到断点少的仿真器就更甚.
系统大了,状态机就更多,文件管理也麻烦,所以有时自己也在考虑OS的解决方案是否有优势.

使用特权

评论回复
31
HWM| | 2007-11-12 10:37 | 只看该作者

30楼:一般大而复杂的状态机会用数据结构描述,

不会用纯程序来实现。

使用特权

评论回复
32
dld2| | 2007-11-12 10:57 | 只看该作者

状态机是个好东西

学会用状态机以后,发觉用来解决复杂逻辑问题,程序特别清晰。
状态机在多任务环境也常用啊。

使用特权

评论回复
33
HWM| | 2007-11-12 11:01 | 只看该作者

没状态机就没有计算机了,计算机本质上就是一台“状态机

使用特权

评论回复
34
现实主义| | 2007-11-12 11:06 | 只看该作者

OS可以对任务实现高度的隔离

OS可以对任务实现高度的隔离

任务之间的关系,就是同步和互斥的关系,用OS的信号量之类的很方便。

写程序的方式可以按照上位机的方式写。

方便.

使用特权

评论回复
35
现实主义| | 2007-11-12 11:09 | 只看该作者

还有任务的优先级管理

还有任务的优先级管理比较好,可剥夺式任务管理可以保证实时性。

使用特权

评论回复
36
dld2| | 2007-11-12 11:11 | 只看该作者

个人认为:状态机是事件驱动派生出来的

任务是一个实体,状态是描述这个实体的。
任务收到事件时,依据状态进行处理。
某些状态和事件的组合是非法的,应该进行错误处理。
状态转移图是描述这种结构的最好方法。

使用特权

评论回复
37
dld2| | 2007-11-12 11:19 | 只看该作者

34楼

裸奔也可以对任务进行隔离,也可以有同步和互斥关系。
俺就在大循环程序中用到消息队列,很有趣。
抢占在没有OS时确实不好实现,事实上很多OS也不抢占。对于需要及时响应的东东,可以分成需要及时处理的部分和不需要及时处理的部分,前者在中断的context完成,一般够用。

使用特权

评论回复
38
HWM| | 2007-11-12 11:19 | 只看该作者

呵呵,没状态就是函数拉(或算子)。

使用特权

评论回复
39
现实主义| | 2007-11-12 12:14 | 只看该作者

说白了

说白了,不还是任务关系复杂的时候,所谓的状态机可靠性,编程的简洁程度都不如OS。
用OS是趋势.

使用特权

评论回复
40
现实主义| | 2007-11-12 12:28 | 只看该作者

37楼

抢占式OS比较多,ucos,vxworks都是抢占式内核OS。
linux虽然不是完全的抢占式内核OS,但是在2.6内核实现了部分抢占特性,实时性有了很大的提高。

另外,最主要的一点是抢占式内核OS的实时性不是指速度快,是指高优先级任务只要运行条件被满足,无论任何情况下,就可以在可确定的时间内得到响应.

OS肯定是好东东,用OS是趋势,因为很多工程师都是喜欢尝鲜的(之所以做这个职业,也是因为好奇心强),很多人用以后,一些不用的人也会跟着用,就像C用于单片机一样。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则