打印

**lz说湖南人好斗,

[复制链接]
楼主: wxj1952
手机看帖
扫描二维码
随时随地手机跟帖
81

俺是敲边鼓的,给大家凑凑热闹

使用特权

评论回复
82
hotpower| | 2007-12-2 00:12 | 只看该作者

实际上这种设计是有问题的~~~本来就该挨拍~~~

使用特权

评论回复
83
hotpower| | 2007-12-2 00:17 | 只看该作者

不能打断的时间总和必须小于节拍时间,字谜实际在函数的间

使用特权

评论回复
84
王紫豪| | 2007-12-2 06:12 | 只看该作者

凌晨起来,等楼主上结果!

使用特权

评论回复
85
hotpower| | 2007-12-2 08:55 | 只看该作者

==~~

使用特权

评论回复
86
pheavecn| | 2007-12-2 09:11 | 只看该作者

我智商低,等结果。

使用特权

评论回复
87
e21| | 2007-12-2 09:17 | 只看该作者

这题不会,等结果。

我没见过长时间不允许中断的软件设计。

使用特权

评论回复
88
农民讲习所| | 2007-12-2 09:30 | 只看该作者

谁说的这句话?

应该精华

“天冷裸奔,那是身体好,天暖披棉裘,那是有钱!”

使用特权

评论回复
89
myfaith| | 2007-12-2 10:11 | 只看该作者

还没结果?

使用特权

评论回复
90
iC921| | 2007-12-2 10:21 | 只看该作者

一群高手,居然这么能耗

一点有用的东西都还没有。这么高的楼,居然是空楼~

使用特权

评论回复
91
wimhy| | 2007-12-2 10:26 | 只看该作者
92
古道热肠| | 2007-12-2 10:37 | 只看该作者

楼主给贴答案吧, 辅上讲解不是更有说服力吗!

   接触过ucOSII的实际嵌入式运用,有了操作系统在任务较多时,的确很容易分解和扩充。建议大家有空学学一种实时操作系统,即使产品中用不上,其中的很多概念也是可以引用的,会有种“原来MCU有个管家的会更能出效率的感觉”。

使用特权

评论回复
93
hotpower| | 2007-12-2 10:40 | 只看该作者

哈哈~~~好多事情不说比说出来好~~~

相信不???

使用特权

评论回复
94
hq_y| | 2007-12-2 10:40 | 只看该作者

前几天的那个os好还是不好的那个帖子里的,给所长找出来了

农民讲习所 发表于 2007-12-2 09:30 侃单片机 ←返回版面    

88楼: 谁说的这句话? 

应该精华

“天冷裸奔,那是身体好,天暖披棉裘,那是有钱!” 
 




and 发表于 2007-11-20 01:13 侃单片机 ←返回版面    

244楼: 苏武牧羊 伴我爬上244楼 

分水岭是抢占点。

总有那么些事情是更着急的,所以它们必须抢占那些不那么着急的事情,抢占--因为CPU有限,如果每个任务都拥有一个CPU,那么只要设计通讯通路就可以了,如果每个单位的CPU足够小,那就到了硬逻辑--FPGA,但大多数时候你只有一个CPU。

中断--使用一个抢占点的系统,应该就算是裸奔吧。在中断代码中,可以用来完成很多任务,如果CPU支持更复杂的中断优先级算法,那就可以用来做更复杂的事情。但是,如果把太多的任务放到中断代码中,过于拥挤就会出现问题--本质上还是时间的矛盾。

把矛盾向上推,构造另一条抢占线--任务,应该就是算是OS吧。在这个缓冲的空间中,为解决时间的矛盾提供了充裕得多的回旋余地,但系统复杂性也随之提高。OS还不只这些--CPU都瓜分了,顺便把系统资源也都瓜分了吧--这是一个任务的世界。

裸奔的系统很真实,很纯粹,OS的系统很温暖,很缥缈。基于一个中断抢占点,徒手构造状态机和任务调度,和 把OS完全安家到一片全新的CPU,自己读着芯片手册写完BSP和驱动,哪一个更容易,哪一个更难?

需求驱动,催生出体系的任务。把这些任务一字排开,有的是从管和门穿过你的系统,把它们分配给硬件,要求太高的逻辑,分配给数字电路,其它的交给软件。

把剩下的任务再次排开,这里有三个筐,中断级,任务调度级,用户级,把剩下的任务用这三个筐盛住,就可以收钱走人了。先把任务全部倒到用户级,如果有的很着急,就把他挪到中断级,如果还有很急的,就继续挪。挪动一个任务,在用户级就要产生相应的调度来配合,因为这是一次割裂,而割裂是在一条直线(CPU)上进行,多个割裂相互交叠,必须用状态来区分和配合。

如果装下了,收工。如果中断级用完了,而着急的还存在,而且还夹缠不清,那就把一些装到任务调度级,这也是一种割裂--三断的割裂--原来那么些苛刻的任务,为了抢夺CPU来兑现自身,不惜把自己一折而三,这样做可以把这些任务用三个篮子盛住,代价是你必须用配合的代码来弥补因折断而产生的割裂,以维系来自于需求的任务的完整性,搞来搞去,OS产生了。

