圆圈 发表于 2007-12-6 14:23

农民讲习所

我出道题目吧:<br />事件一:响应要求5微妙,处理时间30微妙;&nbsp;优先级0<br />事件二:响应要求1毫秒,处理时间1毫秒;&nbsp;优先级1<br />事件三:响应要求2毫秒,处理时间1毫秒;&nbsp;优先级2<br />事件四:响应要求10微妙,处理时间10毫秒;优先级3<br />事件&nbsp;5&nbsp;6&nbsp;7&nbsp;8&nbsp;9..20:响应要求50~100毫秒,处理时间1~50毫秒<br />

dld2 发表于 2007-12-6 14:28

我觉得嵌入式系统上的OS可以这样分

一类是微内核、强实时、抢占调度。用在通信、控制领域。例如vxworks。<br />另一类是宏内核、准实时、基于优先级和时间片的调度。用在手持终端这样的地方。手持终端一般有杂七杂八的一堆功能,所以这类OS也有杂七杂八的一堆层次和组件。例如wince。<br />嵌入式linux介于二者之间,又想向上靠,又想向下靠。<br /><br />象1952用的那个OS其实是个玩具。uCos也有玩具的嫌疑。

圆圈 发表于 2007-12-6 14:29

21ICBBS提醒您注意:发言不成功!!!,至少主题不应为空

wince&nbsp;palm&nbsp;os主要是人机界面好,而且类windows编程风格,因此推广的人很多,毕竟win上的程序员要比嵌入式领域的程序员便宜...<br />VXWORK是实时系统,但PDA&nbsp;HANDPHONE对实时要求并不高,所以其实嵌入式linux等都可以应付这种应用。<br />但对于军事及数控机床这样的行业,用linux&nbsp;palm&nbsp;os&nbsp;wince肯定不行,因为他们的实时性要求可能满足不了实际的需求。&nbsp;因为linux是基于时间片为基础来调度的。并不具备实时性,同理于其他~~~

圆圈 发表于 2007-12-6 14:35

UCOS

UCOS是实时系统,但比较简单,而且缺少很多协议(文件系统&nbsp;TCP/IP&nbsp;USB&nbsp;MMU...),所以一般系统上使用的话肯定够用,但系统大了复杂了,并不一定能胜任。&nbsp;选择什么操作系统,关键还是要看应用场合的~&nbsp;&nbsp;选择操作系统价格&nbsp;性能&nbsp;资源耗费&nbsp;服务&nbsp;系统持续性等都是考虑因素。&nbsp;而性能内容更多,具体为任务管理&nbsp;内存管理&nbsp;信号量&nbsp;消息&nbsp;队列&nbsp;邮箱&nbsp;第三方协议,这些是最基本的,正规严格的操作系统管理的内容更多,但关键点还是任务和内存。(没有整理过思路,随性说,可能有遗漏)

农民讲习所 发表于 2007-12-6 14:38

你说的OS不错,那么嵌入式黑奔和嵌入OS的比较差不多也这样

另外你出的题不对,俺说过么嵌入式黑奔是串行化的三个等级处理,不是优先级别处理。两者策略和理论出发点是不同的。<br /><br />51中的中断等级和中断优先级别是大不相同的。<br /><br />如果你举个产品控制要求,俺倒是觉得合适,黑奔做不到,OS一定也做不到。

农民讲习所 发表于 2007-12-6 14:40

俺的培训教材里面都有,上面这些你可以看看俺是怎么处理

农民讲习所 发表于 2007-12-6 14:43

拿内存管理这个经典来说

做产品只需要在初始化阶段实现动态内存分配,不需要在运行过程中分配,即使在运行中有这么要求,通常也会在初始化阶段一次性分配完毕。这就可以看出嵌入式裸奔和嵌入式OS对产品态度上的巨大差别。

圆圈 发表于 2007-12-6 14:50

我说过了,某种程度上说,不一样就是不一样

