TI中文支持网
TI专业的中文技术问题搜集分享网站

TMS320F28377D: 重新上电不能工作

Part Number:TMS320F28377D

不断电debug,可以运行。

但重启以后运行不了,删除部分变量以后,断电可以重启。cmd文件如下:

MEMORY
{
PAGE 0 : /* Program Memory */
/* Memory (RAM/FLASH) blocks can be moved to PAGE1 for data allocation */
RAMM0 : origin = 0x000122, length = 0x0002DE
RAMD0 : origin = 0x00B000, length = 0x000800
RAMLS0 : origin = 0x008000, length = 0x000800
RAMLS1 : origin = 0x008800, length = 0x000800
RAMLS2 : origin = 0x009000, length = 0x000800
RAMLS3 : origin = 0x009800, length = 0x000800
RAMGS14 : origin = 0x01A000, length = 0x001000
RAMGS15 : origin = 0x01B000, length = 0x001000
RESET : origin = 0x3FFFC0, length = 0x000002

#ifdef __TI_COMPILER_VERSION__
#if __TI_COMPILER_VERSION__ >= 20012000
GROUP { /* GROUP memory ranges for crc/checksum of entire flash */
#endif
#endif

/* BEGIN is used for the "boot to Flash" bootloader mode */
BEGIN : origin = 0x080000, length = 0x000002

/* Flash sectors */
FLASHA : origin = 0x080002, length = 0x001FFE /* on-chip Flash */
FLASHB : origin = 0x082000, length = 0x002000 /* on-chip Flash */
FLASHC : origin = 0x084000, length = 0x002000 /* on-chip Flash */
FLASHD : origin = 0x086000, length = 0x002000 /* on-chip Flash */
FLASHE : origin = 0x088000, length = 0x008000 /* on-chip Flash */
FLASHF : origin = 0x090000, length = 0x008000 /* on-chip Flash */
FLASHG : origin = 0x098000, length = 0x008000 /* on-chip Flash */
FLASHH : origin = 0x0A0000, length = 0x008000 /* on-chip Flash */
FLASHI : origin = 0x0A8000, length = 0x008000 /* on-chip Flash */
FLASHJ : origin = 0x0B0000, length = 0x008000 /* on-chip Flash */
FLASHK : origin = 0x0B8000, length = 0x002000 /* on-chip Flash */
FLASHL : origin = 0x0BA000, length = 0x002000 /* on-chip Flash */
FLASHM : origin = 0x0BC000, length = 0x002000 /* on-chip Flash */
FLASHN : origin = 0x0BE000, length = 0x002000 /* on-chip Flash */#ifdef __TI_COMPILER_VERSION__
#if __TI_COMPILER_VERSION__ >= 20012000
} crc(_table_name, algorithm=C28_CHECKSUM_16)
#endif
#endif

PAGE 1 : /* Data Memory */
/* Memory (RAM/FLASH) blocks can be moved to PAGE0 for program allocation */

BOOT_RSVD : origin = 0x000002, length = 0x000120 /* Part of M0, BOOT rom will use this for stack */
RAMM1 : origin = 0x000400, length = 0x000400 /* on-chip RAM block M1 */
RAMD1 : origin = 0x00B800, length = 0x000800

RAMLS4 : origin = 0x00A000, 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
}

