打印

【原创求精】**单片机伪命题之(2)——实时操作系统

[复制链接]
6734|32
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
NE5532|  楼主 | 2010-6-15 13:39 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 NE5532 于 2010-6-15 13:53 编辑

*注:此文专为21IC而著,可以转载,但需保留本说明,否则将可能导致版权追究

1.实时操作系统比“裸奔”好
2.“裸奔”不能实现实时操作系统所能实现的某些编程任务
3.实时操作系统可以提高单片机的响应速度
4.用过实时操作系统的人,绝不会返回“裸奔”状态

破题:

1.不讲条件

[a]违反工程设计的基本原则

     这种结论方式违反了工程设计的基本原则。在设计中,没有“最好”的方式,只有“最合适”的方式,每种方案都有自己的优点和缺点,就像硬件的可靠性和软件的灵活性一样。

     在工程中选取一种方案时,必须同时知道他“好”在哪里,“坏”在哪里,正如孙子兵法所说“知己知彼,百战不殆”。

[B]没有为“实时操作系统”下定义

     
什么是“实时操作系统”,实时操作系统是一种用于在多个并发性任务间进行调度的代码,是由“”完成的。既然这种代码是由人完成(而不是神),那么每个编写单片机程序的人,在掌握了必要的编写思想后都可以自己完成一个“实时操作系统”。

     如果“实时操作系统”的概念指“由特定的某人编写的那个实时操作系统”,那么其他人写的就都叫“裸奔”;如果“实时操作系统”仅指这种程序调度方式思想,那么任何人都可以用这种思想(或加以裁剪以适应自己的实际系统)后用于编写自己的订制软件。

综上:该命题没有指明“实时操作系统”的概念,没有具体说明其好在哪里,坏在哪里。

解决方案:在选择“裸奔”或“实时操作”系统前,应弄懂其各自的优缺点,和自己的应用需求,方可作出正确的选择。

2.定义不明

[a]没有为“实时操作系统”下定义

     理由同上,最常见的直线型程序是最简单的程序模式,但肯定无法满足所有的编程要求。在直线型程序模式之上加中断、定时、调度等程序思想,可以形成状态机(一种简单的合作式调度模式)、合作式调度器、抢占式调度器(实时操作系统)等处理能力更强的,如果我们把“实时操作系统”仅看成一种变成模式,那么这个命题就不攻自破了。

解决方案:弄清方案的实质,千万不要把技术“神化”

[B]没有考虑“方案代价”

     如上所述,任何方案都有他好的一面,也有坏的一面。实时操作系统的缺点在于“占用部分的系统资源”“使用他人代码的风险性”。

     当单片机硬件系统固定以后,其最高的指令处理速度就确定了。既然“实时操作系统”是一个需要一直运行的代码程序,其必然占用单片机部分的处理能力(包括使用定时中断、占用MIPS,占用RAM资源等)。我们知道,标准51上运行UCOSII后,资源几乎耗尽,这就像奔腾1G+128M RAM,虽然可以运行WinXP,但几乎只能用来上网一样。当系统确实需要实时系统时,我们在资源上必须做出折让,其代表是以ARM为首的32位平台,不过这样的折让又会带来第二个问题——技术风险

     技术风险包括硬件风险和软件风险。8位机里,51和PIC问世已达到或接近20年,由于其简单、应用广泛,内核的BUG几乎已经消灭殆尽,虽然这些单片机的资源几乎无法运行实时操作系统(有为PIC编写的非常简单的调度程序)。但是我们再转过来看看已经不是主流的ARM7的BUGLIST,以NXP为例,MAM加速器随机崩溃的BUG,足够让我们心惊胆战。如果再看更新的M3内核或者ARM9、ARM11,就知道其作为消费类或非关键类产品的处理器是足够的(例如手机),但是在一些“稳定压倒一切”的产品(例如能源计量、军事、医疗)上,我们不得不仔细考虑是否能够承受这样的代价。

     软件风险是指你如何去信任别人的代码,世界上不犯错误的只有上帝,这就说明任何人类编写的程序代码都可能有BUG。但是在嵌入式系统的销售模式上,消费者只会找最终厂家的麻烦,比如移动Ophone使用GOOGLE的系统(改编后的),如果消费者发现问题,只会去找移动,而不会去找GOOGLE。同时,一些政府采购的例如电表、气表等,如果出现过多的问题,可能导致生产厂家被逐出该市场,在这种情况下,系统的设计者不得不考虑“是否为他人买单”的技术代价。

    另一方面,随着软件复杂度的提高,软件的测试也会变得非常困难。直线程序很好测试,因为在编译之后,其各种行为就确定了;有中断参与的程序要难测一些,因为中断和主程序是异步运行的;当引入了事件驱动和调度后,软件的行为取决于外部事件发生的顺序,在产品上市时间的压力下,测试不可能找到所有的BUG,消费类产品必定会带着BUG出厂,这就是智能手机死机的原因之一。

