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.

28346 烧写

正在使用的是28346,我想请教一下,如果我已经把程序烧到FLASH当中,并且去掉仿真器之后能够运行。但是我怎么能确定我的程序是完全调到 RAM中之后再运行的,还是直接在FLASH中运行呢?

  • 需要设置.cmd文件,然后在程序中有代码搬移的操作。

  • 你好,谢谢你的回答。因为我是初学者,能具体一点吗。cmd文件是类似下面这种修改吗?

        .text   :   LOAD = FLASHA,   PAGE = 0        /* can be ROM */
                      RUN = RAM_L0L1L2L3, PAGE = 0        /* must be CSM secured RAM */
                      LOAD_START(_text_loadstart),
                      RUN_START(_text_runstart),
                      SIZE(_text_size)

    还有你说程序里要有代码搬移操作,是用户程序里吗?这个操作是什么语句呢

  • 就是类似这种的搬移。

    这是在CMD文件中的设置,在程序中要加上以下语句:

    extern Uint16 secureRamFuncs_loadstart, secureRamFuncs_loadend, secureRamFuncs_runstart;

    memcpy(&secureRamFuncs_runstart,
    &secureRamFuncs_loadstart,
    &secureRamFuncs_loadend - &secureRamFuncs_loadstart);

  • 谢谢回答。关于这个我还是有点问题。

    1.您之前说的这种方法是全部copy到ram中,还是只是一部分?我之前看28335的时候,全部copy似乎不需要在程序中加这些语句,只修改cmd。还是我没看仔细?

    2.28346用的是片外flash,您这个方法我之前看手册的时候,说的是片内flash。这两者有区别吗?

    3.我请教过其他的人,有的说对于28346只要烧到flash,上电之后就是全部copy到ram中运行的。我现在有点糊涂,到底有没有必要再修改cmd和程序?但是我的目的是一定要确保 上电之后程序是先全部copy到ram中再运行的。