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.

[参考译文] CCS/TMS320F28377D:根据 SPRAAU8A 尝试将闪存写入 RAM 时、发生调试错误"在地址"0x3fe493&quot 处中断;没有可用的调试信息、或者在程序代码之外。"但复位后验证了程序加载

Guru**** 2589275 points
Other Parts Discussed in Thread: C2000WARE

请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/935518/ccs-tms320f28377d-when-trying-flash-to-ram-according-to-spraau8a-debugging-error-break-at-address-0x3fe493-with-no-debug-information-available-or-outside-of-program-code-occurs-but-the-program-loading-verified-after-reset

器件型号:TMS320F28377D
主题中讨论的其他器件:C2000WARE

工具/软件:Code Composer Studio

CCS  版本:10.1.0.00010

编译器版本:TI v20.2.LTS

代码库: C:\ti\c2000\C2000Ware_3_02_00_00\device_support\f2837xd\examples\dual\blinky_dc

尊敬的 TI C2000团队:

根据 SPRAAU8A、我尝试通过将所有程序例程和变量从闪存复制到 RAM 来运行刷写程序。

我能够从闪存中运行上述"双闪烁"程序。

当我修改"2837xD_FLASH_lnk_cpu1.cmd" 并将其添加到 SPRAAU8A 时、我在 CCS 中运行调试、无法进入正常调试过程、它会在地址"0x3fe493"处生成"中断、且没有可用的调试信息、或在程序代码之外生成。" 误差、如下所示。

但是、当我复位或重启电源时、LED 闪烁、似乎程序已正确加载。

我对无法进入调试模式的原因感到困惑。  

这是我正在使用的修改后的 cmd 文件。  

一切都正确。 请提供建议。

此致。

----------------------


存储器

第0页:/*程序内存*/
/*内存(RAM/FLASH)块可移动到 Page1进行数据分配*/
/* begin 用于"引导至闪存"引导加载程序模式*/

//开始:origin = 0x080000,length = 0x000002
BEGIN_FLASH:origin = 0x080000,length = 0x000002/* FLASHA 的一部分。 跳转至闪存目标地址。 用于"引导至闪存"引导加载程序模式。 *
RAMM0:origin = 0x000122、length = 0x0002DE
RAMD0:origin = 0x00B000、length = 0x000800
RAM_LS0_4:origin = 0x008000、length = 0x002800
// RAMLS0:origin = 0x008000,length = 0x000800
// RAMLS1:origin = 0x008800,length = 0x000800
// RAMLS2:origin = 0x009000,length = 0x000800
// RAMLS3:origin = 0x009800,length = 0x000800
// RAMLS4:origin = 0x00A000,length = 0x000800
// RAMGS1415:origin = 0x01A000,length = 0x002000
RAMGS14:origin = 0x01A000,length = 0x001000
RAMGS15:origin = 0x01B000,length = 0x001000
复位:origin = 0x3FFFC0,length = 0x000002

/*闪存扇区*/
FLASHA:origin = 0x080002,length = 0x001FFE /*片上闪存*/
FLASHB:origin = 0x082000、length = 0x002000 //片上闪存*
// FLASHC:origin = 0x084000,length = 0x002000 //片上闪存*/
FLASHC1:origin = 0x084000、length = 0x000800 //片上闪存*/
FLASHC2:origin = 0x084800,length = 0x000800 //片上闪存*/
FLASHC3:origin = 0x085000,length = 0x000800 //片上闪存*/
FLASHC4:origin = 0x084800,length = 0x000800 //片上闪存*/
FLASHD:origin = 0x086000、length = 0x002000 //片上闪存*/
FLASHE:origin = 0x088000、length = 0x008000 //片上闪存*/
FLASHF:origin = 0x090000,length = 0x008000 //片上闪存*
FLASHG:origin = 0x098000、length = 0x008000 //片上闪存*/
FLASHH:origin = 0x0A0000,length = 0x008000 //片上闪存*/
FLASHI:origin = 0x0A8000、length = 0x008000 //片上闪存*/
FLASHJ:origin = 0x0B0000,length = 0x008000 //片上闪存*/
FLASHK:origin = 0x0B8000、length = 0x002000 //片上闪存*/
FLASHL:origin = 0x0BA000、length = 0x002000 //片上闪存*/
FLASHM:origin = 0x0BC000、length = 0x002000 //片上闪存*/
FLASHN:origin = 0x0BE000、length = 0x002000 //片上闪存*/
//FLASHN:origin = 0x0BE000,length = 0x001FFE //片上闪存- SRMOON */

