在某人的博客里看到介绍如何再复位后把程序从Flash里复制到RAM中,并说,如果要想程序跑得快,就要把程序放在RAM里。
如果程序很大的话,就只能把主要的好事的部分放在RAM里。
然则,如果把程序简单地放在Flash里,能够跑多快?
程序有的部分在RAM里,有的部分在FLASH里,如何估计它的速度,时序不会乱吗?
初学,谢谢指教。
Chen Jones:
因为RAM的访问速度快,可以达到150M,单cycle
但Flash的运行速度慢,大概是100~120M
但不能就这样说在Flash中就是120M,因为这只是Flash的访问速度,计算速度还是150Mhz
关于速度估算,你可以用CCS上的Clock功能,打开Clock,测量两个断点之间的Cycle数。
在某人的博客里看到介绍如何再复位后把程序从Flash里复制到RAM中,并说,如果要想程序跑得快,就要把程序放在RAM里。
如果程序很大的话,就只能把主要的好事的部分放在RAM里。
然则,如果把程序简单地放在Flash里,能够跑多快?
程序有的部分在RAM里,有的部分在FLASH里,如何估计它的速度,时序不会乱吗?
初学,谢谢指教。
hua zhang4:
回复 Chen Jones:
谢谢指教啊,Flash能跑100MHz也就不错了,Microchip的30F系列只能跑30MHz,33系列40MHz,新的33EP系列也才60/70MHz。
虽说“计算速度还是150Mhz”,但是程序跑起来要取指,所以真正跑起来也就只是100-120MHz吧?
另外虽说“计算速度还是150Mhz”,一般说DSP可以单周期做浮点乘加,看28系列的浮点扩展指令,浮点乘加有两个周期的延迟,虽然可以在这两个周期的延迟里取操作数,速度最快也就是50MHz吧?
用C编程的话,能够实现这样最高50MHz的乘加运算吗?
在某人的博客里看到介绍如何再复位后把程序从Flash里复制到RAM中,并说,如果要想程序跑得快,就要把程序放在RAM里。
如果程序很大的话,就只能把主要的好事的部分放在RAM里。
然则,如果把程序简单地放在Flash里,能够跑多快?
程序有的部分在RAM里,有的部分在FLASH里,如何估计它的速度,时序不会乱吗?
初学,谢谢指教。
hua zhang4:
回复 Chen Jones:
TI 有一个《C2833x/C2823x c/c++ Header Files and Peripheral Examples Quick Start》,这是一篇很有意思的文献,它的所有奇数页是V1.20的,而所有偶数页是V1.30的。
它的4.5节讲了在Flash中运行程序的问题。其中的第四步,需要调用InitFlash()来初始化flash的状态和使能flash的流水线模式。
这样说来,在flash中运行,可能主要就是取指,是需要加延迟的,那样应是到不了100-120MHz的吧?
TI中文支持网