解决方案:要仔细评估自己系统对需求、成本、可靠性的要求,权衡后决定是否使用操作系统。

3.概念混淆

    上以述及,当硬件系统确定后,单片机总的处理速度是一定的。当其专注于某一个任务时,该任务会得到最高的相应速度;当其运行调度器,需要关心多个任务(或至少运行调度器)时,必将降低其响应速度。请注意我们的讨论条件——“只有一个任务”。当有多个并发任务时,简单程序模式(包括直线程序和中断模式)已经不能完成功能要求,这时就需要使用操作系统思想或代码。

     以12M频率标准51系统而言,其实RTOS很难实现数uS级别的相应,但专注于单任务的“裸奔”程序却可以做到。

解决方案:单任务裸奔模式具有最高的响应速度,实时系统是为了同时响应多个并发任务。

4.违反工程设计基本原则或带有商业目的

     上以述及,实时操作系统有利有弊,裸奔同样有利有弊,没有一个方案是万能的。有的设计师没有跳出自己所属的行业(例如消费电子、医疗或三表等)来全面看待这个问题。不得不承认,任何人(包括我自己)都有保护自己技术方向的本能(该能力属动物性质,为自然属性)。但是我们作为工程师,应该客观全面地认识事物,辩证看待“好”与“坏”的概念。简单说,不讲条件地推广RTOS的人,可能是“球迷类狂热者”,也有可能是销售员,就像电视购物一样,他们把你闹晕的目的只有一个——让你掏腰包。

解决方案:世上没有万能方案,没有绝对的“好”和绝对的“坏”,工程师应该辩证看待问题,给出最适合自己需要的选择。

链接--上一篇  【原创求精】破解单片机伪命题之(1)——精确定时
https://bbs.21ic.com/icview-177692-1-1.html

相关帖子

沙发
NE5532|  楼主 | 2010-6-15 18:31 | 只看该作者
下一篇预告:C与汇编之争。

使用特权

评论回复
板凳
程序匠人| | 2010-6-15 19:19 | 只看该作者
裤子来啦

使用特权

评论回复
地板
NE5532|  楼主 | 2010-6-15 19:54 | 只看该作者
呵呵,匠人大叔赏裤子了,灰常管谢哈。

不过也欢迎有来拍砖的哈。

使用特权

评论回复
5
冷漠| | 2010-6-16 11:09 | 只看该作者
本帖最后由 冷漠 于 2010-6-24 17:54 编辑

LZ 是否能先介绍一下自己,精通哪些嵌入式嵌入式操作系统?否则不太好办了?因为国人几千年来给人一个印象,关起门来自大。不知道当今世界发展到哪了。

举个刚看到的例子:华人建筑师马岩松设计的“玛丽莲.梦露”大厦在众多竞争对手招标中胜出。大厦建造资费150亿美元(好像),——设计费8%,马岩松一个创意设计拿了多少?大厦建成,开盘第一天全部售空。一时轰动美国建筑业。可见其在美国人心中的价值。

但是这件事到了中国,马上有人不高兴了:

性感建筑——玛丽莲·梦露大厦

      图片上这座名叫“玛丽莲.梦露”的性感大厦,虽然梦幻优美,但从其它角度的照片和示意图来看,确实有些七扭八歪,给人一种不稳定感。想必初次欣赏了大厦外观的人们不会立刻就产生进入大厦里面的想法。不过这座由马岩松领衔的建筑事务所MAD设计的大厦,目前还停留在草图和虚拟演示中。它击败了其它92个设计方案,包括其它5个主要设计方案,在加拿大第七大城市密西沙加市( Mississauga )一幢50层地标性公寓大厦设计权竞标中,最终中标。建筑事务所MAD虽然在美国注册,是一家美国公司。但是目前办公地点设在北京。而且从马岩松到其他两位团队成员,都是黄皮肤、黑眼睛。可以这么说,他们为中国挣了个不大不小的光。不过按小编我的看法,这座性感大厦时髦有余,缺少成为标志性建筑的历史和文化内涵。这个不乏才智与激情的设计团队,毕竟年轻。”





那么,是不是遍及中国大地的方方正正的砖头外观、筒子楼建筑就“虽然不时髦,但能给人以其它角度‘稳定的美感’,至少能够成为标志性建筑的历史和文化内涵。”?
        始终认为,谁有资格评论马岩松的设计,他必须先要有设计出“玛丽莲.梦露”大厦的能力,以及以往曾获得过的同等荣誉才行。

