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.

[参考译文] TMS320F280025C:连接器命令设置问题。

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

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1218962/tms320f280025c-problems-with-linker-command-settings

器件型号:TMS320F280025C

我使用的是 Launchpad、但我有一个问题。

使用基于 RAM 的寻址、可以毫无问题地建立调试连接。

调试连接时、基于闪存的寻址有时会生成以下错误消息。

为什么会这样呢?

外部闪存

begin:origin = 0x080000、length = 0x000002
BOOT_RSVD:origin = 0x00000002、length = 0x00000126
RAMM0:origin = 0x00000128、length = 0x000002D8
RAMM1:origin = 0x00000400,length = 0x000003F8 /*片上 RAM 块 M1 */
// RAMM1_RSVD:origin = 0x000007F8,length = 0x00000008 /*根据勘误建议"存储器:预取超出有效存储器"*/,保留并不用于代码

/* RAMLS4:origin = 0x0000A000、length = 0x00000800
RAMLS5 : origin = 0x0000A800, length = 0x00000800
RAMLS6:origin = 0x0000B000、length = 0x00000800
RAMLS7:origin = 0x0000B800,length = 0x00000800*/

/*组合所有 LS RAM */
RAMLS4567:origin = 0x0000A000、length = 0x00002000
RAMGS0:origin = 0x0000C000、length = 0x000007F8
// RAMGS0_RSVD:origin = 0x0000C7F8,length = 0x00000008 /*保留不使用勘误建议"存储器:预取超出有效存储器"中的代码*/


// FLASHBANK1:origin = 0x00080000,length = 0x0000FFF0
// FLASH_BANK1_RSVD:origin = 0x0008FFF0,length = 0x00000010 /*根据勘误建议"内存:预取超出有效内存"*/,保留代码,但不用于此代码
BootROM:origin = 0x003F0000,length = 0x00008000
BootROM_EXT:origin = 0x003F8000、length = 0x00007FC0
复位:origin = 0x003FFFC0、length = 0x00000002
/*闪存扇区*/
/*组0 */
FLASH_BANK0_SEC0:origin = 0x080002,length = 0x000FFE /*片上闪存*/
FLASH_BANK0_SEC1:origin = 0x081000、length = 0x001000 /*片上闪存*/
FLASH_BANK0_sec2:origin = 0x082000、length = 0x001000 /*片上闪存*/
FLASH_BANK0_SEC3:origin = 0x083000、length = 0x001000 /*片上闪存*/
FLASH_BANK0_SEC4:origin = 0x084000、length = 0x001000 /*片上闪存*/
FLASH_BANK0_SEC5:origin = 0x085000,length = 0x001000 /*片上闪存*/
FLASH_BANK0_SEC6:origin = 0x086000、length = 0x001000 /*片上 Flash */
FLASH_BANK0_sec7:origin = 0x087000,length = 0x001000 /*片上 Flash */
FLASH_BANK0_SEC8:origin = 0x088000、length = 0x001000 /*片上 Flash */
FLASH_BANK0_SEC9:origin = 0x089000,length = 0x001000 /*片上 Flash */
FLASH_BANK0_SEC10:origin = 0x08A000,length = 0x001000 /*片上闪存*/
FLASH_BANK0_SEC11:origin = 0x08B000、length = 0x001000 /*片上闪存*/
FLASH_BANK0_SEC12:origin = 0x08C000,length = 0x001000 /*片上闪存*/
FLASH_BANK0_SEC13:origin = 0x08D000、length = 0x001000 /*片上闪存*/
FLASH_BANK0_SEC14:origin = 0x08E000,length = 0x001000 /*片上闪存*/
FLASH_BANK0_SEC15:origin = 0x08F000、length = 0x000FF0 /*片上闪存*/
// FLASH_BANK0_SEC15_RSVD:origin = 0x08FFF0,length = 0x000010 /*保留代码,且不使用勘误建议"存储器:预取有效存储器之外的代码"*/

}


