查看: 5837|回复: 7

[其他] 关于用XGATE协处理器来实现ucos时钟节拍

[复制链接]

该用户从未签到

1

主题

6

帖子

0

新手上路

Rank: 1

积分
23
最后登录
1970-1-1
发表于 2009-8-11 08:06:10 | 显示全部楼层 |阅读模式
最近在学习ucos,并在mc9s12xdg128上移植跑了几个任务。看了《用XGATE协处理器提高μC/OS-II的实时性》文章,也想用XGATE协处理器来实现ucos时钟节拍,由于文章说得不太清楚,所以自己摸索着做,但调试时出现了点运行,程序就跑飞的现象。哪位大侠知道原因,望指教,谢谢!在xgate.cxgate文件中的RTI中断程序如下:
interrupt void RTI_Handler(int data)
{
  CRGFLG |= 0x80;
  asm
  {
    LOOP1: SSEM #2
    BCC  LOOP1
  }
  tcb_x = (volatile OS_TCB *)((int)OSTCBList+0xC000);   //任务C
  if (tcb_x->OSTCBDly != 0)
    {
      if (--(tcb_x->OSTCBDly) == 0)
      {             
        if ((tcb_x->OSTCBStat & OS_STAT_SUSPEND) == OS_STAT_RDY)
        {
          OSRdyGrp               |= tcb_x->OSTCBBitY;
          OSRdyTbl[tcb_x->OSTCBY] |= tcb_x->OSTCBBitX;
          count++;
        }
        else
        {                       
          tcb_x->OSTCBDly = 1;               
        }                                 
      }
    }                                                   //任务B
  tcb_x = (volatile OS_TCB *)((int)tcb_x-0x0023);//(volatile OS_TCB *)((int)(tcb_x->OSTCBNext)+0xc000);
  //屏蔽下面这段,程序可以切换任务C和A,
  //只要加上下面这段,点运行程序就飞了,不知什么原因,
  /* if (tcb_x->OSTCBDly != 0)
    {
      if (--(tcb_x->OSTCBDly) == 0)
      {             
        if ((tcb_x->OSTCBStat & OS_STAT_SUSPEND) == OS_STAT_RDY)
        {
          OSRdyGrp               |= tcb_x->OSTCBBitY;
          OSRdyTbl[tcb_x->OSTCBY] |= tcb_x->OSTCBBitX;
          count++;
        }
        else
        {                       
          tcb_x->OSTCBDly = 1;               
        }                                 
      }
    }  */                                                //任务A
  tcb_x = (volatile OS_TCB *)((int)tcb_x-0x0023);//(volatile OS_TCB *)((int)(tcb_y->OSTCBNext)+0xc000);
  //本来是在这里用while语句遍历链表的,但不行,点运行程序就飞了。
  //所以我试着拆开,看问题出在哪,见上面文字 ,还有在这里观测到的当前任务OSTCBCur老是空闲任务,不解,,,
 // while (tcb_x->OSTCBPrio != OS_IDLE_PRIO)
 // {  
    if (tcb_x->OSTCBDly != 0)
    {
      if (--(tcb_x->OSTCBDly) == 0)
      {             
        if ((tcb_x->OSTCBStat & OS_STAT_SUSPEND) == OS_STAT_RDY)
        {
          OSRdyGrp               |= tcb_x->OSTCBBitY;
          OSRdyTbl[tcb_x->OSTCBY] |= tcb_x->OSTCBBitX;
          count++;
        }
        else
        {                       
          tcb_x->OSTCBDly = 1;               
        }                                 
      }
    }
   // dly = *(INT16U *)((int)tcb_x + 0x001A);
   // prio=*(INT8U *)((int)tcb_x + 0x001D);
  //}
  asm CSEM #2;
  
  asm SIF;
}
 
 
已解决!
我知道答案 目前已有6人回答
回复

使用道具 举报

该用户从未签到

0

主题

8

帖子

0

新手上路

Rank: 1

积分
16
最后登录
1970-1-1
发表于 2009-8-12 12:43:16 | 显示全部楼层

回复:关于用XGATE协处理器来实现ucos时钟节拍

我最近也想学习ucos,但是移植到dp256上一直没成功。想请教一下,我的QQ 148252049,邮箱ray198692@126.com  麻烦您了!

该用户从未签到

1

主题

6

帖子

0

新手上路

Rank: 1

积分
23
最后登录
1970-1-1
 楼主| 发表于 2009-8-12 15:40:21 | 显示全部楼层

回复:关于用XGATE协处理器来实现ucos时钟节拍

我是下载康桥人的那个版本改的,只要改几个地方就可以了。我只在dg128 和 xdg128上试过,dp256没试过,不过应该差不多;
到是我上述问题难解决,望高手或有此经验的人来搞定了。
有人看过邵贝贝的《嵌入式系统中的双核技术》这本书吗,里面是否有具体的方法?????

该用户从未签到

0

主题

8

帖子

0

新手上路

Rank: 1

积分
16
最后登录
1970-1-1
发表于 2009-8-13 17:17:29 | 显示全部楼层

回复:关于用XGATE协处理器来实现ucos时钟节拍

我也是下载了 康桥人的版本,但是编译时出现了以下错误。报错:L1004:segment start address expected
我用的是codewarrior4.7的版本。目前还不知道怎么解决这个问题。

该用户从未签到

18

主题

72

帖子

0

中级会员

Rank: 3Rank: 3

积分
239
最后登录
1970-1-1
发表于 2010-11-17 17:04:50 | 显示全部楼层

回复:关于用XGATE协处理器来实现ucos时钟节拍

楼主这个问题是怎么解决的呀?
赐教一下!

该用户从未签到

18

主题

72

帖子

0

中级会员

Rank: 3Rank: 3

积分
239
最后登录
1970-1-1
发表于 2010-11-19 13:43:08 | 显示全部楼层

回复:关于用XGATE协处理器来实现ucos时钟节拍

这里有没有版主呀?怎么没人答话呀?这个问题知道怎么解决的不?

该用户从未签到

3

主题

23

帖子

0

新手上路

Rank: 1

积分
68
最后登录
1970-1-1
发表于 2010-11-26 15:26:00 | 显示全部楼层

回复:关于用XGATE协处理器来实现ucos时钟节拍

我最近在xet256上调试这个功能,程序老是跑飞,还没实现。邵贝贝的《嵌入式中的双核技术》中有相关内容,但代码不能用。

该用户从未签到

18

主题

72

帖子

0

中级会员

Rank: 3Rank: 3

积分
239
最后登录
1970-1-1
发表于 2010-11-30 22:18:39 | 显示全部楼层

RE:关于用XGATE协处理器来实现ucos时钟节拍

是啊,我也有这本书,基本没什么用,这块我搞了快两个星期了,老是跑飞了,7楼如果有什么心得一定要来分享一下呀!!
您需要登录后才可以回帖 注册/登录

本版积分规则

关闭

站长推荐上一条 /3 下一条

Archiver|手机版|小黑屋|恩智浦技术社区

GMT+8, 2025-7-21 03:29 , Processed in 0.102152 second(s), 28 queries , MemCache On.

Powered by Discuz! X3.4

Copyright © 2001-2024, Tencent Cloud.

快速回复 返回顶部 返回列表