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.

[参考译文] TMS320C6748:在 DDR 中加载程序时、XDS110无法进行编程

Guru**** 2617695 points

Other Parts Discussed in Thread: TMS320C6748

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/661025/tms320c6748-failed-to-program-by-xds110-when-program-loaded-in-ddr

器件型号:TMS320C6748

您好!

我一直在 C6748中进行编程。 我一直在使用 SHRAM 加载代码的所有部分。 然后使用 XDS110正确编译和烧录程序。 当我尝试在构建正确的 DDR 程序中加载程序时、但无法进行编程。 我遇到错误:

C674x_0:文件加载器:验证失败:地址0xC0000000处的值不匹配请验证目标存储器和存储器映射。
C674x_0:GEL:文件:D:\difar_intr \Debug\difar_intr:发生数据验证错误、文件加载失败。

我没有任何 GEL 文件。 下面给出了我的.cmd。

/ /
/* C6748.cmd */
//版权所有(c) 2010 Texas Instruments Incorporated */
/**//
/*说明:此文件是示例链接器命令文件,可以是*/
/*用于链接使用 C 编译器构建的程序和*/
/*在 C6748上运行生成的.out 文件*/
/*设备。 将其用作指南。 您将需要*/
/*更改内存布局以匹配您的特定 c6xxx */
/*目标系统。 您可能需要更改分配*/
/*方案,根据程序的大小而定。 *
/**//
/ /

-stack 0x2000
堆0x1000

存储器

DSPL2ROM o = 0x00700000 l = 0x00010000 // 1MB L2内部 ROM */
DSPL2RAM o = 0x00800000 l = 0x00040000 // 256KB L2内部 RAM */
DSPL1PRAM o = 0x00E00000 l = 0x00008000 // 32kB L1内部程序 RAM *
DSPL1DRAM o = 0x00F00000 l = 0x00008000 // 32kB L1内部数据 RAM *
SHDSPL2ROM o = 0x11700000 l = 0x00010000 // 1MB L2共享内部 ROM */
SHDSPL2RAM o = 0x11800000 l = 0x00040000 // 256KB L2共享内部 RAM */
SHDSPL1PRAM o = 0x11E00000 l = 0x00008000 // 32kB L1共享内部程序 RAM *
SHDSPL1DRAM o = 0x11F00000 l = 0x00008000 // 32kB L1共享内部数据 RAM *
EMIFACS0 o = 0x40000000 l = 0x20000000 // 512MB SDRAM 数据(CS0)*/
EMIFACS2 o = 0x60000000 l = 0x02000000 // 32MB 异步数据(CS2)*/
EMIFACS3 o = 0x62000000 l = 0x02000000 /* 32MB 异步数据(CS3)*/
EMIFACS4 o = 0x64000000 l = 0x02000000 /* 32MB 异步数据(CS4)*/
EMIFACS5 o = 0x66000000 l = 0x02000000 // 32MB 异步数据(CS5)*/
SHRAM o = 0x8000000 l = 0x00020000 // 128KB 共享 RAM */
DDR2 o = 0xC0000000 l = 0x08000000 // 128MB DDR2数据*/

部分

.text > DDR2
.stack > DDR2
.bss > DDR2
.cio > DDR2
.const > DDR2
.data > DDR2
.switch > DDR2
.sysmem > DDR2
.far > DDR2
.args > DDR2
.ppdinfo > DDR2
.ppdata > DDR2

/* COFF 段*/
.pinit > DDR2
.cinit > DDR2

/* EABI SECTIONS *
.binit > DDR2
init_array > DDR2
.neeardata > DDR2
.fardata > DDR2
.rodata > DDR2
.c6xabi.exidx > DDR2
.c6xabi.extab > DDR2

我尚未启用任何调试器内存映射。 我检查了数据验证错误 wiki 页面,但无法解决问题。 我是否应该在 C 程序中额外执行一些 DDR 初始化以加载到 DDR? 请帮助。

提前感谢。

相关信息

Shalini

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    团队将收到通知。 他们将直接在此处发布反馈。

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

    地址0xC0000000对应于必须使用 GEL 脚本初始化的 DDR 存储器。 如果您使用的是 LCDK 板、请确保为 LCDKC6748而不是 TMS320C6748创建目标配置。

    有关 GEL 文件和目标配置的更多详细信息、请访问 :software-dl.ti.com/.../sdto_ccs_debug-handbook.html
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好!

    感谢您的回复。 但是、我直到现在才使用.gel 文件、仅使用.cmd 文件、并使用片上 RAM ROM 和共享 RAM ROM 成功编程。 为什么现在应该使用 GEL 脚本?

    提前感谢

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

    这是因为您现在要将代码加载到 DDR 中、但在这样做之前、您需要初始化 DDR。 这无法通过代码来完成、因为在 DDR 初始化之前无法加载。 这需要在启动时完成、通常使用 GEL 文件或引导加载程序。

    如果您使用的是 C6748 LCDK 板、则可以在 C:\ti\ccsv7\ccs_base\emulation\boards\lcdkc6748\gel 中找到它的 GEL 文件。 您可以通过转至 Advanced (高级)选项卡->C674x_0并在初始化脚本字段中选择它来将其添加到目标配置中。

    如果您想了解有关 GEL 文件的更多信息、我建议查看此 pdf: www.ti.com/.../spraa74a.pdf
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好!

    感谢您的回复。 我能够使用 GEL 文件进行编程。 但是、当我使用 GEL 文件进行编程时、程序不会进入 I2C 环回的 ISR。 我使用 GEL 文件尝试了 SHRAM 中的所有段。 程序仍然不会进入 I2C ISR。 但是、当我删除.gel 文件时、仍然在 SHRAM 程序控制中的所有段都将进入 I2C ISR、程序工作文件。 为什么会发生这种情况?

    提前感谢

    相关信息
    Shalini