- 易迪拓培训,专注于微波、射频、天线设计工程师的培养
TMS320F2812芯片开发中Flash代码性能的研究
下面是CMD文件关键内容。因RAM仿真与下载FLASH所用CMD文件有差异,故为节省篇幅,混合写在一起,差异部分参见说明。
试验程序运行时,用示波器在TMS320F2812的XF输出脚可以测量到重复脉冲(如图1所示),表2为对应的测量结果。
函数InitFLASH()设置了等待参数。在100 MHz的系统时钟条件下,笔者的实例能保证正常执行的最佳参数;而其他设置会产生运行速度慢,或过快但运行不稳定的结果。观察表2的测量结果,可以发现各方式下T1时间不变,原因为指令"asm("RPT#248||NOP")"取指令只执行一次,然后在DSP中内部循环执行250次,而只有取指令才涉及等待参数问题,所以在试验的4种条件下T1基本相同(毕竟还是存在取指令过程,每种条件下T1并非完全一致,有微小差别)。因FLASH本身访问速度比SARAM要慢,指令需要插入等待周期。
表2说明了下载到FLASH中运行时的速度与在SARAM中仿真时相比,有所下降。T2/T3/T4虽然同为数据传送花费时间,但因分布空间不同,对应汇编指令数和指令类型相应有增减,故表现出不同的执行时间,其中数据在外部RAM中传输比在内部SARAM中传输要慢。
表2还显示出下载到FLASH中运行,如果同时对芯片加密,则应当特别注意变量分配的空间位置。加密后FLASH处于安全模块中,如果变量分配到HO,那么由于H0是非安全块,DSP工作时可以在两种模块中动态切换,不需要开发者附加代码。描述参见TI文档资料中的CSM章节,但并未说明需要额外增加时间开销。LOL1是安全块,如果变量分配到L0L1或是没有加密,则因不存在安全与非安全模块的切换时间开销,速度比较快。当采用保护芯片知识产权而需要加密FLASH时必须注意分配变量空间,把对运行速度敏感的参数分配到LOLl中,否则会发现程序执行速度降低到仿真时的1/4。由于内部SARAM空间有限,应用系统往往需要外扩RAM,数据交换将比在内部SARAM执行时有所增多。
2 结论
通过前面的试验,可以得到几个在TMS320F2812应用开发中,运行于FLASH中的代码如何提高性能的指导原则:
①根据系统时钟选择合适的等待参数;
②数据分配空间从指令类型与数量上影响程序执行效率;
③FLASH加密后,对执行速度有快速性要求的应用系统,应当在CMD文件中指定运行空间在SARAM的L0L1段,并注意变量分配的段空间。
设计系统如果满足上面几个原则,那么程序执行效率就可达到SARAM仿真时的70%。
来源:维库开发网
上一篇:C语言编译过程中的错误分析
下一篇:协同电子政务数据交换平台方案