保存桌面快捷方式 - - 设为首页 - 手机版
凹丫丫旗下网站:四字成语大全 - 故事大全 - 范文大全
您现在的位置: 范文大全 >> 理工论文 >> 电子通信论文 >> 正文

KEIL RTX51 TINY内核的分析与应用


IGNAL置位,才返回到READY状态,并可被再次执行。
  
  ②TIMEOUT:由os_wait函数开始的时间延时,其持续时间可由定时节拍数确定。带有TIMEOUT值调用os_wait函数的任务将被挂起,直到延时结束,才返回到READY状态,并可被再次执行。
  
  ③INTERVAL:由os_wait函数开始的时间间隔,其间隔时间可由定时节拍数
  
  
  
  确定。带有INTERVAL值调用os_wait函数的任务将被挂起,直到间隔时间结束,然后返回到READY状态,并可被再次执行。与TIMEOUT不同的是,任务的节拍计数器不复位。
  
  2.3调度规则
  
  RTX51TINY使用8051内部定时器T0来产生定时节拍,各任务只在各自分配的定时节拍数(时间片)内执行。当时间片用完后,切换至下一任务运行,因此,各任务是并发执行的。
  
  调度规则如下:如果
  
  ,且特定事件还没有发生,②任务执行比循环切换所规定的时间长,则运行任务被中断;如果①没有其它任务正在运行,②任务处于“READY”或“TIMEOUT”状态下等待运行,则另一个任务开始。
  
  2.4任务控制块
  
  为了能描述和控制任务的运行,内核为每个任务定义了称作任务控制块的数据结构,主要包括三项内容:
  
  ①ENTRY[task_id]:task_id任务的代码入口地址,位于CODE空间,2字节为一个单位。
  
  ②STKP[taskid]:taskid任务所使用堆栈栈底位置,位于IDATA空间,1字节为一个单位。
  
  ③STATE[taskid].time和STATE[tasked].state:前者表示任务的定时节折计数器,在每一次定时节拍中断后都自减一次;后者表示任务状态寄存器,用其各个位来表示任务所处的状态。位于IDATA空间,以2字节为一单位。
  
  2.5存储器管理
  
  内核使用了KEILC51编译器的对全局变量和局部变量采取静态分配存储空间的策略,因此存储器管理简化为堆栈管理。内核为每个任务都保留一个单独的堆栈区,全部堆栈管理都在IDATA空间进行。为了给当前正在运行的任务分配尽可能大的栈区,所以各个任务所用的堆栈位置是动态的,并用STKP[taskid]来记录各任务所用的堆栈位置是动态的,并用STKP[taskid]来记录和任务堆栈栈底位置。当堆栈自由空间小于FREESTACK(默认为20)个字节时,就会调用宏STACK_ERROR,进行堆栈出错处理。
  
  在以下情况会进行堆栈管理:
  
  *任务切换,将全部自由堆栈空间分配正在运行的任务;
  
  *任务创建,将自由堆栈空间的2个字节,分配给新创新的任务task_id,并将ENTRY[task_id],放入其堆栈;
  
  *任务删除,回收被删除的任务task_id的堆栈空间,并转换为自由堆栈空间。
  
  堆栈管理如图2所示。
  
  3代码分析
  
  内核代码用汇编语言写成,可读性差,但代码效率较高,主要由两个源程序文件conf_tny.a51和rtxtny.a51组成。前者是一个配置文件,用来定义系统运行所需要的全局变量和堆栈出错的宏STACK_ERROR,这些全

《KEIL RTX51 TINY内核的分析与应用(第2页)》
本文链接地址:http://www.oyaya.net/fanwen/view/175822.html

★温馨提示:你可以返回到 电子通信论文 也可以利用本站页顶的站内搜索功能查找你想要的文章。