使用特权

评论回复
6
NE5532|  楼主 | 2010-6-16 11:34 | 只看该作者
我没有什么是精通的,我只知道根据需要选择自己的需要选择正确的解决方案。

使用特权

评论回复
7
冷漠| | 2010-6-16 11:59 | 只看该作者
本帖最后由 冷漠 于 2010-6-16 12:08 编辑

只有那些精通了OS的人,才有可能设计出这样非同寻常的作品。裸奔没什么不好,就是不能跳出砖头楼、筒子楼的俗套。顶多设计7层民房,50层高楼怎么设计的,都无法想象。别说实施了。

    我从没听说过那些掌握了OS设计方法的人参加过什么“RTOS和裸奔谁好”的讨论。——本科生课程决不要求掌握什么RTOS;硕士生至少要求会用RTOS,博士生要求会设计RTOS。
   难道我们会拉着马岩松,贝聿铭,保罗安德鲁,来为我们农民企业家设计个3层别墅,看看世界著名建筑师是不是也用“RTOS”给来个钢结构什么的,然后证明“RTOS不如裸奔好。”——什么级别的人做什么工作,本科生没学RTOS,你当然只能裸奔,然而就此否定“研究生、博士生没什么了不起”,还一再讨论这种事情?不会用的东西,不知道它如何精彩的内容,怎么知道它好还是不好!?

    就好像前几天,有个网友说荷兰人的令牌环形网发明没什么了不起,“不是也得挨个轮询吗?还不如我RS485痛快。”让这样的人参加“TOKEN   BUS和 RS-485谁好”??是不是有点太幽默滑稽?

使用特权

评论回复
8
NE5532|  楼主 | 2010-6-16 12:26 | 只看该作者
那请你说说OS有什么不好的地方呢

使用特权

评论回复
9
冷漠| | 2010-6-16 13:48 | 只看该作者
本帖最后由 冷漠 于 2010-6-24 17:45 编辑

上面已经说过了,以建筑业作比喻,OS不好的地方就是不能用来给中国的农民大款王老五设计三层别墅。而裸奔不好的地方就是不能建造摩天大楼。按照中国人的话说,“阳春白雪”和“下里巴人”都有各自的“理想内核”和生存方式。无所谓谁好谁不好,谁都会按照自己的方式生活一百年。绝大多数人是认天命的,“自己活,也让别人活。”

    那些历史上从事OS发明和研究的人,都是一些极度聪明的人,很多人留名史册。像我们这样平庸的人在这里讨论他们的创意有什么缺点?!“太占用资源、不如裸奔响应快。”是不是显得我们比他们还聪明?“操作系统的研究经历了漫长的历史,”在这个漫长的历史中,没有一个中国人参加过,到今天,我们中国人一天就把这些经历了OS漫长历史研究的不是中国人的天才学者否定了,“这不好,那缺陷,...”  该不是从今天起,操作系统的研究历史上就要开始留下我们中国人的名字?中国人也希望彪炳史册?

使用特权

评论回复
10
冷漠| | 2010-6-16 14:19 | 只看该作者
以盖房子作比喻,OS相对软件程序员来说,就是那些专业天才计算机专家为软件设计员用户建造了一个坚固的平台,——为上面的房屋建筑建造了一个坚固的地基;以及一些为高层建筑不可缺少的建筑构件,——例如进程、线程等等。而裸奔设计者是要连地基和构件,钢筋混凝土,砂浆比例,都要自己做的;一个人再有才能,不可能把多个专业的事情样样精通,——即使真的有这样的多专业精通的天才,他怎么可能把自己的才能浪费在谁都能做的事情上?!他早就去研究只有极少数人才能从事的课题——例如OS了。

    所以,裸奔者不可能建造出一个比OS还要坚固的平台,也就是说,他做出来的软件,不如OS环境下以进程为单位做出来的软件稳定性、坚固性好。这是最直接简单的道理。
    也许有人说:我的裸奔程序就是比OS环境下做的坚固、稳定,——没人否定这一点,我要说的是:如若你有这个才能,你就不用在这继续做裸奔了,你何不早点到中科院计算机研究所去参加他们的课题研究?都是国家投资立项的,也为中国能够早日在世界相关领域占有一席之地做出点贡献是不是?

使用特权

评论回复
11
冷漠| | 2010-6-16 14:51 | 只看该作者
本帖最后由 冷漠 于 2010-6-16 14:55 编辑

