新闻中心

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

介绍一种实时操作系统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模块在主机和之间建立起一条数据链路,该链路就是一个PIP对象。对HST的操作方式与PIP一致。其差别仅仅在于HST在初始化时指向了预定义的上的HPI接口而已。
  SIO:从PIP的逻辑关系可以看出,读写PIP就是一个数据拷贝的过程。这在某些应用中,如实现网络协议TCP/IP时,不是非常有效。因为数据每向上传递一层就需要进行一次数据拷贝,其效率非常差。如果采用SIO来实现就会有很大的改善。SIO的操作只有get()和  put()两种。与PIP不同的是SIO没有自己的缓冲队列。每次get()  或  put()  操作时都会在应用程序和设备驱动程序之间交换缓冲的指针。所以SIO操作的实质是数据地址的交换。由于没有数据拷贝,其运行效率就很高。SIO的运行逻辑如图4所示。

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

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


评论


相关推荐

技术专区

关闭