天暖就裸奔,天冷就加衣,没人会说什么。天冷裸奔,那是身体好,天暖披棉裘,那是有钱,也不应该说什么。
 
 

使用特权

评论回复
95
wimhy| | 2007-12-2 10:43 | 只看该作者

发个水帖

93楼:

我晕,啥事情?

使用特权

评论回复
96
forthlab| | 2007-12-2 11:59 | 只看该作者

我就来现丑了.

我就来现丑了.如果LZ有陷阱,大家帮忙把我拉出来.
一直想学习OS,所以对这个讨论很感兴趣.有错误,大家拍砖时手下留情.
这里用我常用的状态机来实现:


//================用c51的语法=============

bit sec_flag = 0;    //秒标志位
bit min_flag = 0;    //分钟标志位

//秒中断函数,
//中断时间到,sec_flag = 1;
//这里省略中断函数...................


void sec_proc( void )      //秒处理函数
{
if( sec_flag )
    {
    sec_flag = 0;
    F05( );
    }
}


void min_proc( void )      //分钟处理状态机
{
static unsigned char status;

switch( status )
    {
    case _F071:  if( min_flag )
                   { min_flag = 0;
                     F071( ); 
                     status = _F072;
                   }
                   break;
    case _F072:  F072( ); status = _F073; break;
    case _F073:  F073( ); status = _F074; break;
    case _F074:  F074( ); status = _F071; break;
    default: status = _F071; break;
    }
}



main()
{
while(1)
    {
    sec_proc( );    //秒处理函数
    min_proc( );    //分钟处理函数(状态机)
    }
}
    

使用特权

评论回复
97
forthlab| | 2007-12-2 12:03 | 只看该作者

我这个程序可能出现的误差:

由于程序不允许打断,所以在到60秒,分钟+1的时候,由于分钟处理有4个函数(F071..F074),所以会出现秒处理的"时刻"有误差,但误差不会超过1秒.等4个函数(F071..F074)处理结束后,秒处理就没有误差了.
LZ一直不说,各位在打口水仗,心里没有底啊!

使用特权

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

一直觉得贴代码是需要点勇气的。支持一下。

status = _F070;这个状态有些多余吧。直接用_F071也一样。

使用特权

评论回复
99
hq_y| | 2007-12-2 12:13 | 只看该作者

呼唤斑竹~~~~~~~~给and加裤

and 发表于 2007-11-20 01:13 侃单片机 ←返回版面    

244楼: 苏武牧羊 伴我爬上244楼 

分水岭是抢占点。

总有那么些事情是更着急的,所以它们必须抢占那些不那么着急的事情,抢占--因为CPU有限,如果每个任务都拥有一个CPU,那么只要设计通讯通路就可以了,如果每个单位的CPU足够小,那就到了硬逻辑--FPGA,但大多数时候你只有一个CPU。

中断--使用一个抢占点的系统,应该就算是裸奔吧。在中断代码中,可以用来完成很多任务,如果CPU支持更复杂的中断优先级算法,那就可以用来做更复杂的事情。但是,如果把太多的任务放到中断代码中,过于拥挤就会出现问题--本质上还是时间的矛盾。

把矛盾向上推,构造另一条抢占线--任务,应该就是算是OS吧。在这个缓冲的空间中,为解决时间的矛盾提供了充裕得多的回旋余地,但系统复杂性也随之提高。OS还不只这些--CPU都瓜分了,顺便把系统资源也都瓜分了吧--这是一个任务的世界。

裸奔的系统很真实,很纯粹,OS的系统很温暖,很缥缈。基于一个中断抢占点,徒手构造状态机和任务调度,和 把OS完全安家到一片全新的CPU,自己读着芯片手册写完BSP和驱动,哪一个更容易,哪一个更难?

需求驱动,催生出体系的任务。把这些任务一字排开,有的是从管和门穿过你的系统,把它们分配给硬件,要求太高的逻辑,分配给数字电路,其它的交给软件。

把剩下的任务再次排开,这里有三个筐,中断级,任务调度级,用户级,把剩下的任务用这三个筐盛住,就可以收钱走人了。先把任务全部倒到用户级,如果有的很着急,就把他挪到中断级,如果还有很急的,就继续挪。挪动一个任务,在用户级就要产生相应的调度来配合,因为这是一次割裂,而割裂是在一条直线(CPU)上进行,多个割裂相互交叠,必须用状态来区分和配合。

如果装下了,收工。如果中断级用完了,而着急的还存在,而且还夹缠不清,那就把一些装到任务调度级,这也是一种割裂--三断的割裂--原来那么些苛刻的任务,为了抢夺CPU来兑现自身,不惜把自己一折而三,这样做可以把这些任务用三个篮子盛住,代价是你必须用配合的代码来弥补因折断而产生的割裂,以维系来自于需求的任务的完整性,搞来搞去,OS产生了。

天暖就裸奔,天冷就加衣,没人会说什么。天冷裸奔,那是身体好,天暖披棉裘,那是有钱,也不应该说什么。

使用特权

评论回复
100
hotpower| | 2007-12-2 12:17 | 只看该作者

支持发放红色的三角裤头!!!只要没误差积累即可认为成功~~~

使用特权

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

本版积分规则