再比如说汶川,汶川地震一场考验,见识了几位中小学校长的远见卓识:几十所学校倒塌了,几千条学生年轻的的生命瞬间消失,他管理的学校房子没倒!几千名学生生命安然无恙,比较起那些一个中学死伤几百学生的学校来说,几位“史上最牛”校长是不是成了学生的保护神,多少家长要“大恩不言谢”,她们感恩的眼泪比起那些因“豆腐渣工程校舍”而被砸死的的学生家长的悲伤眼泪,更让人感动中国。

这就是“OS”理念,那些地震中不倒的校舍,平时校长每年都花经费加固再加固,这些校舍所花费的资源比那些“豆腐渣校舍”所花费的资源高得多!都是校长多年来求爷爷告奶奶申请来的。——很多人嘲笑校长:“根本不会地震,搞那么结实有什么用?”话音没落,地震来了。比较起OS,校长浪费了资源吗?那些豆腐渣校舍节约了资源吗?“世间一切事务中,人是第一个可宝贵的。”无论是软件还是校舍,如若因为坚固性和稳定性问题而造成一个生命的伤害,一切资源的节约还有什么意义?而史上最牛校长知道他保护的是几千条生命和家庭的完整。所以他不敢随便裸奔。

使用特权

评论回复
12
NE5532|  楼主 | 2010-6-16 18:12 | 只看该作者
这篇**不讨论OS裸奔谁好谁坏,只讨论各自的特点和适用范围,我的发言结束,谢谢!

使用特权

评论回复
13
只听风吟| | 2010-6-16 22:42 | 只看该作者
观止。。

使用特权

评论回复
14
原野之狼| | 2010-6-17 00:23 | 只看该作者
我顶LZ所讲的:不能把技术神化

使用特权

评论回复
15
冷漠| | 2010-6-17 09:09 | 只看该作者
讨论要以实际为依据,坛友xlsbz这道题出的不错:
发送7种内容不同、字节长度却相同的帧

其中第1种帧每1s发送一次;
其中第2种帧每2s发送一次;
其中第3种帧每7s发送一次;
其中第4种帧每13s发送一次;
其中第5种帧每14s发送一次;
其中第6种帧每17s发送一次;
其中第7种帧每29s发送一次;

用一个定时器

请问程序咋弄能比较简洁?


LZ说自己是“根据需要选择自己的需要选择正确的解决方案。”由此评定RTOS好与不好——适合的就是好。那么可不可以冒昧地问一下:xlsbz 这道题,LZ认为正确的、适合的解决方案是什么?裸奔还是OS?一天之内是否能够拿出一个能跑起来的、没有漏洞(需补)的实际程序?要知道 xlsbz 还在等着我们拿出一个简洁的程序(而不是方案),已经过了2天了....

使用特权

评论回复
16
風神| | 2010-6-17 09:09 | 只看该作者
LZ的**单片机伪命题系列。讨论的都是这类有争议的话题,得做好遇到这种情况的准备。呵呵

使用特权

评论回复
17
冷漠| | 2010-6-17 09:38 | 只看该作者
本帖最后由 冷漠 于 2010-6-17 09:50 编辑

要是连坛友xlsbz的这道实际项目要求都解不了,或者不得不花费比OS长10倍的设计周期,最后的调试周期,程序运行的稳定性、坚固性,设计者自己也把握不好(不知道控制那里才能保证程序一直在正确的轨道上)。那裸奔不知好在哪里?
    程序设计不是谁会个什么语言,编写出来能完成功能就行了的(裸奔)。嵌入式操作系统还要考虑到保证用户功能程序的坚固性、稳定性。——保证在我这个平台上建起来的土坯房子不会倒,甚至即使倒了也能重新立起来——才行。

     有人说“OS不也是程序模块构成的,所以OS能做到的,裸奔也能做到。”
     这里可能有一个概念中国人从来没想过:裸奔是一个人的行为,——个人的智力行为;而OS怎么完成的 ? 好像IBM的OS是按照 千人•年 为单位计算的,例如它某个OS,是花费了5,000 人•年完成的。(最后因为难用还放弃了。)或者也可以说500人干10年才完成的。咱们一个中国人的智力比美国5,000人还厉害?一个中国人一个月之内就能挑出美国5,000人做了一年都没想到的“不好”的缺点,别人都弱智?

使用特权

评论回复
18
NE5532|  楼主 | 2010-6-17 18:58 | 只看该作者
LZ的**单片机伪命题系列。讨论的都是这类有争议的话题,得做好遇到这种情况的准备。呵呵
風神 发表于 2010-6-17 09:09