如果你的嵌入式裸奔能写到线程调度,那我出的题目就很容易解决了。毕竟代码都是人写的,你要写个嵌入式多任务调度的程序代码,那我没话说,但问题是有多少人又精力能力去做.&nbsp;项目的时间进度你总还是要考虑的是吧..&nbsp;&nbsp;但如果你只是简单的单线程状态机化,我告诉你,那个问题很难处理好!&nbsp;而且系统以后增加什么任务,将导致系统复杂度大大增加,而且可能还需要重新分析划分系统状态。<br /><br />其实我一开始就直接说明了两者根本区别:<br />单线程状态机无论怎么做,都需要在退出某种状态后,方有机会去处理事件。而多线程,在事件发生后,系统就立刻进行线程调度以决定是否对该该事件进行处理。&nbsp;两者差别在于实时性。&nbsp;你那样的才真正是弱实时,因为你不允许在执行完当前状态前去处理事件,而这个时间的花费是不确定的。这就是两者根本区别.

圆圈 发表于 2007-12-6 14:57

310

内存管理没这么简单的~&nbsp;好的内存管理可实现内存碎片整理回收,而且还有越界保护功能,同时还能查询内存使用状态来检测系统内存是否存在泄漏...&nbsp;更不要说一些具有MMU功能的内存管理,可以用硬盘或者U盘来运行大于内存的代码了~&nbsp;&nbsp;&nbsp;还是那句话,OS还是相当专业的。当然状态机的思想也是种改进系统软件性能的好方法,特别是对于单片机系统而言,就是如此。我以前写过车载系统的代码,对于拨号那部分就采用了状态机,这样就免去了系统的很多等待时间,消除并解决了系统的处理盲点。

农民讲习所 发表于 2007-12-6 15:12

晕,MCU上还内存回收,找死啊

内存泄漏知道不?产品上是坚决禁止使用,何况MCU。<br />WINDOW3.1是最典型的嵌入式黑奔模范,巨大的嵌入式黑奔。<br />你掉进OS的水潭里了。<br /><br />俺再次强调,两者处理的策略不同,你不能用OS的话去解释嵌入式黑奔,反过来同样不能用嵌入式黑奔解释OS。至于表现在产品的系统上,和OS不OS没直接关系,只要你结构设计良好。

农民讲习所 发表于 2007-12-6 15:13

你也不会嵌入式黑奔,只会单线程设计MCU

根据:“我以前写过车载系统的代码,对于拨号那部分就采用了状态机,这样就免去了系统的很多等待时间,消除并解决了系统的处理盲点。”

dld2 发表于 2007-12-6 15:20

俺门那里的规矩是,禁止malloc

如果想动态申请释放,比如通讯协议栈的数据缓冲,自己管理先。

圆圈 发表于 2007-12-6 15:47

我说的没错的

你们说的嵌入式黑奔难道不就是单线程状态机+中断+基准ticks吗?&nbsp;&nbsp;同样的模式下应用深度的差别不会带来根本差异的!

dld2 发表于 2007-12-6 15:54

316

是多任务,不是单任务。俺不习惯说线程。<br />多任务+按需自主管理调度。

athlon64fx 发表于 2007-12-6 16:04

不排斥OS,也不是所有的情况下OS都比裸奔好..

如果裸奔是徒步,那么OS就好比驾车..而车也要分自行车,摩托车,汽车,火车等..<br />个人以为这个比喻比较恰当。

athlon64fx 发表于 2007-12-6 16:05

回错贴子了。。。

圆圈 发表于 2007-12-6 16:07

你说将部分任务处理防到中断内?

这个方法确实提高了实时性,但系统其他线程其他中断不是都被影响了吗?而且你这样的只能在简单点的系统上使用,复杂的,需处理大量数据或实时处理要求高且多的场合,你的系统复杂性就大大增加了~~&nbsp;&nbsp;&nbsp;当然你将部分任务处理放到中断里确实也是个办法,比如led点灯程序&nbsp;波形输出程序等都可以放入定时中断内处理~~&nbsp;&nbsp;但这种模式肯定有局限,毕竟中断处理一向不推荐占用太多时间。

农民讲习所 发表于 2007-12-6 16:13

你要分清楚,哪个任务是哪个实时处理层的

这点一定要,入门必考!

machunshui 发表于 2007-12-6 19:28

圆圈讲的有道理

圆圈讲的有道理

forthlab 发表于 2007-12-6 19:40

建议圆圈开个新贴,

这个帖子太长了,看起来不方便.<br />很想多了解MCU上的OS.
页: 6 7 8 9 10 11 12 13 14 15 [16] 17 18 19 20 21 22 23 24 25
查看完整版本: **lz说湖南人好斗,