TMS320F28335谈程序在RAM FLASH 和外部RAM中运行的速度.docVIP

TMS320F28335谈程序在RAM FLASH 和外部RAM中运行的速度.doc

  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文档。上传文档
查看更多
谈程序在RAM,FLASH 和外部RAM中运行的速度 以TMS320F28335芯片为例 在内部RAM中程序能够,达到150MHZ,也即150MIPS. 用下面这段程序测试: ? ?for(;;)? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ???| ? ?{? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?| ? ???GpioDataRegs.GPACLEAR.bit.GPIO0=1;? ?? ?? ?? ?? ?? ? | ? ?? ???DSP28x_usDelay(29992);//29992*5+9个时钟周期? ?|总共300001个时钟周期 ? ???GpioDataRegs.GPASET.bit.GPIO0=1;? ?? ?? ?? ?? ?? ?? ?? ?| ? ?? ???DSP28x_usDelay(30000);//30000*5+9个时钟周期? ?| ? ?}? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? 在RAM中运行上面的程序能够正常,GPIO 的周期为500HZ 在外部RAM中运行 在外部RAM中最大能达到多少的速度呢? 试一下,在28335中,XCLK=SYSCLK的时候。设置 ? ? XintfRegs.XTIMING7.bit.XRDLEAD = 1; ? ? XintfRegs.XTIMING7.bit.XRDACTIVE =2; ? ? XintfRegs.XTIMING7.bit.XRDTRAIL = 1;? ?? ?? ?? ? 也就是说XINTF读取一个外部RAM中的数据要1+3+1个时钟周期,为5 跑上面谈到的程序,GPIO的周期为100HZ,比在RAM中慢了5倍,因为RAM中读取一个数据只要1个时钟周期,外部RAM中读取要5个 改变一下: ? ? XintfRegs.XTIMING7.bit.XRDLEAD = 1; ? ? XintfRegs.XTIMING7.bit.XRDACTIVE = 1; ? ? XintfRegs.XTIMING7.bit.XRDTRAIL = 0;? ?? ?? ?? ?也就是说XINTF读取一个外部RAM中的数据要1+2+0个时钟周期,为3 跑上面谈到的程序,GPIO的周期为166.7HZ,899984时钟周期,因为RAM中读取一个数据只要1个时钟周期,外部RAM中读取要3个 理论上在外部RAM中运行最快可以为75MHZ,但一般我们只能达到50MHZ,因为一般我们不能设置.XRDACTIVE 为0 在FLASH中运行 在FLASH中运行上面的程序,打开flash pipeline。会发现运行的比外部RAM还慢,只有138.888HZ的GPIO周期。 FLASH中运行程序,需要说到FLASH pipeline。 FLASH pipeline可以一次读取FLASH中的64bits,也就是正常的4条指令。那么理论上有FLASH pipeline的时候,FLASH的运行最优的速度为37 ns的FLASH介入时间乘以4,也就是108 MHz 。 但是,如果如我上面的测试代码那样充满了跳转指令(也即FLASH pipeline一次取4个指令指令后发现是跳转指令无法连续运行后面的指令)那么最坏的结果,是FLASH运行在108/4=27MHZ下。 所以,只能这样说,程序在FLASH中的运行速度为27~108MHZ,一般情况下,程序优化的还不错跳转指令比较少,在FLASH中28335的运行速度为80~90MHZ。

文档评论(0)

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

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

1亿VIP精品文档

相关文档