第1页:/*数据存储器*/
/*内存(RAM/FLASH)块可移动到 PAGE0进行程序分配*/

BOOT_RSVD:origin = 0x000002,length = 0x000120 // M0的一部分,引导 ROM 将此用于栈*/
RAMM1:origin = 0x000400、length = 0x000400 //片上 RAM 块 M1 *
RAMD1:origin = 0x00B800,length = 0x000800

RAMLS5:origin = 0x00A800,length = 0x000800

RAMGS0:origin = 0x00C000、length = 0x001000
RAMGS1:origin = 0x00D000、length = 0x001000
RAMGS2:origin = 0x00E000、length = 0x001000
RAMGS3:origin = 0x00F000、length = 0x001000
RAMGS4:origin = 0x010000,length = 0x001000
RAMGS5:origin = 0x011000,length = 0x001000
RAMGS6:origin = 0x012000,length = 0x001000
RAMGS7:origin = 0x013000,length = 0x001000
RAMGS8:origin = 0x014000,length = 0x001000
RAMGS9:origin = 0x015000,length = 0x001000
RAMGS10:origin = 0x016000,length = 0x001000
RAMGS11:origin = 0x017000,length = 0x001000
RAMGS12:origin = 0x018000,length = 0x001000
RAMGS13:origin = 0x019000,length = 0x001000


CPU2TOCPU1RAM:origin = 0x03F800,length = 0x000400
CPU1TOCPU2RAM:origin = 0x03FC00,length = 0x000400


部分

// codestart:> begin page = 0,align (4)


#ifdef __TI_Compiler_version__
#if __TI_Compiler_version__>=15009000
#if defined (_TI_EABI)
.TI.ramfunc:{}负载= FLASHD,
运行= RAMLS0、
Load_start (RamfuncsLoadStart)、
load_size (RamfuncsLoadSize)、
Load_End (RamfuncsLoadEnd)、
RUN_START (RamfuncsRunStart)、
run_size (RamfuncsRunSize)、
RUN_END (RamfuncsRunEnd)、
PAGE = 0、ALIGN (8)
其他
.TI.ramfunc:{}负载= FLASHD,
运行= RAM_LS0_4、
load_start (_RamfuncsLoadStart)、
load_size (_RamfuncsLoadSize)、
load_end (_RamfuncsLoadEnd)、
run_start (_RamfuncsRunStart)、
run_size (_RamfuncsRunSize)、
run_end (_RamfuncsRunEnd)、
PAGE = 0、ALIGN (8)
#endif
其他
ramfuncs:load = FLASHD,
运行= RAMLS0、
load_start (_RamfuncsLoadStart)、
load_size (_RamfuncsLoadSize)、
load_end (_RamfuncsLoadEnd)、
run_start (_RamfuncsRunStart)、
run_size (_RamfuncsRunSize)、
run_end (_RamfuncsRunEnd)、
PAGE = 0、ALIGN (8)
#endif

#endif

/***用户定义的段***/
codestart:> begin_flash,page = 0,align(4)/*由文件 CodeStartBranch.asm 使用*/
wddisable:> FLASHA,PAGE = 0,ALIGN (4)
copysections:> FLASHA,PAGE = 0,ALIG(4)

/*分配计划领域:*/


