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.

[参考译文] TMS320F28374S:在程序代码之外

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1381922/tms320f28374s-outside-of-program-code

器件型号:TMS320F28374S
Thread 中讨论的其他器件:C2000WARE

工具与软件:

LS05SARAM: 源= 0x008000、长度= 0x008000

.ebss :> LS05SARAM  页面= 1.

它显示 LS05SARAM 已使用0x4e5d

但在添加数组后、编译通过。     当加载程序 完成时、我们使用 XDS2XX 调试器仿真器将其刷写、但不会跳转到主函数、而是跳转到以下内容

代码从0X86000开始、已写入。 但绝不会跳到那里。

我们改变数组在定义它的位置,例如将它从  RRr.c 文件移动到 aaa.c 文件,它的工作正常。 我们检查 阵列 是否仍处于 LS05SARAM 中、但改变了位置。   LS05SARAM 仍在使用0x4e5d。

那么、是什么原因导致了这一点?

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

    您好!

    地址0x3FE493看起来像是程序跳转到了 ITRAP ISR:

    这意味着您可能尝试执行了一条非法指令:

    为了澄清、您是否修改了连接器命令文件? 如果是、作了哪些修改?

    您是否完全在使用 DCSM?

    此致、

    Allison

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

    感谢您的答复

    未使用 DCSM。 该 命令的位置如下:

    小程序

    第0页:
    D01SARAM:origin = 0x00CE00、length = 0x000100
    M01SARAM0:origin = 0x000122、length = 0x0002DE  
    begin:origin = 0x086000、length = 0x000002

    FLASHD:origin = 0x086002、length = 0x001FFE /*片上闪存*/
    FLASHE:origin = 0x088000、length = 0x023000 /*片上闪存*/

    FLASHI:origin = 0x0AB000、length = 0x008000 /*片上闪存*/

    复位:origin = 0x3FFFC0、length = 0x000002
    RAMGS0:origin = 0x010000、length = 0x006000

    第1页:  

    BOOT_RSVD:origin = 0x000002、length = 0x000120
    M01SARAM:origin = 0x000400、length = 0x000400 /*片上 RAM */
    LS05SARAM:origin = 0x008000、length = 0x008000 /*片上 RAM */
    RAMGS2:origin = 0x016000、length = 0x002000
    }

    部分中)

    /*分配方案领域:*/
    cinit :> FLASHE PAGE = 0, ALIGN(4)
    .binit :> FLASHE PAGE = 0, ALIGN(4)
    .pinit :> FLASHE PAGE = 0, ALIGN(4)
    .text :> FLASHE PAGE = 0
    codestart :> begin page = 0
    ramfuncs:load = FLASHE page = 0
    RUN = RAMGS0 //PAGE = 1
    Load_start (_RamfuncsLoadStart)、
    Load_Size (_RamfuncsLoadSize)、
    Load_End (_RamfuncsLoadEnd)、
    RUN_START (_RamfuncsRunStart)、
    RUN_SIZE (_RamfuncsRunSize)、
    RUN_END (_RamfuncsRunEnd)

    CtrlFileRamFuncs : load=FLASHE,
    RUN = RAMGS0、
    Load_start (_BoostCtrlFileRamFuncs_loadstart)、
    load_end (_BoostCtrlFileRamFuncs_loadend)、
    RUN_START (_BoostCtrlFileRamFuncs_runstart)
    PAGE = 0、ALIGN (4)
    stack:>M01SARAM 页面= 1.
    .ebss :> LS05SARAM 页面= 1.
    .esysmem :> RAMGS2 page = 1.
    .cio :> RAMGS2页面= 1.

    econst :> FLASHD | FLASHI PAGE = 0
    .switch :> FLASHD | FLASHI PAGE = 0
    .args :> FLASHD | FLASHI PAGE = 0
    .reset :> RESET , PAGE = 0, TYPE = DSECT /*未使用,*/
    }

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

    您好、Jane:

    您是否使用 C2000ware 示例作为起点? 如果是、您可以从示例中总结对链接器 cmd 文件所做的更改以及进行这些更改的目的吗、我会尝试提供一些帮助吗? 除非有完全必要、否则通常不建议编辑链接器 cmd 文件、因为这必须仔细完成。

    用户还可以查看.map 文件以确保将程序分配给预期的存储器部分。

    此致、

    Delaney

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

    我们添加的阵列映射在  LS05SARAM 部分 0x008000、但为什么无法跳转到 main ()

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

    您好、Jane:

      获得此错误时、您是否尝试使用闪存或 RAM 构建? 如果该阵列已正确添加到 LSRAM0-5块、则器件启动和分支到 main 应该不会出现问题。 您能总结一下对链接器 cmd 文件所做的所有更改、以及您作为起点使用了哪个文件、以便我们能够准确找出问题吗?

    此致、

    Delaney