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.

关于DSP2803x_SysCtrl.c



在DSP2803x_SysCtrl.c中有代码如下:

#pragma CODE_SECTION(InitFlash, "ramfuncs");

这里这段注释不是很明白:

//Functions that will be run from RAM need to be assigned to

// a different section.  This section will then be mapped to a load and

// run address using the linker cmd file.

是不是表示在RAM中运行的代码,要从FLASH中拷贝出来?

那我每次下载的代码是在FLASH中么? 

为什么要拷贝到RAM中运行?

  • 为了增加运行速度,Flash的速度毕竟没有RAM快啦!

    你下载的代码是在Flash,但有些函数需要从Flash中搬移到RAM中执行。

  •   那究竟什么代码非要得搬到RAM中运行啊?

       有没有在调试模式下,只在RAM中运行,而不下载到FLASH的办法?

  • 1. 有两种情况是非搬移不可:

    1) InitFlash函数,此函数是配置Flash特性,不可能自己配置自己,因此需要搬移到Ram中执行配置程序

    2) Critical 的程序在Flash中运行时间太长,必须要搬移,在RAM中是全速运行

     

    2. 当然有了,直接把CMD换成RAM的CMD,就是直接在RAM中仿真,不需要经过Flash烧写啦!

  • #ifdef FLASH
    #pragma CODE_SECTION(MainISR,"ramfuncs");
    #pragma CODE_SECTION(OffsetISR,"ramfuncs");
    #endif

    电机控制里,把MainISR,OffsetISR移到RAM中执行,如果不移的话,会不会有BUG。

    RAM不够用的情况下,程序可不可直接在Flash中运行,数据存放在RAM中?