部分

codestart :> beging, align (8)
.text:>> FLASH_BANK0_sec2 | FLASH_BANK0_SEC3 | FLASH_BANK0_SEC4、ALIGN (8)
.cinit:> FLASH_BANK0_SEC1、align (8)
.switch:> FLASH_BANK0_SEC1、ALIGN (8)
.reset:> reset,type = DSECT /*未使用,*/

.stack:> RAMM1.

.init_array:> FLASH_BANK0_SEC1、ALIGN (8)
.. bss :> RAMLS4567
.bss:output:> RAMLS4567
.bss:CIO:> RAMGS0
.const:> FLASH_BANK0_SEC1、ALIGN (8)
.data :> RAMLS4567
.sysmem :> RAMLS4567

ramgs0:> RAMGS0

/*分配 IQ 数学区域:*/
QQIQMath :> RAMLS4567
IQmathTables :> RAMLS4567

.TI.ramfunc:load = FLASH_BANK0_SEC1、
运行= RAMGS0、
Load_start (RamfuncsLoadStart)、
Load_Size (RamfuncsLoadSize)、
Load_End (RamfuncsLoadEnd)、
RUN_START (RamfuncsRunStart)、
RUN_SIZE (RamfuncsRunSize)、
RUN_END (RamfuncsRunEnd)、
对齐(8)

}
/*
//===================================================================
//文件结尾。
//===================================================================
*/

外部闪存

begin:origin = 0x000000、length = 0x000002
BOOT_RSVD:origin = 0x00000002、length = 0x00000126
RAMM0:origin = 0x00000128、length = 0x000002D8
RAMM1:origin = 0x00000400,length = 0x000003F8 /*片上 RAM 块 M1 */
// RAMM1_RSVD:origin = 0x000007F8,length = 0x00000008 /*根据勘误建议"存储器:预取超出有效存储器"*/,保留并不用于代码

/* RAMLS4:origin = 0x0000A000、length = 0x00000800
RAMLS5 : origin = 0x0000A800, length = 0x00000800
RAMLS6:origin = 0x0000B000、length = 0x00000800
RAMLS7:origin = 0x0000B800、length = 0x00000800 */

/*组合所有 LS RAM */
RAMLS4567:origin = 0x0000A000、length = 0x00002000
RAMGS0:origin = 0x0000C000、length = 0x000007F8
// RAMGS0_RSVD:origin = 0x0000C7F8,length = 0x00000008 /*保留不使用勘误建议"存储器:预取超出有效存储器"中的代码*/

复位:origin = 0x003FFFC0、length = 0x00000002

// FLASHBANK1:origin = 0x00080000,length = 0x00010000
/*闪存扇区*/
/*组0 */
FLASH_BANK0_SEC0:origin = 0x080002、length = 0x000FFE
FLASH_BANK0_SEC1:origin = 0x081000、length = 0x001000
FLASH_BANK0_sec2:origin = 0x082000、length = 0x001000
FLASH_BANK0_SEC3:origin = 0x083000、length = 0x001000
FLASH_BANK0_SEC4:origin = 0x084000、length = 0x001000
FLASH_BANK0_SEC5:origin = 0x085000、length = 0x001000
FLASH_BANK0_SEC6:origin = 0x086000、length = 0x001000
FLASH_BANK0_sec7:origin = 0x087000、length = 0x001000
FLASH_BANK0_SEC8:origin = 0x088000、length = 0x001000
FLASH_BANK0_SEC9:origin = 0x089000、length = 0x001000
FLASH_BANK0_SEC10:origin = 0x08A000、length = 0x001000
FLASH_BANK0_SEC11:origin = 0x08B000、length = 0x001000
FLASH_BANK0_SEC12:origin = 0x08C000、length = 0x001000
FLASH_BANK0_SEC13:origin = 0x08D000、length = 0x001000
FLASH_BANK0_SEC14:origin = 0x08E000、length = 0x001000
FLASH_BANK0_SEC15:origin = 0x08F000、length = 0x000FF8
// FLASH_BANK0_SEC15_RSVD:origin = 0x08FFF0,length = 0x000010 /*保留代码,且不使用勘误建议"存储器:预取有效存储器之外的代码"*/

