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.

F28388D自带的demo烧写Flash失败

Other Parts Discussed in Thread: C2000WARE

 

 

 

 

ccs version: v10.1.1

C2000Ware version:3_03_00_00.

ccs project demo:C:\ti\c2000\C2000Ware_3_03_00_00\driverlib\f2838x\examples\c28x\led\led_ex1_blinky

kit board: f28388d control card REV.B

Ti自带的demo用2838x_RAM_lnk_cpu1.cmd文件编译下载,正常运行。

用2838x_FLASH_lnk_cpu1.cmd文件并且激活CPU1_FASH配置。编译下载,正常运行,但是芯片掉电再上电后无法正常运行,好像Flash中的程序已经丢失了。CMD文件如下 

MEMORY

{

/* BEGIN is used for the "boot to Flash" bootloader mode */

BEGIN : origin = 0x080000, length = 0x000002

BOOT_RSVD : origin = 0x000002, length = 0x0001AF /* Part of M0, BOOT rom will use this for stack */

RAMM0 : origin = 0x0001B1, length = 0x00024F

RAMM1 : origin = 0x000400, length = 0x0003F8 /* on-chip RAM block M1 */

// RAMM1_RSVD : origin = 0x0007F8, length = 0x000008 /* Reserve and do not use for code as per the errata advisory "Memory: Prefetching Beyond Valid Memory" */

RAMD0 : origin = 0x00C000, length = 0x000800

RAMD1 : origin = 0x00C800, length = 0x000800

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

RAMLS5 : origin = 0x00A800, length = 0x000800

RAMLS6 : origin = 0x00B000, length = 0x000800

RAMLS7 : origin = 0x00B800, length = 0x000800

RAMGS0 : origin = 0x00D000, length = 0x001000

RAMGS1 : origin = 0x00E000, length = 0x001000

RAMGS2 : origin = 0x00F000, length = 0x001000

RAMGS3 : origin = 0x010000, length = 0x001000

RAMGS4 : origin = 0x011000, length = 0x001000

RAMGS5 : origin = 0x012000, length = 0x001000

RAMGS6 : origin = 0x013000, length = 0x001000

RAMGS7 : origin = 0x014000, length = 0x001000

RAMGS8 : origin = 0x015000, length = 0x001000

RAMGS9 : origin = 0x016000, length = 0x001000

RAMGS10 : origin = 0x017000, length = 0x001000

RAMGS11 : origin = 0x018000, length = 0x001000

RAMGS12 : origin = 0x019000, length = 0x001000

RAMGS13 : origin = 0x01A000, length = 0x001000

RAMGS14 : origin = 0x01B000, length = 0x001000

RAMGS15 : origin = 0x01C000, length = 0x000FF8

// RAMGS15_RSVD : origin = 0x01CFF8, length = 0x000008 /* Reserve and do not use for code as per the errata advisory "Memory: Prefetching Beyond Valid Memory" */

/* Flash sectors */

FLASH0 : origin = 0x080002, length = 0x001FFE /* on-chip Flash */

FLASH1 : origin = 0x082000, length = 0x002000 /* on-chip Flash */

FLASH2 : origin = 0x084000, length = 0x002000 /* on-chip Flash */

FLASH3 : origin = 0x086000, length = 0x002000 /* on-chip Flash */

FLASH4 : origin = 0x088000, length = 0x008000 /* on-chip Flash */

FLASH5 : origin = 0x090000, length = 0x008000 /* on-chip Flash */

FLASH6 : origin = 0x098000, length = 0x008000 /* on-chip Flash */

FLASH7 : origin = 0x0A0000, length = 0x008000 /* on-chip Flash */

FLASH8 : origin = 0x0A8000, length = 0x008000 /* on-chip Flash */

FLASH9 : origin = 0x0B0000, length = 0x008000 /* on-chip Flash */

FLASH10 : origin = 0x0B8000, length = 0x002000 /* on-chip Flash */

FLASH11 : origin = 0x0BA000, length = 0x002000 /* on-chip Flash */

FLASH12 : origin = 0x0BC000, length = 0x002000 /* on-chip Flash */

FLASH13 : origin = 0x0BE000, length = 0x001FF0 /* on-chip Flash */

// FLASH13_RSVD : origin = 0x0BFFF0, length = 0x000010 /* Reserve and do not use for code as per the errata advisory "Memory: Prefetching Beyond Valid Memory" */

CPU1TOCPU2RAM : origin = 0x03A000, length = 0x000800

CPU2TOCPU1RAM : origin = 0x03B000, length = 0x000800

CPUTOCMRAM : origin = 0x039000, length = 0x000800

CMTOCPURAM : origin = 0x038000, length = 0x000800

CANA_MSG_RAM : origin = 0x049000, length = 0x000800

CANB_MSG_RAM : origin = 0x04B000, length = 0x000800

RESET : origin = 0x3FFFC0, length = 0x000002

}

