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.

[参考译文] TMS570LC4357-TMS570:通过 EP 在不同矢量地址处调试 TMS570 器件

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1622235/tms570lc4357-ep-debugging-tms570-device-through-ccs-at-different-vector-addresses

器件型号: TMS570LC4357-TMS570LC4357 EP

您好:

我正在使用引导加载程序处理一个应用程序。 我希望能够在应用上运行调试器、而无需担心引导加载程序。 我将引导加载程序刷写到应用程序启动地址 0x00040000 之前的各个段中、并得到.cmd 链接器文件、如下所示。

在 CCS 中、我在调试闪存设置中为闪存取消了扇区 0-7、并启用了其他扇区。 引导加载程序工程刷写扇区 0-7、可以进行调试。 但是、我无法调试应用、似乎已经刷写、但调试器会立即暂停在地址 0x00000004(未定义符号)的执行。 是否有办法使用 CCS 在我的应用上直接运行调试器?

--retain="*(.intvecs)"
--retain="*(.app_version)"

/*----------------------------------------------------------------------------*/
/* Memory Map                                                                 */

MEMORY
{
	// Flash or ECC is typically written on 8-byte boundaries, so keep everything aligned to 8-byte boundaries
    APP_VECTORS  (X)   : origin=0x00040000 length=0x00000020 fill=0xffffffff
    APP_VER      (RX)  : origin=0x00040020 length=0x00000020 vfill=0xffffffff
    APP_FLASH    (RX)  : origin=0x00040040 length=0x001AFFB0 vfill=0xffffffff
    FLASH1       (RX)  : origin=0x00200000 length=0x00200000 vfill=0xffffffff

    STACKS      (RW)  : origin=0x08000000 length=0x00001500
    RAM         (RW)  : origin=0x08001500 length=0x00076B00

    RAM_EXE     (RWX) : origin=0x08078000 length=0x00004000
    SHAREDRAM   (RW)  : origin=0x0807C000 length=0x00004000

/* Bank 0 ECC */
    ECC_VEC  (R) : origin=(0xf0400000 + (start(APP_VECTORS) >> 3))
                   length=(size(APP_VECTORS) >> 3)
                   ECC={algorithm=algoL2R5F021, input_range=APP_VECTORS}

    ECC_APP_VER (R) : origin=(0xf0400000 + (start(APP_VER)  >> 3))
                   length=(size(APP_VER)  >> 3)
                   ECC={algorithm=algoL2R5F021, input_range=APP_VER }

    ECC_APP_FLA (R) : origin=(0xf0400000 + (start(APP_FLASH)  >> 3))
                   length=(size(APP_FLASH)  >> 3)
                   ECC={algorithm=algoL2R5F021, input_range=APP_FLASH }

/* Bank 1 ECC */
    ECC_FLA1 (R) : origin=(0xf0400000 + (start(FLASH1)  >> 3))
                   length=(size(FLASH1)  >> 3)
                   ECC={algorithm=algoL2R5F021, input_range=FLASH1 }

}

/*----------------------------------------------------------------------------*/
/* Section Configuration                                                      */

SECTIONS
{
    .intvecs     : {} palign(8) > APP_VECTORS
    .app_version : {} palign(8) > APP_VER
	.sharedRAM   : {} palign(8) > SHAREDRAM

    .text   : {} palign(8) > APP_FLASH
    .const  : {} palign(8) > APP_FLASH
    .cinit  : {} palign(8) > APP_FLASH
    .pinit  : {} palign(8) > APP_FLASH

    .stack	: {} > STACKS
    .bss    : {} > RAM
    .data   : {} > RAM
    .sysmem : {} > RAM

    .stflash_SRAM :
		LOAD = APP_FLASH,
    	RUN = RAM_EXE,
		LOAD_START(flashSTLoadStart),
		LOAD_SIZE(flashSTSize),
		RUN_START(flashSTStartAddr), ALIGN(8)

}

/*----------------------------------------------------------------------------*/
/* Misc                                                                       */
ECC {
    algoL2R5F021 : address_mask = 0xfffffff8 /* Address Bits 31:3 */
                   hamming_mask = R4         /* Use R4/R5 build in Mask */
                   parity_mask  = 0x0c       /* Set which ECC bits are Even and Odd parity */
                   mirroring    = F021       /* RM57Lx and TMS570LCx are build in F021 */
}
/*----------------------------------------------------------------------------*/

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

    斯宾塞、

    感谢您联系 E2E。  请再给我们一天时间、将其发送给正确的团队专家。

    此致、

    Matthew

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

    您好、Spencer、

    在应用程序中邮件函数的开头设置一个具有全局变量控制的 while 循环、如下所示

    uint8_t 环路= 1;

    while(循环)

    }

    现在、构建您的应用代码并将引导加载程序和应用程序代码都放入闪存中、然后按照我在以下主题中提到的步骤操作:

    (+) TMS570LC4357:TMS570LC4357 — 基于 Arm 的微控制器论坛 — 基于 Arm 的微控制器 — TI E2E 支持论坛

    按照上述注释中的所有步骤操作。 执行上述步骤后、代码最终应该停止在我们在 main 函数中声明的 while 循环。

    此后、您现在可以将循环变量值更改为 0、然后可以在应用中进行分步调试。

    --
    此致、
    Jagadish。