SECTIONS
{
/* Allocate program areas: */
.cinit : > FLASHB | FLASHC | FLASHD | FLASHE PAGE = 0, ALIGN(4)
.pinit : > FLASHB | FLASHC | FLASHD | FLASHE, PAGE = 0, ALIGN(4)
.text : >> FLASHB | FLASHC | FLASHD | FLASHE PAGE = 0, ALIGN(4)
codestart : > BEGIN PAGE = 0, ALIGN(4)

#ifdef __TI_COMPILER_VERSION__
#if __TI_COMPILER_VERSION__ >= 15009000
.TI.ramfunc : {} LOAD = FLASHB | FLASHC | FLASHD | FLASHE,
RUN = RAMLS0 | RAMLS1 | RAMLS2 |RAMLS3,
LOAD_START(_RamfuncsLoadStart),
LOAD_SIZE(_RamfuncsLoadSize),
LOAD_END(_RamfuncsLoadEnd),
RUN_START(_RamfuncsRunStart),
RUN_SIZE(_RamfuncsRunSize),
RUN_END(_RamfuncsRunEnd),
PAGE = 0, ALIGN(4)
#else
ramfuncs : LOAD = FLASHB | FLASHC | FLASHD | FLASHE,
RUN = RAMLS0 | RAMLS1 | RAMLS2 |RAMLS3,
LOAD_START(_RamfuncsLoadStart),
LOAD_SIZE(_RamfuncsLoadSize),
LOAD_END(_RamfuncsLoadEnd),
RUN_START(_RamfuncsRunStart),
RUN_SIZE(_RamfuncsRunSize),
RUN_END(_RamfuncsRunEnd),
PAGE = 0, ALIGN(4)
#endif
#endif
/* Allocate uninitalized data sections: */
.stack : > RAMM1 PAGE = 1
.ebss : >> RAMLS4 | RAMLS5 | RAMGS0 | RAMGS1 PAGE = 1
.esysmem : >> RAMLS4 | RAMLS5 PAGE = 1

/* Initalized sections go in Flash */
.econst : >> FLASHF | FLASHG | FLASHH PAGE = 0, ALIGN(4)
.switch : > FLASHB PAGE = 0, ALIGN(4)
.reset : > RESET, PAGE = 0, TYPE = DSECT /* not used, */

Filter_RegsFile : > RAMGS0, PAGE = 1
SHARERAMGS0 : > RAMGS0, PAGE = 1
SHARERAMGS1 : > RAMGS1, PAGE = 1
/* The following section definitions are required when using the IPC API Drivers */ GROUP : > CPU1TOCPU2RAM, PAGE = 1 {
PUTBUFFER PUTWRITEIDX GETREADIDX }
GROUP : > CPU2TOCPU1RAM, PAGE = 1
{
GETBUFFER : TYPE = DSECT
GETWRITEIDX : TYPE = DSECT
PUTREADIDX : TYPE = DSECT
}

/* crc/checksum section configured as COPY section to avoid including in executable */
.TI.memcrc : type = COPY
}

/*
//===========================================================================
// End of file.
//===========================================================================
*/

Green Deng:

你好,我觉得这个问题应该说明一下删除的哪些变量?

但是一般来说,仿真可以运行但flash不能运行的话跟变量应该关系不大,程序如果使用flash.cmd文件的话能正常仿真吗?

,

li liu:

我删除的是我自己定义的一些volatile uint16,int16,float32,int64等格式的数据。

我的float32和int64的数据有个几十个。

通过删除变量,控制ebss使用率不超过1024,就能正常重新上电运行。如果>1024,就会异常。

现在很愁,整个问题严重影响了我们的项目进度,如果是377不够用,还要换芯片。

,

li liu:

仿真使用的flash.cmd, debug运行无异常。

,

li liu:

这些变量是我自己定义的。

volatile float32 f32X1Adc1Voltage = 0;

volatile int64 s64Adc1Voltage = 0;

类似的变量。

,

li liu:

不帮忙解决嘛?

,

Green Deng:

抱歉刚看到。

.ebss部分包含全局变量,文件级静态变量和函数级静态变量。照例说如果仿真能正常运行的话flash也没问题。

你看一下ram和flash的两个CMD文件中.ebss的划分大小是相同的吗?

另外,可以在CCS内使用View–>Memory Allocation 来查看内存使用情况。

也可以参考一下这个页面的说明:software-dl.ti.com/…/c2000_c28x-compiler-understanding-linking.html

,

jh chen:

发一下你编译后的map文件。另外,你可以把有些变量通过  DATA_SECTION的方式指定到其他的RAM。这种一般是有些程序没有下载到flash,只是下载到ram,所以仿真时可以运行,但是脱离仿真器之后就运行异常了。

,

li liu:

MEMORY CONFIGURATION

