如题,最近在做讲程序下载到FLASH中的工作,发现添加的F28335.cmd文件中有这样一段程序:
SECTIONS
{
/* Allocate program areas: */
.cinit : > FLASHA PAGE = 0
.pinit : > FLASHA, PAGE = 0
.text : > FLASHA PAGE = 0
codestart : > BEGIN PAGE = 0
ramfuncs : LOAD = FLASHD, RUN = RAML0, LOAD_START(_RamfuncsLoadStart),
LOAD_END(_RamfuncsLoadEnd),
RUN_START(_RamfuncsRunStart),
LOAD_SIZE(_RamfuncsLoadSize),
PAGE = 0
*****
前面不是将程序分配到FLASHA中了吗?为什么是ramfuncs : LOAD = FLASHD,而不是ramfuncs : LOAD = FLASHA?
能给详细说说这部分的内容吗?
Seven Han:您可以参考下这边帖子:
e2echina.ti.com/…/81073
如题,最近在做讲程序下载到FLASH中的工作,发现添加的F28335.cmd文件中有这样一段程序:
SECTIONS
{
/* Allocate program areas: */
.cinit : > FLASHA PAGE = 0
.pinit : > FLASHA, PAGE = 0
.text : > FLASHA PAGE = 0
codestart : > BEGIN PAGE = 0
ramfuncs : LOAD = FLASHD, RUN = RAML0, LOAD_START(_RamfuncsLoadStart),
LOAD_END(_RamfuncsLoadEnd),
RUN_START(_RamfuncsRunStart),
LOAD_SIZE(_RamfuncsLoadSize),
PAGE = 0
*****
前面不是将程序分配到FLASHA中了吗?为什么是ramfuncs : LOAD = FLASHD,而不是ramfuncs : LOAD = FLASHA?
能给详细说说这部分的内容吗?
user4662103:
回复 Seven Han:
您好,我有个新的问题想要咨询您:
我现在用F28235设计应用(请注意是28235,不是335):
要将程序下载到Flash中运行,已经做得工作有:
1.将cmd文件由ram_link改为F28335;并且添加ramfuncs: LOAD = FLASHD, RUN = RAML0, LOAD_START(_RamfuncsLoadStart),LOAD_END(_RamfuncsLoadEnd),RUN_START(_RamfuncsRunStart),LOAD_SIZE(_RamfuncsLoadSize),PAGE = 0
2.在主程序中声明
extern Uint16 RamfuncsLoadStart;
extern Uint16 RamfuncsLoadEnd;
extern Uint16 RamfuncsRunStart;
extern Uint16 RamfuncsLoadSize;
3.在主程序InitPieVectTable();后添加memcpy(&RamfuncsRunStart, &RamfuncsLoadStart, (Uint32)&RamfuncsLoadSize);
InitFlash();
4.工程中添加memcpy.c和DSP2833x_CodeStartBranch.asm
5. 包含的库文件是rts2800_mh.lib
程序成功的下载到了FLASH中,然而却无法启动,请问会是哪里的问题呢?
如题,最近在做讲程序下载到FLASH中的工作,发现添加的F28335.cmd文件中有这样一段程序:
SECTIONS
{
/* Allocate program areas: */
.cinit : > FLASHA PAGE = 0
.pinit : > FLASHA, PAGE = 0
.text : > FLASHA PAGE = 0
codestart : > BEGIN PAGE = 0
ramfuncs : LOAD = FLASHD, RUN = RAML0, LOAD_START(_RamfuncsLoadStart),
LOAD_END(_RamfuncsLoadEnd),
RUN_START(_RamfuncsRunStart),
LOAD_SIZE(_RamfuncsLoadSize),
PAGE = 0
*****
前面不是将程序分配到FLASHA中了吗?为什么是ramfuncs : LOAD = FLASHD,而不是ramfuncs : LOAD = FLASHA?
能给详细说说这部分的内容吗?
Young Hu:
回复 user4662103:
程序成功的下载到了FLASH中,然而却无法启动,请问会是哪里的问题呢?
连接仿真器,看看程序卡死在什么位置。另外,最好是在main函数第一句话就执行
memcpy(&RamfuncsRunStart, &RamfuncsLoadStart, (Uint32)&RamfuncsLoadSize);