SECTIONS

{

codestart : > BEGIN, ALIGN(8)

.text : >> FLASH1 | FLASH2 | FLASH3 | FLASH4, ALIGN(8)

.cinit : > FLASH4, ALIGN(8)

.switch : > FLASH1, ALIGN(8)

.reset : > RESET, TYPE = DSECT /* not used, */

.stack : > RAMM1

#if defined(__TI_EABI__)

.init_array : > FLASH1, ALIGN(8)

.bss : > RAMLS5

.bss:output : > RAMLS3

.bss:cio : > RAMLS5

.data : > RAMLS5

.sysmem : > RAMLS5

/* Initalized sections go in Flash */

.const : > FLASH5, ALIGN(8)

#else

.pinit : > FLASH1, ALIGN(8)

.ebss : > RAMLS5

.esysmem : > RAMLS5

.cio : > RAMLS5

/* Initalized sections go in Flash */

.econst : >> FLASH4 | FLASH5, ALIGN(8)

#endif

ramgs0 : > RAMGS0, type=NOINIT

ramgs1 : > RAMGS1, type=NOINIT

 

MSGRAM_CPU1_TO_CPU2 : > CPU1TOCPU2RAM, type=NOINIT

MSGRAM_CPU2_TO_CPU1 : > CPU2TOCPU1RAM, type=NOINIT

MSGRAM_CPU_TO_CM : > CPUTOCMRAM, type=NOINIT

MSGRAM_CM_TO_CPU : > CMTOCPURAM, type=NOINIT

/* The following section definition are for SDFM examples */

Filter_RegsFile : > RAMGS0

Filter1_RegsFile : > RAMGS1, fill=0x1111

Filter2_RegsFile : > RAMGS2, fill=0x2222

Filter3_RegsFile : > RAMGS3, fill=0x3333

Filter4_RegsFile : > RAMGS4, fill=0x4444

Difference_RegsFile : >RAMGS5, fill=0x3333

#if defined(__TI_EABI__)

.TI.ramfunc : {} LOAD = FLASH3,

RUN = RAMLS0 | RAMLS1 | RAMLS2 |RAMLS3,

LOAD_START(RamfuncsLoadStart),

LOAD_SIZE(RamfuncsLoadSize),

LOAD_END(RamfuncsLoadEnd),

RUN_START(RamfuncsRunStart),

RUN_SIZE(RamfuncsRunSize),

RUN_END(RamfuncsRunEnd),

ALIGN(8)

#else

.TI.ramfunc : {} LOAD = FLASH3,

RUN = RAMLS0 | RAMLS1 | RAMLS2 |RAMLS3,

LOAD_START(_RamfuncsLoadStart),

LOAD_SIZE(_RamfuncsLoadSize),

LOAD_END(_RamfuncsLoadEnd),

RUN_START(_RamfuncsRunStart),

RUN_SIZE(_RamfuncsRunSize),

RUN_END(_RamfuncsRunEnd),

ALIGN(8)

#endif

}

/*

//===========================================================================

// End of file.

//===========================================================================

*/

 

some important information as follow:

RamfuncsLoadStart: 0x00086000

RamfuncsLoadEnd: 0x00086131

RamfuncsLoadSize: 0x00000131

RamfuncsRunStart: 0x00008000

RamfuncsRunEnd: 0x00008131

RamfuncsRunSize: 0x00000131

  • 您可以先参考一下 该链接  和您的描述一致

    我们会在测试后给您回复

  • 我试了一下是flash下运行,断电后重启可以正常运行的

    请您看一下硬件配置

    www.ti.com.cn/.../spruil8b.pdf

    4.3 Using the controlCARD
  • 上面的链接提供的两种方法也不起作用

    第一种方法:

    • Connect the emulator
    • Set the emulation boot mode to "emulate standalone boot" (write 0xA500 at address 0xD01 via CCS memory watch view)
    • Reset the CPU via CCS reset icon
    • Click on run icon (CCS)

    第二种方法

    • symbol "code_start" in properties -> symbol management

    第二种方法提到的设置code_start,在我的示例工程中默认已经设置了

  • www.ti.com.cn/.../spruil8b.pdf 文档第6节中提到的
    S1 Reset switch: Switch connected to the XRSn line of the F28388D. Pressing this button will pull the device
    reset low.
    我按下这个S1复位按钮程序还是可以正常运行,我将扩展板上的开关拨到EXT-ON(电源是由电脑USB提供的,拨到EXT-ON相当于芯片下电),此时再拨到USB-ON,芯片上电。程序不能正常运行。

    S1:A position1 on和off 都试过了。也不能正常运行。

    我这里有两个F28388D的开发板,用了不同的电脑去尝试,也都不行。

    其他的配置都正常,请帮忙分析一下还有什么其他原因吗?
  • 您好,已经解决了,在第6节的Table 3. S2, Bootmode Selection Table有描述
  • 很高兴您能解决问题!