name origin length used unused attr fill———————- ——– ——— ——– ——– —- ——–PAGE 0: RAMM0 00000122 000002de 00000000 000002de RWIX RAMLS0 00008000 00000800 0000003b 000007c5 RWIX RAMLS1 00008800 00000800 00000000 00000800 RWIX RAMLS2 00009000 00000800 00000000 00000800 RWIX RAMLS3 00009800 00000800 00000000 00000800 RWIX RAMLS4 0000a000 00000800 00000000 00000800 RWIX RAMD0 0000b000 00000800 00000000 00000800 RWIX RAMGS14 0001a000 00001000 00000000 00001000 RWIX RAMGS15 0001b000 00001000 00000000 00001000 RWIX BEGIN 00080000 00000002 00000002 00000000 RWIX FLASHA 00080002 00001ffe 00000000 00001ffe RWIX FLASHB 00082000 00002000 00001ffd 00000003 RWIX FLASHC 00084000 00002000 00001eee 00000112 RWIX FLASHD 00086000 00002000 00000d61 0000129f RWIX FLASHE 00088000 00008000 00000000 00008000 RWIX FLASHF 00090000 00008000 000001c0 00007e40 RWIX FLASHG 00098000 00008000 00000000 00008000 RWIX FLASHH 000a0000 00008000 00000000 00008000 RWIX FLASHI 000a8000 00008000 00000000 00008000 RWIX FLASHJ 000b0000 00008000 00000000 00008000 RWIX FLASHK 000b8000 00002000 00000000 00002000 RWIX FLASHL 000ba000 00002000 00000000 00002000 RWIX FLASHM 000bc000 00002000 00000000 00002000 RWIX FLASHN 000be000 00002000 00000000 00002000 RWIX RESET 003fffc0 00000002 00000000 00000002 RWIX