//.cinit:> FLASHB PAGE = 0,ALIGN (4)
.cinit:load = FLASHB、
运行= RAM_LS0_4、
load_start (_cinit_loadstart)、
run_start (_cinit_runstart)、
size (_cinit_size)、
PAGE = 0、ALIGN (4)

//.pinit:> FLASHB,PAGE = 0,ALIGN (4)
.pinit:load = FLASHB、
运行= RAM_LS0_4、
load_start (_Pinit_loadstart)、
run_start (_Pinit_runstart)、
Size (_Pinit_size)、
PAGE = 0、ALIGN (4)


//.text:>> FLASHB | FLASHC | FLASHD | FLASHE PAGE = 0,ALIG(4)
//.text:load = FLASHB | FLASHC | FLASHD | FLASHE PAGE = 0、ALIGN (4)
//.text:load = FLASHB | FLASHC | FLASHD | FLASHE、

//.text:>> FLASHC1 | FLASHC2 | FLASHC3 | FLASHC4
//.text:run = RAMLS0 | RAMLS1 | RAMLS2 | RAMLS3、
// load_start (_text_loadstart)、
// run_start (_text_runstart)、
// size (_text_size)、
//页面= 0,对齐(4)

//.text:load = FLASHC1 | FLASHC2 | FLASHC3 | FLASHC4、
.text:load = FLASHL、
运行= RAM_LS0_4、
load_start (_text_loadstart)、
run_start (_text_runstart)、
size (_text_size)、
PAGE = 0、ALIGN (4)


/*初始化段进入闪存*/

.const:load = FLASHF | FLASHG | FLASHH、
运行= RAM_LS0_4、
load_start (_const_loadstart)、
run_start (_const_runstart)、
size (_const_size)、
PAGE = 0、ALIGN (4)

//.econst:>> FLASHF | FLASHG | FLASHH PAGE = 0,ALIGN (4)
//.econst:load = FLASHF | FLASHG | FLASHH PAGE = 0,ALIGN (4)
econst:load = FLASHF | FLASHG | FLASHH、
运行= RAM_LS0_4、
load_start (_econst_loadstart)、
run_start (_econst_runstart)、
大小(_econst_size)、
PAGE = 0、ALIGN (4)

//.switch:> FLASHB PAGE = 0,ALIGN (4)
.switch:load = FLASHB、
运行= RAM_LS0_4、
load_start (_switch_loadstart)、
run_start (_switch_runstart)、
size (_switch_size)、
PAGE = 0、ALIGN (4)


/*分配未初始化的数据段:*/
.stack:>RAMM1 page = 1.
.ebss:>> RAMLS5 | RAMGS0 | RAMGS1 PAGE = 1.
.esysmem:> RAMLS5 PAGE = 1.

.reset:> reset,page = 0,type = DSECT //未使用,*/

filter_RegsFile:> RAMGS0,PAGE = 1

SHARERAMGS0:> RAMGS0,PAGE = 1
SHARERAMGS1:>RAMGS1,PAGE = 1.
RAMS0:>RAMGS0,PAGE = 1
ramgs1:>RAMGS1,page = 1.

/*使用 IPC API 驱动程序时需要以下部分定义*/
组:> CPU1TOCPU2RAM,PAGE = 1

PUTBUFFER
PUTWRITEIDX
GETREADIDX


组:> CPU2TOCPU1RAM,PAGE = 1

GETBUFFER:TYPE = DSECT
GETWRITEIDX:TYPE = DSECT
PUTREADIDX:TYPE = DSECT


/*以下部分定义适用于 SDFM 示例*/
filter1_RegsFile:> RAMGS1,PAGE = 1,fill=0x1111
Filter2_RegsFile:> RAMGS2,PAGE = 1,fill=0x2222
Filter3_RegsFile:> RAMGS3,PAGE = 1,fill=0x3333
Filter4_RegsFile:> RAMGS4,PAGE = 1,fill=0x4444
Differit_RegsFile:>RAMGS5,PAGE = 1,fill=0x3333

/*
//============================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================
//文件结束。
//============================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================
*

----------------------