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

嵌入式系统 时间:2009-04-09来源:网络

例5  PIP对应的读任务:
  extern  far  PIP_Obj  pip;
  reader()
  {
  Uns  size;
  Ptr  addr;
  if(PIP_getReaderNumFrames(pip)>0)
  {
  PIP_get(pip);
  addr=PIP_getReaderAddr(pip);
  size=PIP_getReaderSize(pip);

  /*Code  to  empty  the  frame*/
  PIP_free(pip);
  }
  else{
  LOG_error(″no  frames  available″);
  /*  or  you  could  just  return;*/
  }
  }
  例6  PIP对应的写任务:
  extern  far  PIP_Obj  pip;
  writer()
  {
  Uns  size;
  Ptr  addr;
  if(PIP_getWriterNumFrames(pip)>0){
   PIP_alloc(pip);
   addr=PIP_getWriterAddr(pip);
   size=PIP_getWriterSize(pip);
   /*  fill  the  frame  up  to  size  */
   PIP_put(pip);
  }
  else{
   LOG_error(″no  frames  available″);
   /*  or  you  could  just  return;*/
  }
  }
  由逻辑关系可以看到,通过使用PIP应用程序可以保持一个简单统一接口而不必关心具体的硬件操作,因此当该软件移植到不同环境中时,至多只需要改写设备驱动程序。使用PIP的一个具体实例就是HST模块。HST模块在主机和DSP之间建立起一条数据链路,该链路就是一个PIP对象。对HST的操作方式与PIP一致。其差别仅仅在于HST在初始化时指向了预定义的DSP上的HPI接口而已。
  SIO:从PIP的逻辑关系可以看出,读写PIP就是一个数据拷贝的过程。这在某些应用中,如实现网络协议TCP/IP时,不是非常有效。因为数据每向上传递一层就需要进行一次数据拷贝,其效率非常差。如果采用SIO来实现就会有很大的改善。SIO的操作只有get()和  put()两种。与PIP不同的是SIO没有自己的缓冲队列。每次get()  或  put()  操作时都会在应用程序和设备驱动程序之间交换缓冲的指针。所以SIO操作的实质是数据地址的交换。由于没有数据拷贝,其运行效率就很高。SIO的运行逻辑如图4所示。

7 RTDX
  实时数据交换Real-Time-Data-eXhange是DSP/BIOS提供的一个全新的功能。在很多应用中要求DSP不能够停下来,而需要从主机中实时地读取数据或者向主机实时地输出数据。德州仪器的C5000,C6000系列的DSP都可以通过JTAG接口来实现这个功能。其逻辑结构如图5所示。

1 2 3 4 5

关键词: 德州仪器 DSP/BIOS 操作系统 实时 介绍 DSP BIOS

加入微信
获取电子行业最新资讯
搜索微信公众号:EEPW

或用微信扫描左侧二维码

相关文章

查看电脑版