呵呵,说得很好。其实这些命题之所以能被争得头破血流,就在于争论的人都没有给出自己的需求和应用范围(你可以回顾一下这些帖子,有人给出自己的应用需求、选择理由和优缺点分析么?),这在搞开发的人里面本来是不应该出现的。因为他们忘记了工程技术的核心——实事求是

能时刻让自己用实事求是的方式思考技术问题,就已经是高手高手高高手了,我自己还做不到,经常犯晕,所以聊以分析几个来抛砖引玉。

使用特权

评论回复
19
冷漠| | 2010-6-18 09:29 | 只看该作者
本帖最后由 冷漠 于 2010-6-18 10:06 编辑

16楼风神兄说得好。
我说句真话:热衷于参与这些有争议的话题的人当中,没有一个真正懂“嵌入式RTOS”内涵的。——那么这说明了一个什么现象?这种现象只有在咱们中国才有的吧。如今,什么都成了文化。这也是咱们中国独有的文化?就是没事干,为自己不是甚懂的东西找个理由:“不是我不懂,而是因为它不完美。(所以我不想学它,不是我学不会。)”。国外的东西有什么好?不如咱们中国自己造的......。
    LZ发起这个话题,当然是自信至少懂得一些RTOS精华的。至少从下面的关于xlsbz一道题的题解方案就能看出来:

摘自2010-6-14 22:44
     2楼: 定时器设为1S的溢出周期,里面对29进行循环计数。发送程序建立一个任务队列,定时器里依次比较7种匹配条件,往队列里填充任务,只要任务队列非空,发送程序就按照队列里的顺序发数据就可以了。注意,前提条件是有最小公倍数的帧的总发送时间不能长于1秒,否则无解。

       最后一句非常精彩,……否则无解!其他人的答案都没考虑到这个问题。——这是通常必须要考虑到的:假定多个任务在1S、2S、14S、……同时并发执行,那么它们的运行时间开销总和(假定你是在中断ISR里启动并发运行。)一定不能大于一个时钟节拍。这是容易理解而又常被裸奔程序忽略的细节。

       但是,谁说无解?
       裸奔程序遇到这种问题不好解了,——也许能解,只是还没见谁的解法出现。
       OS就有解。——这么简单的常见问题;OS早就考虑到了!所以很多时候,我们根本不知道OS强大在哪里,就热衷于议论OS这不行、那不如裸奔,弄不好给人留下笑柄。

         简单讲一下OS处理这类问题原理:……(LZ不是OS也懂一些的么,不用我多讲了吧。提醒一下就行了。)

使用特权

评论回复
20
highgear| | 2010-6-18 21:11 | 只看该作者
支持 NE5532, 说得非常好. 非常的鄙视冷漠, 不懂就算了, 硬是要装, 总是胡扯一些技术之外的垃圾.

“国外的东西有什么好?不如咱们中国自己造的“, 冷漠你不去东厂做提督实在是太可惜了。

"裸奔程序遇到这种问题不好解了", 这种小菜一碟的低级东西居然作为论据, 水平可想而知. 冷漠你再去看看我写的那个"8个按键LED“的程序, 还不服气, 可以加上16级亮度控制。 冷漠你为什么不把你的 真正懂“嵌入式RTOS”内涵的程序展示出来呢? 我们只看到你的一个程序, 水平之低, 与你楼上的大言不惭的胡扯严重不匹配。

10年前, 51上使用os可以说你牛, 今天, 只能说是水平问题了。 单片机应该回归其本来的地位,老老实实的做低成本的低档控制,为了几个简单的任务(相对于高端cpu而言)而增加不必要的硬件成本,不是好方法。此外,根据自己的使用os和无os的经验,无os的程序更需要人的大脑的运作,特别是复杂的程序,额外的好处是没有限制,能做到os做不到的事。而用os, 则可以简化程序设计,规范代码,让普通水平的程序员也能做出不错的程序来(我认为这才是真正的内涵), 额外的代价就是得使用高档cpu, 这也是我们极少使用mcu,也极少使用裸奔的原因。
.
.
.
.
.
.
最终,再支持NE5532一次,非常实在,一看就知道是多年的经验总结.
在单片机上,注意:是单片的机上,os可以做到的,裸奔肯定可以,但反之则不成立。不服气的可以PK.

 

使用特权

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

本版积分规则

个人签名:††††看NE5532教学视频,炼就工程技术研发功力†††††††††† 《跟我学DC-DC电源管理技术》【从只会写软件成长为软硬兼施】 《印刷电路板设计进阶》【12年一线设计经验大放送】 《印刷电路板设计基础》【新手别怕,老工程师带你入门!】

159

主题

13769

帖子

585

粉丝