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.

28335 FLASH CMD中的疑惑

在使用control suite官方的例程时看到这几个函数:

LOAD_START(_Flash28_API_LoadStart),
LOAD_END(_Flash28_API_LoadEnd),
RUN_START(_Flash28_API_RunStart),但是在工程中我并未发现,这几个函数的定义和声明,想请教一下这几个函数的定义和声明是在库中包含的吗?

还有Flash28_API_LoadStart;Flash28_API_LoadEnd;Flash28_API_RunStart;

RamfuncsLoadStart;
 RamfuncsLoadEnd;
 RamfuncsRunStart;

这六个变量只有声明并没有发现具体的地址赋值,请问这些赋值在什么地方?

  • tanson,

    在cmd文件中,对于一些加载在flash,运行在RAM中的段有这样的语法,

    ramfuncs            : LOAD = FLASHD,                         

                             RUN = RAML0,                       

                            LOAD_START(_RamfuncsLoadStart),                         

                          LOAD_END(_RamfuncsLoadEnd),                         

                           RUN_START(_RamfuncsRunStart),                        

                           PAGE = 0

    这上面就有这3个变量RamfuncsLoadStart;  RamfuncsLoadEnd;  RamfuncsRunStart;,这3个变量就是在CMD用这样的语法定义和赋值。

    同理还有Flash28_API_LoadStart;Flash28_API_LoadEnd;Flash28_API_RunStart;

    在cmd中只是实现这些变量的定义,然后在main函数中要对这些外部变量进行声明,可以在main函数上方看到。然后这些变量主要是用在memcpy函数中。

    Eric

     

  • 哦,是不是RamfuncsLoadStart就是FLASHD的首地址?RamfuncsRunStart就是RAML0的首地址?

  • tanson,

    首先ramfun段里面会包含一些函数,ramfuncsloadstart是指这个段加载在flashD中的开始的地址。ramfuncsrunstart是编译器给这部分代码分配的开始运行的地址,并非是首地址,确是这部分代码开始的地址。

     

    Eric