This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

怎么样让函数(程序)在RAM里运行?



如题;

我用的是F5438A,想加快一个函数的运行,不知道这样行不行?

  • 你好,

          程序可以在ram中运行的,但是程序代码需要存储在flash中,可以在运行初始阶段将flash中的代码复制到ram中,然后在ram中运行代码。

  • 当时用c2000的时候好像用过,建议你在ccs里面找一下,debug的时候通过一个命令就可以做到,你试试能不能解答你的问题。

    做ARM9的时候在bootloader里面就有将代码搬移到RAM的执行的代码,也就是楼上所说的初始化代码里可以实现这个功能。

  • C2000有这个功能我知道。但是MSP430没有这个按钮(选项吧);

    MSP430 Optimizing C/C++ Compilerv3.3 第84页介绍了这个语法,可以将代码放在制定的段

    #pragma CODE_SECTION (symbol, "sectionname");

  • 先科普一下

    1. 一般在主频较高的MCU,由于FLAH操作会慢于主频,也就是说FLASH的取值速度不能跟上程序的运行速度。这个时候如果把代码放在FLASH中运行,CPU就会在取指时添加空闲CLK来等待取值操作。一般的MCU会用流水线的方式来实现取值,译码,执行,从而避免FLAH速度过慢的问题。

    2. 但这个流水线在遇到跳转程序时就没有用了(只有很少的MCU带有跳转预判断功能),这个时候,把程序放在RAM中运行,就可以大大提高程序的运行速度。

    3.但是在速度较慢的MCU中,FLASH的取指速度比CPU的速度要快,就不存在这个问题, 你把代码放在RAM中和放在FLASH中运行的时间是一样的。

    关于问题:

    1. .在IAR中有关键字__ramfunc定义该函数在RAM中运行。