PAGE 1: BOOT_RSVD 00000002 00000120 00000000 00000120 RWIX RAMM1 00000400 00000400 00000100 00000300 RWIX ADCA_RESULT 00000b00 00000020 00000018 00000008 RWIX ADCB_RESULT 00000b20 00000020 00000018 00000008 RWIX ADCC_RESULT 00000b40 00000020 00000018 00000008 RWIX ADCD_RESULT 00000b60 00000020 00000018 00000008 RWIX CPU_TIMER0 00000c00 00000008 00000008 00000000 RWIX CPU_TIMER1 00000c08 00000008 00000008 00000000 RWIX CPU_TIMER2 00000c10 00000008 00000008 00000000 RWIX PIE_CTRL 00000ce0 00000020 0000001a 00000006 RWIX PIE_VECT 00000d00 00000200 000001c0 00000040 RWIX DMA 00001000 00000200 000000e0 00000120 RWIX CLA1 00001400 00000040 0000003e 00000002 RWIX EMIF2_CS2n 00002000 00001000 00000000 00001000 RWIX EPWM1 00004000 00000100 00000100 00000000 RWIX EPWM2 00004100 00000100 00000100 00000000 RWIX EPWM3 00004200 00000100 00000100 00000000 RWIX EPWM4 00004300 00000100 00000100 00000000 RWIX EPWM5 00004400 00000100 00000100 00000000 RWIX EPWM6 00004500 00000100 00000100 00000000 RWIX EPWM7 00004600 00000100 00000100 00000000 RWIX EPWM8 00004700 00000100 00000100 00000000 RWIX EPWM9 00004800 00000100 00000100 00000000 RWIX EPWM10 00004900 00000100 00000100 00000000 RWIX EPWM11 00004a00 00000100 00000100 00000000 RWIX EPWM12 00004b00 00000100 00000100 00000000 RWIX ECAP1 00005000 00000020 00000020 00000000 RWIX ECAP2 00005020 00000020 00000020 00000000 RWIX ECAP3 00005040 00000020 00000020 00000000 RWIX ECAP4 00005060 00000020 00000020 00000000 RWIX ECAP5 00005080 00000020 00000020 00000000 RWIX ECAP6 000050a0 00000020 00000020 00000000 RWIX EQEP1 00005100 00000040 00000022 0000001e RWIX EQEP2 00005140 00000040 00000022 0000001e RWIX EQEP3 00005180 00000040 00000022 0000001e RWIX DACA 00005c00 00000010 00000008 00000008 RWIX DACB 00005c10 00000010 00000008 00000008 RWIX DACC 00005c20 00000010 00000008 00000008 RWIX CMPSS1 00005c80 00000020 00000020 00000000 RWIX CMPSS2 00005ca0 00000020 00000020 00000000 RWIX CMPSS3 00005cc0 00000020 00000020 00000000 RWIX CMPSS4 00005ce0 00000020 00000020 00000000 RWIX CMPSS5 00005d00 00000020 00000020 00000000 RWIX CMPSS6 00005d20 00000020 00000020 00000000 RWIX CMPSS7 00005d40 00000020 00000020 00000000 RWIX CMPSS8 00005d60 00000020 00000020 00000000 RWIX SDFM1 00005e00 00000080 00000080 00000000 RWIX SDFM2 00005e80 00000080 00000080 00000000 RWIX MCBSPA 00006000 00000040 00000024 0000001c RWIX MCBSPB 00006040 00000040 00000024 0000001c RWIX SPIA 00006100 00000010 00000010 00000000 RWIX SPIB 00006110 00000010 00000010 00000000 RWIX *** 00006120 00000010 00000010 00000000 RWIX SPID 00006130 00000010 00000000 00000010 RWIX UPP 00006200 00000100 00000048 000000b8 RWIX WD 00007000 00000040 0000002b 00000015 RWIX NMIINTRUPT 00007060 00000010 00000007 00000009 RWIX XINT 00007070 00000010 0000000b 00000005 RWIX SCIA 00007200 00000010 00000010 00000000 RWIX SCIB 00007210 00000010 00000010 00000000 RWIX SCIC 00007220 00000010 00000010 00000000 RWIX SCID 00007230 00000010 00000010 00000000 RWIX I2CA 00007300 00000040 00000022 0000001e RWIX I2CB 00007340 00000040 00000022 0000001e RWIX ADCA 00007400 00000080 00000080 00000000 RWIX ADCB 00007480 00000080 00000080 00000000 RWIX ADCC 00007500 00000080 00000080 00000000 RWIX ADCD 00007580 00000080 00000080 00000000 RWIX INPUT_XBAR 00007900 00000020 00000020 00000000 RWIX XBAR 00007920 00000020 00000020 00000000 RWIX SYNC_SOC 00007940 00000010 00000006 0000000a RWIX DMACLASRCSEL 00007980 00000040 0000001a 00000026 RWIX EPWM_XBAR 00007a00 00000040 00000040 00000000 RWIX CLB_XBAR 00007a40 00000040 00000000 00000040 RWIX OUTPUT_XBAR 00007a80 00000040 00000040 00000000 RWIX GPIOCTRL 00007c00 00000180 00000180 00000000 RWIX GPIODAT 00007f00 00000030 00000030 00000000 RWIX RAMLS5 0000a800 00000800 000004da 00000326 RWIX RAMD1 0000b800 00000800 00000000 00000800 RWIX RAMGS0 0000c000 00001000 00000000 00001000 RWIX RAMGS1 0000d000 00001000 00000000 00001000 RWIX RAMGS2 0000e000 00001000 00000000 00001000 RWIX RAMGS3 0000f000 00001000 00000000 00001000 RWIX RAMGS4 00010000 00001000 00000000 00001000 RWIX RAMGS5 00011000 00001000 00000000 00001000 RWIX RAMGS6 00012000 00001000 00000000 00001000 RWIX RAMGS7 00013000 00001000 00000000 00001000 RWIX RAMGS8 00014000 00001000 00000000 00001000 RWIX RAMGS9 00015000 00001000 00000000 00001000 RWIX RAMGS10 00016000 00001000 00000000 00001000 RWIX RAMGS11 00017000 00001000 00000000 00001000 RWIX RAMGS12 00018000 00001000 00000000 00001000 RWIX RAMGS13 00019000 00001000 00000000 00001000 RWIX CPU2TOCPU1RAM 0003f800 00000400 00000000 00000400 RWIX CPU1TOCPU2RAM 0003fc00 00000400 00000000 00000400 RWIX EMIF1 00047000 00000800 00000070 00000790 RWIX EMIF2 00047800 00000800 00000070 00000790 RWIX CANA 00048000 00000800 00000164 0000069c RWIX CANB 0004a000 00000800 00000164 0000069c RWIX IPC 00050000 00000024 00000024 00000000 RWIX FLASHPUMPSEMAPHORE 00050024 00000002 00000002 00000000 RWIX DEV_CFG 0005d000 00000180 0000012e 00000052 RWIX ANALOG_SUBSYS 0005d180 00000080 00000048 00000038 RWIX CLK_CFG 0005d200 00000100 00000032 000000ce RWIX CPU_SYS 0005d300 00000100 00000082 0000007e RWIX ROMPREFETCH 0005e608 00000002 00000002 00000000 RWIX DCSM_Z1 0005f000 00000030 00000024 0000000c RWIX DCSM_Z2 0005f040 00000030 00000024 0000000c RWIX DCSM_COMMON 0005f070 00000010 00000008 00000008 RWIX MEMCFG 0005f400 00000080 00000080 00000000 RWIX EMIF1CONFIG 0005f480 00000020 00000020 00000000 RWIX EMIF2CONFIG 0005f4a0 00000020 00000020 00000000 RWIX ACCESSPROTECTION 0005f4c0 00000040 00000040 00000000 RWIX MEMORYERROR 0005f500 00000040 00000040 00000000 RWIX ROMWAITSTATE 0005f540 00000002 00000002 00000000 RWIX FLASH0_CTRL 0005f800 00000300 00000182 0000017e RWIX FLASH0_ECC 0005fb00 00000040 00000028 00000018 RWIX DCSM_Z1_OTP 00078000 00000020 00000020 00000000 RWIX DCSM_Z2_OTP 00078200 00000020 00000020 00000000 RWIX EMIF1_CS2n 00100000 00200000 00000000 00200000 RWIX EMIF1_CS3n 00300000 00080000 00000000 00080000 RWIX EMIF1_CS4n 00380000 00060000 00000000 00060000 RWIX EMIF1_CS0n 80000000 10000000 00000000 10000000 RWIX EMIF2_CS0n 90000000 10000000 00000000 10000000 RWIX

