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.

F28335 烧写到FLASH程序的程序入口



  1. 我想要将程序烧写到片内FLASH,并且搬运部分代码到RAM运行。当我将程序入口设置成code_start程序会报错,设置成_c_int00,则不会。如图,请问程序入口设置成_c_int00会影响程序烧到FLASH吗?

2.如何判断程序进入RAM运行了?  如果将中断函数COPY到RAM运行,那么中断函数中调用的函数是否也会在RAM中运行?

谢谢!!

  • "我想要将程序烧写到片内FLASH,并且搬运部分代码到RAM运行。当我将程序入口设置成code_start程序会报错,设置成_c_int00,则不会。如图,请问程序入口设置成_c_int00会影响程序烧到FLASH吗?"
    Eric:
    设置成_c_int00没问题。
    如果你要把某些代码放在RAM里面运行,则需要一些特定的操作,
    如参考initFlash这个函数,在cmd中要做一些特定的配置:
    ramfuncs : LOAD = FLASHD,
    RUN = progRAM,
    LOAD_START(_RamfuncsLoadStart),
    LOAD_END(_RamfuncsLoadEnd),
    RUN_START(_RamfuncsRunStart),
    PAGE = 0
    在源文件定义函数的地方,加这句代码
    #pragma CODE_SECTION(InitFlash, "ramfuncs");
    在调用之前,先进行memcpy函数:
    MemCopy(&RamfuncsLoadStart, &RamfuncsLoadEnd, &RamfuncsRunStart);

    // Call Flash Initialization to setup flash waitstates
    // This function must reside in RAM
    InitFlash(); // Call the flash wrapper init function
  • 非常感谢您的回复,能麻烦您再看一下我的第二个问题吗?
    “如何判断程序进入RAM运行了? 如果将中断函数COPY到RAM运行,那么中断函数中调用的函数是否也会在RAM中运行?”
  • 您可以阅读下文档Copying Compiler Sections From Flash to RAM on the TMS320F28xxx DSCs ,在官网搜索spraau8a。
    www.ti.com/.../spraau8a.pdf
  • “如何判断程序进入RAM运行了? 如果将中断函数COPY到RAM运行,那么中断函数中调用的函数是否也会在RAM中运行?”
    Eric:
    你可以通过.map文件查找该函数的地址,如果是在RAM的,会映射到RAM的地址。
    或者是设置断点,然后当运行到该函数的时候,打开view 菜单里面的反汇编代码可以看到该函数的地址。
    调用的函数不会在RAM中运行,如果你要该调用函数也在RAM中运行,照样子再设置一遍。
  • 好的,十分感谢!