BootROM:origin = 0x003F0000,length = 0x00008000
BootROM_EXT:origin = 0x003F8000、length = 0x00007FC0
}


部分

.text :> RAMLS4567 | RAMGS0
.TI.ramfunc:> RAMM0
.cinit:> RAMM0
.switch:> RAMM0
.reset:> reset,type = DSECT /*未使用,*/
.cio :> RAMGS0
codestart :>开始

.stack:> RAMM1.
#if defined (__TI_EABI __)
.. bss :> RAMLS4567
.bss:output:> RAMLS4567
init_array:> RAMM0
.const :> RAMLS4567 | RAMGS0
.data :> RAMLS4567 | RAMGS0
.sysmem :> RAMLS4567
#else
.pinit :> RAMM0
.ebss :> RAMLS4567
.econst :> RAMLS4567 | RAMGS0
.esysmem :> RAMLS4567
#endif

ramgs0:> RAMGS0

/*分配 IQ 数学区域:*/
IQMath :> RAMLS4567 | RAMGS0
IQmathTables :> RAMLS4567 | RAMGS0
}
/*
//===================================================================
//文件结尾。
//===================================================================
*/

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

    尊敬的 

    即使在使用 CCS/C2000Ware 示例工程中提供的默认链接器命令文件时、是否也会遇到相同的错误?

    谢谢。此致、

    Vamsi

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

    可以。 我仅使用了示例 cmd 文件。

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

    尊敬的 

    您在编译期间是否收到任何警告?

    您正在使用哪个版本的 CCS?

    谢谢。此致、
    Vamsi

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

    感谢您的回答。 我没有警告。 CCS 版本为 V12.2。

    但是、给出了以下优化建议。

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

    说明资源路径位置
    当前优化/调试设置:--opt_level=off --opt_for_speed=2 -g led_ex1_blinky 属性

    说明资源路径位置
    #27010-D 未使用所有可用代码大小。 建议运行 Optimization Assistant 以查找最佳速度与大小设置(--opt_for_speed)。 双击启动。 led_ex1_blinky 属性

    说明资源路径位置
    #27007-D 检测编译没有优化. 建议设置--opt_level=3。 注意:调试功能会降低。 led_ex1_blinky 属性

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

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

    尊敬的 

    1) 1)在本文的第一条消息中、您说在调试连接期间遇到此错误:您能否进一步说明此问题?  您是说您在尝试启动目标连接文件时收到此错误吗?  或在尝试加载 out 文件时出现的情况?

    2) 2)是否可以在 CCS 中检查是否有任何更新、如果有、则进行安装。

    3) 3)是否编程了密码?

    谢谢。此致、

    Vamsi

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

    感谢您的回答。  

    1) 1)在尝试连接调试时发生此错误。 重要的是、正如文中所写的、RAM CMD 没有问题。 只有闪存 CMD 产生错误。

    2) 2) CCS 是最新版本。

    3)没有密码。

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

    尊敬的 SeongMin:

    感谢您提供的信息。

    #1)不使用基于项目的目标配置文件,而是可以单独启动目标配置文件吗?  这将有助于消除工程对调试连接的依赖性。  让我们知道情况如何-基于这一点我们可以进一步分析。

    谢谢。此致、
    Vamsi

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

    尊敬的 SeongMin:

    您对此有任何更新吗? 或者我应该结束这个帖子吗?

    谢谢。此致、
    Vamsi

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

    尊敬的 SeongMin:

    我之所以关闭此帖子、是因为在过去3周内我没有收到您的回复。

    如果您需要进一步的帮助、请打开新帖子。

    谢谢。此致、
    Vamsi