SECTION ALLOCATION MAP

output attributes/section page origin length input sections——– —- ———- ———- —————-.cinit 0 00082000 000009dd 00082000 00000974 GLOBAL.obj (.cinit) 00082974 00000018 F2837xD_DefaultISR.obj (.cinit) 0008298c 0000000e rts2800_fpu32.lib : exit.c.obj (.cinit) 0008299a 0000000c MONITOR.obj (.cinit) 000829a6 0000000c emif1_16bit_asram.obj (.cinit) 000829b2 0000000b emif1_16bit_asram.obj (.cinit:_s16ReadTest) 000829bd 00000005 rts2800_fpu32.lib : _lock.c.obj (.cinit:__lock) 000829c2 00000005 : _lock.c.obj (.cinit:__unlock) 000829c7 00000004 F2837xD_sci_io.obj (.cinit) 000829cb 00000004 GLOBAL.obj (.cinit:_u16SciARxBuff) 000829cf 00000004 GLOBAL.obj (.cinit:_u16SciATxBuff) 000829d3 00000004 GLOBAL.obj (.cinit:_u16SciBRxBuff) 000829d7 00000004 GLOBAL.obj (.cinit:_u16SciBTxBuff) 000829db 00000002 –HOLE– [fill = 0]

.pinit 0 00082000 00000000 UNINITIALIZED

codestart * 0 00080000 00000002 00080000 00000002 F2837xD_CodeStartBranch.obj (codestart)

.stack 1 00000400 00000100 UNINITIALIZED 00000400 00000100 –HOLE–

.reset 0 003fffc0 00000002 DSECT 003fffc0 00000002 rts2800_fpu32.lib : boot28.asm.obj (.reset)

.TI.ramfunc * 0 00086000 0000003b RUN ADDR = 00008000 00086000 00000037 F2837xD_SysCtrl.obj (.TI.ramfunc) 00086037 00000004 F2837xD_usDelay.obj (.TI.ramfunc)

赞(0)
未经允许不得转载:TI中文支持网 » TMS320F28377D: 重新上电不能工作
分享到: 更多 (0)