介绍实时操作系统DSP-BIOS.docVIP

  1. 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
介绍实时操作系统DSP-BIOS

介绍实时操作系统DSP/BIOS的应用2011/06/12 DSP C6400系列是德州仪器基于软件开发面临的新要求而推出的,其最高运行时钟可以达到1.1GHz,运算能力可以达到8800MIPS如何充分发挥DSP的这种性能优势,对软件提出了很高的要求。首先为了降低系统成本,就要求将许多以前用硬件实现的功能软件化,原来由多个DSP完成的工作由一块DSP完成,DSP要能够同时完成多个相同或不同的任务而相互之间没有影响。其次为了产品的维护和升级,要求软件尽可能地模块化,使用高级语言如C来编程,有统一的接口API所有这些新的要求,都需要使用实时操作系统。以往直接将应用程序运行于裸机之上的作法显然已经不再适用了。德州仪器推出的 DSP/BIOS技术正是基于其多年从事DSP研制生产的经验,为开发者量身定做的一个优秀软件平台。 更可贵的是该操作系统是免费的,这为众多的中小用户使用DSP打开了方便之门。   1实时操作系统   简单地说,实时操作系统与一般意义上的操作系统(如Windows, Unix等)的主要差别就在于实时操作系统提供了一种机制,使得运行于其上的应用程序都能够满足实时性的要求。 在Windows中常见的沙漏现象(即用户等待现象)在实时系统中是绝对不允许的。因为这可能造成通讯中断,马达损毁等灾难性的结果。 DSP/BIOS是特别针对实时系统,运行于德州仪器C5000C6000系列的DSP之上的一个实时操作系统。 DSP/BIOS实际上是一个可调用的系统模块API的集合。以下就各个模块分别加以介绍。   2 LOG   在开发的时候通常需要使用printf()来显示当前状态。但是printf()是非常花费时间的函数而且不具有实时性。因为DSP需要对显示的数据进行分析,整理成合适的显示格式,并调用输出显示模块。所以在一个实时性要求很高的应用中,对printf()的调用可能会使系统根本无法满足实时要求。在DSP/BIOS中引入了一个相应的函数LOG_printf()。该函数是LOG 对象的一个方法(或调用函数〕。LOG对象本质上是一个32bit的整形数,其高低16bit分别代表要显示的两个数据。例1是分别使用printf()和LOG_printf()作比较的示范程序:   #include   /* Header files needed for DSP BIOS */   #include   #include   /* functions */   void func_printf();   void func_LOG_printf();   /* Objects created by the Configuration Tool */   extern LOG_Obj logTrace;   /*   *======== main ========   */   void main ()   {   return;   }   void func_printf(int time)   {   printf(″Strart printf demo ″);   printf(″Current time=%d ″ , time);   printf(″End printf demo ″);   return;   }   void func_LOG_printf(int time)   {   LOG_printf(logTrace,″Strart LOG_printf demo ″);   LOG_printf(logTrace, ″Current time=%d ″  time);   LOG_printf(logTrace, ″End LOG_printf demo ″);   return;   }   func_printf()和func_LOG_printf()由DSP内时钟控制每100ms周期性地分别调用一次。通过对printf()和LOG_printf()运行时间作比较发现,在C6211运行在150MHz的情况下,printf()需花费4000个周期约26.7μsLOG_printf()只花费36个周期约0.24μs.printf()比LOG_printf()多开销100倍以上的时间,因此LOG_printf()对于实时地显示一些运行状态是非常有帮助的。而且对于熟悉C语言的开发者来说,LOG_printf()的调用格式几乎与printf()完全一样。   3STS   对一个软件进行分析优化时,通常会用到profile的功能。但是在实时运行的DSP的环境中使用profile等效于加入了多个程序断点。 由于现在的DSP通常具有很深的流水线结构来保证DSP的高运算能力,如德州仪器的C6000系列的流水线长度为12级,程

文档评论(0)

almm118 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档