首 页文档资料下载资料维修视频包年699元
请登录  |  免费注册
当前位置:精通维修下载 > 文档资料 > 家电技术 > 维修教程知识 > 单片机栏
介绍一种实时操作系统DSP/BIOS
来源:本站整理  作者:佚名  2009-04-09 15:35:28




3  STS
  对一个软件进行分析优化时,通常会用到profile的功能。但是在实时运行的DSP的环境中使用profile等效于加入了多个程序断点。  由于现在的DSP通常具有很深的流水线结构来保证DSP的高运算能力,如德州仪器的C6000系列的流水线长度为12级,程序断点需要排空所有已经进入流水线的指令。这样也就破坏了真正的运行环境。同时profile还必须调用输出模块向主机传递时间信息。因此在profile的情况下真正的实时运行环境是没有办法得到保护的。DSP/BIOS针对这种情况引入了一个统计模块STS。STS对象只有4个数据Previous、Count、Total和Max。调用的方法(API)也只有4个,即STS_add()、  STS_set()、  STS_delta()和STS_reset()。这些API对数据的操作功能如表1所示。

如果要对某一段程序进行分析时,只需在其前后调用STS_set和STS_delta就可以了。如例2使用STS测试程序段执行周期如下:
  /*  Header  files  needed  for  DSP  BIOS  */
  #include  <sts.h>
  #include  <clk.h>

  /*  functions  */
  void  func_load();

  /*  Objects  created  by  the  Configuration  Tool  */
  extern  STS_Obj  stsLoad;

  /*
  *  ========  main  ========
  */
  void  main()
  {

  /*  fall  into  DSP/BIOS  idle  loop  */
   return;
  }

  void  func_load()
  {
  STS_set(&stsPrintf、  CLK_gethtime());

  /*  测试程序段    */
  ...
  STS_delta(&stsPrintf、  CLK_gethtime());
  }
  func_load()为一个中断服务程序(ISR)。在C6211,150MHz的情况下,仅插入33个周期,约0.22μs。
4  任务调度(HWI/SWI/TSK)
  一个操作系统的核心永远都是任务的调度。在DSP/BIOS中任务的调度是通过HWI、SWI和  TSK  三个模块来实现的。这三个模块分别对应于不同的调度方法。HWI即硬件中断。在  DSP/BIOS中硬件中断主要负责从外部设备中读写数据。由于硬件中断直接与硬件打交道,所以对应的中断服务程序ISR应该尽可能地短小精悍。需要注意的是HWI并不引起任务调度,因此在ISR的入口和出口成对地调用_HWI_enter()和_HWI_exit()这两个宏是必须的。HWI在处理完数据的输入输出后调用SWI_post()来调度相应的软件中断,SWI来完成数据处理工作。SWI是  DSP/BIOS任务调度的核心,共有14个优先级,每个优先级可以有多个任务。SWI任务是抢断式的,即高优先级的任务可以抢断低优先级的任务。但是SWI任务是不可阻塞的。它的运行状态如图1所示。

上一页  [1] [2] [3] [4] [5] 

关键词:

文章评论评论内容只代表网友观点,与本站立场无关!

   评论摘要(共 0 条,得分 0 分,平均 0 分)

推荐阅读

图文阅读

热门阅读

Copyright © 2007-2017 down.gzweix.Com. All Rights Reserved .
页面执行时间:330,582.00000 毫秒