新闻中心

EEPW首页 > 嵌入式系统 > 设计应用 > 介绍一种实时操作系统DSP/BIOS

介绍一种实时操作系统DSP/BIOS

作者:时间:2009-04-09来源:网络收藏

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

本文引用地址:http://www.amcfsurvey.com/article/152540.htm

如果要对某一段程序进行分析时,只需在其前后调用STS_set和STS_delta就可以了。如例2使用STS测试程序段执行周期如下:
  /*  Header  files  needed  for  DSP    */
  #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    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)
  一个的核心永远都是任务的调度。在中任务的调度是通过HWI、SWI和  TSK  三个模块来实现的。这三个模块分别对应于不同的调度方法。HWI即硬件中断。在  DSP/BIOS中硬件中断主要负责从外部设备中读写数据。由于硬件中断直接与硬件打交道,所以对应的中断服务程序ISR应该尽可能地短小精悍。需要注意的是HWI并不引起任务调度,因此在ISR的入口和出口成对地调用_HWI_enter()和_HWI_exit()这两个宏是必须的。HWI在处理完数据的输入输出后调用SWI_post()来调度相应的软件中断,SWI来完成数据处理工作。SWI是  DSP/BIOS任务调度的核心,共有14个优先级,每个优先级可以有多个任务。SWI任务是抢断式的,即高优先级的任务可以抢断低优先级的任务。但是SWI任务是不可阻塞的。它的运行状态如图1所示。

linux操作系统文章专题:linux操作系统详解(linux不再难懂)


评论


相关推荐

技术专区

关闭