农民讲习所
发表于 2007-12-1 23:31
俺是敲边鼓的,给大家凑凑热闹
hotpower
发表于 2007-12-2 00:12
实际上这种设计是有问题的~~~本来就该挨拍~~~
hotpower
发表于 2007-12-2 00:17
不能打断的时间总和必须小于节拍时间,字谜实际在函数的间
王紫豪
发表于 2007-12-2 06:12
凌晨起来,等楼主上结果!
hotpower
发表于 2007-12-2 08:55
==~~
pheavecn
发表于 2007-12-2 09:11
我智商低,等结果。
e21
发表于 2007-12-2 09:17
这题不会,等结果。
我没见过长时间不允许中断的软件设计。
农民讲习所
发表于 2007-12-2 09:30
谁说的这句话?
应该精华<br /><br />“天冷裸奔,那是身体好,天暖披棉裘,那是有钱!”
myfaith
发表于 2007-12-2 10:11
还没结果?
iC921
发表于 2007-12-2 10:21
一群高手,居然这么能耗
一点有用的东西都还没有。这么高的楼,居然是空楼~
wimhy
发表于 2007-12-2 10:26
这个楼比较低,大家来看看
提点意见哈. <br /> 相关链接:<a href='https://bbs.21ic.com/club/bbs/list.asp?boardid=11&page=1&t=2777306&tp=RTOS%u4E2D%u6570%u7801%u7BA1%u52A8%u6001%u626B%u63CF%u7A0B%u5E8F%u600E%u4E48%u5199'>https://bbs.21ic.com/club/bbs/list.asp?boardid=11&page=1&t=2777306&tp=RTOS%u4E2D%u6570%u7801%u7BA1%u52A8%u6001%u626B%u63CF%u7A0B%u5E8F%u600E%u4E48%u5199</a>
古道热肠
发表于 2007-12-2 10:37
楼主给贴答案吧, 辅上讲解不是更有说服力吗!
接触过ucOSII的实际嵌入式运用,有了操作系统在任务较多时,的确很容易分解和扩充。建议大家有空学学一种实时操作系统,即使产品中用不上,其中的很多概念也是可以引用的,会有种“原来MCU有个管家的会更能出效率的感觉”。
hotpower
发表于 2007-12-2 10:40
哈哈~~~好多事情不说比说出来好~~~
相信不???
hq_y
发表于 2007-12-2 10:40
前几天的那个os好还是不好的那个帖子里的,给所长找出来了
农民讲习所 发表于 2007-12-2 09:30 侃单片机 ←返回版面 <br /><br />88楼: 谁说的这句话? <br /><br />应该精华<br /><br />“天冷裸奔,那是身体好,天暖披棉裘,那是有钱!” <br /> <br /><br /><br /><br /><br />and 发表于 2007-11-20 01:13 侃单片机 ←返回版面 <br /><br />244楼: 苏武牧羊 伴我爬上244楼 <br /><br />分水岭是抢占点。<br /><br />总有那么些事情是更着急的,所以它们必须抢占那些不那么着急的事情,抢占--因为CPU有限,如果每个任务都拥有一个CPU,那么只要设计通讯通路就可以了,如果每个单位的CPU足够小,那就到了硬逻辑--FPGA,但大多数时候你只有一个CPU。<br /><br />中断--使用一个抢占点的系统,应该就算是裸奔吧。在中断代码中,可以用来完成很多任务,如果CPU支持更复杂的中断优先级算法,那就可以用来做更复杂的事情。但是,如果把太多的任务放到中断代码中,过于拥挤就会出现问题--本质上还是时间的矛盾。<br /><br />把矛盾向上推,构造另一条抢占线--任务,应该就是算是OS吧。在这个缓冲的空间中,为解决时间的矛盾提供了充裕得多的回旋余地,但系统复杂性也随之提高。OS还不只这些--CPU都瓜分了,顺便把系统资源也都瓜分了吧--这是一个任务的世界。<br /><br />裸奔的系统很真实,很纯粹,OS的系统很温暖,很缥缈。基于一个中断抢占点,徒手构造状态机和任务调度,和 把OS完全安家到一片全新的CPU,自己读着芯片手册写完BSP和驱动,哪一个更容易,哪一个更难?<br /><br />需求驱动,催生出体系的任务。把这些任务一字排开,有的是从管和门穿过你的系统,把它们分配给硬件,要求太高的逻辑,分配给数字电路,其它的交给软件。<br /><br />把剩下的任务再次排开,这里有三个筐,中断级,任务调度级,用户级,把剩下的任务用这三个筐盛住,就可以收钱走人了。先把任务全部倒到用户级,如果有的很着急,就把他挪到中断级,如果还有很急的,就继续挪。挪动一个任务,在用户级就要产生相应的调度来配合,因为这是一次割裂,而割裂是在一条直线(CPU)上进行,多个割裂相互交叠,必须用状态来区分和配合。<br /><br />如果装下了,收工。如果中断级用完了,而着急的还存在,而且还夹缠不清,那就把一些装到任务调度级,这也是一种割裂--三断的割裂--原来那么些苛刻的任务,为了抢夺CPU来兑现自身,不惜把自己一折而三,这样做可以把这些任务用三个篮子盛住,代价是你必须用配合的代码来弥补因折断而产生的割裂,以维系来自于需求的任务的完整性,搞来搞去,OS产生了。<br /><br />天暖就裸奔,天冷就加衣,没人会说什么。天冷裸奔,那是身体好,天暖披棉裘,那是有钱,也不应该说什么。<br /> <br /> <br />
wimhy
发表于 2007-12-2 10:43
发个水帖
93楼:<br /><br />我晕,啥事情?
forthlab
发表于 2007-12-2 11:59
我就来现丑了.
我就来现丑了.如果LZ有陷阱,大家帮忙把我拉出来.<br />一直想学习OS,所以对这个讨论很感兴趣.有错误,大家拍砖时手下留情.<br />这里用我常用的状态机来实现:<br /><br /><br />//================用c51的语法=============<br /><br />bit sec_flag = 0; //秒标志位<br />bit min_flag = 0; //分钟标志位<br /><br />//秒中断函数,<br />//中断时间到,sec_flag = 1;<br />//这里省略中断函数...................<br /><br /><br />void sec_proc( void ) //秒处理函数<br />{<br />if( sec_flag )<br /> {<br /> sec_flag = 0;<br /> F05( );<br /> }<br />}<br /><br /><br />void min_proc( void ) //分钟处理状态机<br />{<br />static unsigned char status;<br /><br />switch( status )<br /> {<br /> case _F071: if( min_flag )<br /> { min_flag = 0;<br /> F071( ); <br /> status = _F072;<br /> }<br /> break;<br /> case _F072: F072( ); status = _F073; break;<br /> case _F073: F073( ); status = _F074; break;<br /> case _F074: F074( ); status = _F071; break;<br /> default: status = _F071; break;<br /> }<br />}<br /><br /><br /><br />main()<br />{<br />while(1)<br /> {<br /> sec_proc( ); //秒处理函数<br /> min_proc( ); //分钟处理函数(状态机)<br /> }<br />}<br /> <br /><br />
forthlab
发表于 2007-12-2 12:03
我这个程序可能出现的误差:
由于程序不允许打断,所以在到60秒,分钟+1的时候,由于分钟处理有4个函数(F071..F074),所以会出现秒处理的"时刻"有误差,但误差不会超过1秒.等4个函数(F071..F074)处理结束后,秒处理就没有误差了.<br />LZ一直不说,各位在打口水仗,心里没有底啊!
dld2
发表于 2007-12-2 12:11
一直觉得贴代码是需要点勇气的。支持一下。
status = _F070;这个状态有些多余吧。直接用_F071也一样。
hq_y
发表于 2007-12-2 12:13
呼唤斑竹~~~~~~~~给and加裤
and 发表于 2007-11-20 01:13 侃单片机 ←返回版面 <br /><br />244楼: 苏武牧羊 伴我爬上244楼 <br /><br />分水岭是抢占点。<br /><br />总有那么些事情是更着急的,所以它们必须抢占那些不那么着急的事情,抢占--因为CPU有限,如果每个任务都拥有一个CPU,那么只要设计通讯通路就可以了,如果每个单位的CPU足够小,那就到了硬逻辑--FPGA,但大多数时候你只有一个CPU。<br /><br />中断--使用一个抢占点的系统,应该就算是裸奔吧。在中断代码中,可以用来完成很多任务,如果CPU支持更复杂的中断优先级算法,那就可以用来做更复杂的事情。但是,如果把太多的任务放到中断代码中,过于拥挤就会出现问题--本质上还是时间的矛盾。<br /><br />把矛盾向上推,构造另一条抢占线--任务,应该就是算是OS吧。在这个缓冲的空间中,为解决时间的矛盾提供了充裕得多的回旋余地,但系统复杂性也随之提高。OS还不只这些--CPU都瓜分了,顺便把系统资源也都瓜分了吧--这是一个任务的世界。<br /><br />裸奔的系统很真实,很纯粹,OS的系统很温暖,很缥缈。基于一个中断抢占点,徒手构造状态机和任务调度,和 把OS完全安家到一片全新的CPU,自己读着芯片手册写完BSP和驱动,哪一个更容易,哪一个更难?<br /><br />需求驱动,催生出体系的任务。把这些任务一字排开,有的是从管和门穿过你的系统,把它们分配给硬件,要求太高的逻辑,分配给数字电路,其它的交给软件。<br /><br />把剩下的任务再次排开,这里有三个筐,中断级,任务调度级,用户级,把剩下的任务用这三个筐盛住,就可以收钱走人了。先把任务全部倒到用户级,如果有的很着急,就把他挪到中断级,如果还有很急的,就继续挪。挪动一个任务,在用户级就要产生相应的调度来配合,因为这是一次割裂,而割裂是在一条直线(CPU)上进行,多个割裂相互交叠,必须用状态来区分和配合。<br /><br />如果装下了,收工。如果中断级用完了,而着急的还存在,而且还夹缠不清,那就把一些装到任务调度级,这也是一种割裂--三断的割裂--原来那么些苛刻的任务,为了抢夺CPU来兑现自身,不惜把自己一折而三,这样做可以把这些任务用三个篮子盛住,代价是你必须用配合的代码来弥补因折断而产生的割裂,以维系来自于需求的任务的完整性,搞来搞去,OS产生了。<br /><br />天暖就裸奔,天冷就加衣,没人会说什么。<b><font color=#FF0000>天冷裸奔,那是身体好,天暖披棉裘,那是有钱,也不应该说什么。</font><br /></b>
hotpower
发表于 2007-12-2 12:17
支持发放红色的三角裤头!!!只要没误差积累即可认为成功~~~
页:
1
2
3
4
[5]
6
7
8
9
10
11
12
13
14