打印

RTX51 TINY 任务优先级方法

[复制链接]
3243|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
shj106|  楼主 | 2012-2-22 13:16 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
在用 RTX51 TINY 做一个数据采集系统,用下面方法给TINY 增加了任务优先级,目前系统运行稳定,希望和大家一起讨论。



;------------------------------------------------
;                 任务切换
os_switch_task:
IF (CODE_BANKING <> 0)
  PUSH ?B_CURRENTBANK
ENDIF
os_switch_task1:
;      next = current;
IF (TIMESHARING <> 0)
  SETB ?RTX_TS_DELAY  ; Delay Task Switching
ENDIF
  MOV A,?RTX_CURRENTTASK
  MOV R7,A
;      while (1)  {
  RL A
  ADD A,#?RTX?TASKSTATE?S+1
  MOV R0,A
      
      ;-----------------------
      MOV   R7,#?RTX_MAXTASKN   ;增加1、每次切换任务时存入最大任务号   
      ;-----------------------
     
?C0001:
;        if (++next == MAXTASKN+1)  next = 0;
  INC     R7
  INC R0
  INC R0
IF (CPU_IDLE_CODE)
  MOV A,R7
  CJNE A,?RTX_CURRENTTASK,NoIDLE
  JBC ?RTX_ISR_SIG,NoIDLE
  CPU_IDLE          ; CPU sleep
NoIDLE:
ENDIF
  CJNE  R7,#?RTX_MAXTASKN+1,?C0003_b  ;将?C0003跳转地址改一下
  MOV R7,#0
  MOV R0,#?RTX?TASKSTATE?S+1
      ;-----------------------
?C0003_b:                                               ;增加2、是当前任务不检查就绪标记
      MOV  A,R7   
      CJNE A,?RTX_CURRENTTASK,?C0003
      SJMP ?C0001
      ;-----------------------
?C0003:
;        if (STATE[next].st & K_READY)  break;
  MOV     A,@R0
  JNB     ACC.B_READY,?C0001
;      }

---------

相关帖子

沙发
shj106|  楼主 | 2012-2-22 14:37 | 只看该作者
增加1部分代码,是利用下面这段代码每次检查到是最大任务号时,从任务0开始查询任务就绪标记,这样任务号小的任务的一旦就绪就可马上切换运行了,相应任务号越小任务优先级越高。
    CJNE  R7,#?RTX_MAXTASKN+1,?C0003_b  ;将?C0003跳转地址改一下
  MOV R7,#0
   MOV R0,#?RTX?TASKSTATE?S+1

   增加2部分代码,是防止使用 os_switch_task()函数切换当前任务时,每次循环检查任务就绪标记时,重复运行当前任务,以保证任务切换成功。
  为防止当前任务切换时,别的任务都没就绪而死循环在当前任务切换函数里,需开一个最低优先级的空闲任务运行,以保证系统正常运行

使用特权

评论回复
板凳
ningling_21| | 2012-2-22 16:08 | 只看该作者
LZ很强的说...

有时RTX51-TINY在切换函数中一直出不去是什么原因?

使用特权

评论回复
地板
ayb_ice| | 2012-2-22 16:18 | 只看该作者
3# ningling_21
那是因为就绪任务(所有任务没有一个就绪)

使用特权

评论回复
5
wangc111| | 2012-2-22 16:53 | 只看该作者
很强悍呀

使用特权

评论回复
6
zf_015820| | 2012-11-16 16:09 | 只看该作者
高手呀,SHJ106有没有在线呀?希望能指点下:我们这些人,谢谢

使用特权

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

本版积分规则

0

主题

23

帖子

1

粉丝