|
发表于 2013-8-17 16:46:11
|
显示全部楼层
from steaven2000:
这么几个概念希望对楼主有帮助:
1、代码在Flash里面跑和在RAM里面跑:据说在Flash里面跑时,实际的运行速度大概在60-70MPS@100MHz SysClock, 在RAM里面跑时能达到100MPS@100MHz。
显然RAM里面跑效率高,但是由于DSP RAM的限制,一般只能把部分函数放在RAM中跑。
2、代码中函数前面有ramfunc标识的,表明这个函数需要在RAM中运行,比如一些对运行时间非常敏感的函数,如中断处理,控制算法等。Init_Flash是一个特例,必须在RAM中运行。
3、MemoryCopy仅仅是一个数据移动的过程,代码也是数据嘛,代码在编译时声称的out文件是用来烧录在flash中的,那么怎样让这部分代码在RAM中运行呢,那就需要从flash搬运到
RAM中,即MemoryCopy。有些编译器,如IAR for ARM,以__ramfunc声明的函数不需要用户做任何搬运处理,这部分在初始化时由编译器生成的代码自动完成这个过程。
再回过头来,CCS需要用户做这个标准的搬运动作,而且仿真运行时可以看到PC指向的都是RAM地址而不是Flash地址,说明代码确实是在RAM中运行。
4、怎么交接?不解释,CCS帮你做了。对于用户而言,直观的表现就是你需要在flash中运行的代码在flash中运行,需要在RAM中运行的代码在ram中运行,无缝切换。
|
|