打印

感谢众网友关注,下午公开答案

[复制链接]
楼主: wxj1952
手机看帖
扫描二维码
随时随地手机跟帖
41
程序匠人| | 2007-12-5 21:24 | 只看该作者 回帖奖励 |倒序浏览

忽悠,尽情忽悠

使用特权

评论回复
42
koon| | 2007-12-5 21:27 | 只看该作者

要真正的并行处理只有多核

使用特权

评论回复
43
程序匠人| | 2007-12-5 21:32 | 只看该作者

裸奔也可以并行化处理

OS也好,并行处理也好,还有什么状态机……这些编程思想,还不都是人想出来的。机器可以做到的事,人也可以做到。




农民讲习所 发表于 2007-12-5 21:23 侃单片机 ←返回版面    

41楼: 俺说的是“裸奔是串行化处理,OS是并行化处理” 

不是简单的串行和并行概念

 
 

使用特权

评论回复
44
IceAge| | 2007-12-5 22:42 | 只看该作者

wxj1952 输定了

os 的技术核心在于时间片和调度,这两者 裸奔 也能做到,毕竟 裸奔 的场合大多不是复杂的应用。os 的灵活性和通用性可以做到动态调度,裸奔要做到这点,就有衣服,不在是裸奔了。

wxj1952 你拿固定任务去挑战 裸奔,你的衣服会被终结 --- 裸奔了。

使用特权

评论回复
45
zusen| | 2007-12-5 23:05 | 只看该作者

其实我想问问

60秒后 F05() 和 F071() 的竞争问题~~~~~

使用特权

评论回复
46
hotpower| | 2007-12-5 23:23 | 只看该作者

俺不参与政治斗殴~~~俺还是喜欢做俺的3小时PIC24FJ速成菜鸟~~~

使用特权

评论回复
47
ocon| | 2007-12-5 23:47 | 只看该作者

搞技术来不得半点忽悠,楼主是块做营销的料。

使用特权

评论回复
48
ocon| | 2007-12-6 00:07 | 只看该作者

楼主的下场:

使用特权

评论回复
49
computer00| | 2007-12-6 00:20 | 只看该作者

哈哈~~~~49楼这个图真是爽呀~~~太夸张了吧,那人真惨...

使用特权

评论回复
50
洪七公| | 2007-12-6 00:41 | 只看该作者

晕~~~现在才知道被人拍的滋味有多么好受了~~~

使用特权

评论回复
51
hq_y| | 2007-12-6 06:33 | 只看该作者

呵呵~~~~~~~~~~

使用特权

评论回复
52
幸福DE饭团| | 2007-12-6 08:54 | 只看该作者

天使?

鸟人?

使用特权

评论回复
53
wxj1952|  楼主 | 2007-12-6 08:59 | 只看该作者

看高手内讧挺好玩的,明天再来玩了

哇!睡了一觉,没想到“窝里斗”这么快就开演啦!

12月5号 以前挺安静的,高手好像都躲在阴处没时间,怎么现在突然一下冒出这么多高手,各个都那么兴奋,像打了**血似地,都有时间了。

使用特权

评论回复
54
hbicecream| | 2007-12-6 09:02 | 只看该作者

46楼

不错,就是两种任务的时间竞争,如果楼主这样写程序

void TASK0(void *pdata)
{
    pdata = pdata;

    while (1)
    {
        F05();
        OSTimeDly(OS_TICKS_PER_SEC/2);
    }
}

void TASK1(void *pdata)
{
    pdata = pdata;

    while (1)
    {
        if (分钟到)
        {
            F071();
            OSTimeDly(OS_TICKS_PER_SEC/10);
            F072();
            OSTimeDly(OS_TICKS_PER_SEC/10);
            F073();
            OSTimeDly(OS_TICKS_PER_SEC/10);
            F074();
            OSTimeDly(OS_TICKS_PER_SEC/10);
        }
    }
}
那就乖乖等着挨砖头吧!!哈哈!!

使用特权

评论回复
55
forest_j| | 2007-12-6 09:26 | 只看该作者

大跌眼镜

使用特权

评论回复
56
senda_3526| | 2007-12-6 09:49 | 只看该作者

楼主可能这样不行吧

LZ的这点水平不行吧
首先是保证每秒的一次500ms的任务运行,可是现在你的软件不能保证呀
另个关联紧密的4个任务是不是不再紧密了呀
LZ先说明你如何保证的每S的一次500ms
 "这是一个实际应用的例子。实现目标:

1、用单CPU做一个精确的时钟。
2、以此时钟为基准,每秒钟运行一次一个500ms开销的任务,设其为F05()。
3,每分钟到达时,运行一次4个紧密关联的函数,每个运行开销700ms, 设其为F071(),F072(),F073(),F074();要求4个函数必须顺序运行。
4、为简化题目,只做秒、分2位。

要求:各函数时间开销严格,运行期间不允许打断(即不允许被中断或抢占)。

叙述一下这个题目的意思,当每分钟到达时,程序运行F071~F074,这段时间软件耗费至少700msX4=2.8秒,这样时钟的秒位肯定要丢数(因为“要求”说了,F071~F074运行必须顺序,不允许抢占。可以被调度)。怎么解决?"
这是你的原文

使用特权

评论回复
57
senda_3526| | 2007-12-6 10:19 | 只看该作者

呵呵,不知是谁打自已的耳光

"/******************************************************************************/
/*                                                                            */
/*                     wxj1952.C:  A RTX-51 Application                       */
/*                                                                            */
/******************************************************************************/

#include <rtx51tny.h>                 

/******************************************************************************/
/*       Task 0 'job0':                                */
/******************************************************************************/
job0 () _task_ 0  {    
              
  os_create_task (1);                 
  os_create_task (2);                 
  os_create_task (3);                
  os_create_task (4);                
  //os_create_task (5);                 
  //os_create_task (6);                 


  while (1)  {                        
   
    os_wait (K_IVL, 1, 0);  
    .
    .
    .
     DX_1;
    F05();
     EX_1;    

   os_switch_tast();                        
  }
}

/******************************************************************************/
/*   Task 1 'job1':                                    */
/******************************************************************************/
job1 () _task_ 1  {
  while (1)  {              
   
    os_wait (K_IVL, 60, 0);  
    .
    .
    .
     DX_1;
    F071();
     EX_1;    
   // os_send_signal (2);  

os_switch_tast();                
  }
}

/******************************************************************************/
/*    Task 2 'job2':                                    */
/******************************************************************************/
job2 () _task_ 2  {
  while (1)  {   
  //os_wait1 (K_SIG, 1);     
    . 
    .
    .         
      DX_1;
    F072();
       EX_1;        
// os_send_signal (3);  

   os_switch_tast();      
   
  }
}


/******************************************************************************/
/*    Task 3 'job3':                                                      */
/******************************************************************************/
job3 () _task_ 3  {
  while (1)  {  
//os_wait1 (K_SIG, 2);      
    .
    .
    .
       DX_1;
    F073();
       EX_1;        
// os_send_signal (4);  

   os_switch_tast();                   
    
  }
}

/******************************************************************************/
/*    Task 3 'job4':                                                      */
/******************************************************************************/
job3 () _task_ 4  {
  while (1)  {  
//os_wait1 (K_SIG, 3);  
        .
        .
        .
       DX_1;
    F074();
       EX_1;        

   os_switch_tast();                   
    
  }
}

DX_1/EX_1 语句高手一看就知道是什么,这是陈明计书上提供的语句.
"
LZ认为你的这个满足了要求了吗?
如果满足了要求的话,猪都会上树

使用特权

评论回复
58
senda_3526| | 2007-12-6 10:21 | 只看该作者

这是俺在你原来贴上裸奔的

292楼: 看看俺裸奔一下 

main()
{
  while(1)
   { 
    if(time到)
    {
     time到=0;
      if(time>=66)
       {
           f04();
           //f05();
         time-=6;
       }
      else if(time==64)
      {
          f03();
          //f05();
      }
     else if(time==62)
      {f02();//f05();
      }
      else if(time==60)
      {f01();//f05();
      }
      else if(time>60)
      {
       f05();
      }
      else
     {     delay300ms;f05();}
    }
  }
}

interrupt time1s
{
time到=1;
time++;
}


* - 本贴最后修改时间:2007-12-6 9:23:32 修改者:senda_3526
 
 

使用特权

评论回复
59
machunshui| | 2007-12-6 12:27 | 只看该作者

实在无聊

实在无聊.
有什么意思?

使用特权

评论回复
60
heyan| | 2007-12-6 12:44 | 只看该作者

唉!

不知道该说什么好了。

介绍下我的态度:
我不反对用OS,但资源少的MCU、任务明显的东东,尽量不要用OS。我现在的项目51的,程序量十几万行,几百K字节,不也就是状态机搞定?不过OS的一些东西还是可以学习的,什么消息呀、信号呀、状态机呀什么的。

但是32BIT的东东,还是用OS方便。我上个项目就是有TCP/IP、MPEG、GUI等等,不用OS,天,不写死?

总之要看项目、看MCU说话。期待拍砖!

使用特权

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

本版积分规则