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.

[参考译文] TMS320F2800157:器件无法从闪存引导

Guru**** 2538950 points
Other Parts Discussed in Thread: TMS320F2800157, C2000WARE

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1392901/tms320f2800157-device-not-booting-from-flash

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

工具与软件:

您好!

我目前正在使用 TMS320F2800157 C2000 MCU、似乎无法从闪存引导。 我的开发套件和我们制造的 PCB 之间都存在这个问题。 ROM 中尚未触及引导引脚配置寄存器、因此应选择 GPIO 24和 GPIO 32作为默认引脚布线。 两个引脚均通过开发套件上的开关或 PCB 上的上拉电阻器捆绑为高电平。 我已经在 code composer 版本中附加了由 SYSCFG 生成的链接器文件  12.7.1.00001。我可以使用 XDS110调试器可靠地刷写和调试两个电路板上的 MCU、但在对电路板进行下电上电后、两个 MCU 都不会引导。 请告诉我需要哪些其他信息才能帮助解决此问题。

谢谢、

-Alex

#ifdef generic_flash_lnk

MEMORY
{

    RAMM0                     : origin = 0x000128, length = 0x0002D8
    RAMM1                     : origin = 0x000400, length = 0x0003F8
    RAMLS0                    : origin = 0x008000, length = 0x002000
    RAMLS1                    : origin = 0x00A000, length = 0x001FF8
    FLASH_BANK0_SEC_0_7       : origin = 0x080000, length = 0x002000
    FLASH_BANK0_SEC_8_15      : origin = 0x082000, length = 0x002000
    FLASH_BANK0_SEC_16_23     : origin = 0x084000, length = 0x002000
    FLASH_BANK0_SEC_24_31     : origin = 0x086000, length = 0x002000
    FLASH_BANK0_SEC_32_29     : origin = 0x088000, length = 0x002000
    FLASH_BANK0_SEC_40_47     : origin = 0x08A000, length = 0x002000
    FLASH_BANK0_SEC_48_55     : origin = 0x08C000, length = 0x002000
    FLASH_BANK0_SEC_56_63     : origin = 0x08E000, length = 0x002000
    FLASH_BANK0_SEC_64_71     : origin = 0x090000, length = 0x002000
    FLASH_BANK0_SEC_72_79     : origin = 0x092000, length = 0x002000
    FLASH_BANK0_SEC_80_87     : origin = 0x094000, length = 0x002000
    FLASH_BANK0_SEC_88_95     : origin = 0x096000, length = 0x002000
    FLASH_BANK0_SEC_96_103    : origin = 0x098000, length = 0x002000
    FLASH_BANK0_SEC_104_111   : origin = 0x09A000, length = 0x002000
    FLASH_BANK0_SEC_112_119   : origin = 0x09C000, length = 0x002000
    FLASH_BANK0_SEC_120_127   : origin = 0x09E000, length = 0x001FF0
    RESET                     : origin = 0x3FFFC0, length = 0x000002
}


SECTIONS
{
    //
    // C28x Sections
    //
    .reset               : >  RESET, TYPE = DSECT /* not used, */
    codestart            : >  0x080000
    .text                : >> FLASH_BANK0_SEC_104_111 | FLASH_BANK0_SEC_112_119 | FLASH_BANK0_SEC_120_127 | FLASH_BANK0_SEC_16_23 | FLASH_BANK0_SEC_24_31 | FLASH_BANK0_SEC_32_29 | FLASH_BANK0_SEC_40_47 | FLASH_BANK0_SEC_48_55 | FLASH_BANK0_SEC_56_63 | FLASH_BANK0_SEC_64_71 | FLASH_BANK0_SEC_72_79 | FLASH_BANK0_SEC_80_87 | FLASH_BANK0_SEC_88_95 | FLASH_BANK0_SEC_8_15 | FLASH_BANK0_SEC_96_103,
                              ALIGN(8)
    .TI.ramfunc          :    LOAD >  FLASH_BANK0_SEC_0_7,
                              RUN  >  RAMLS0,
                              TABLE(copyTable_ramfunc),
                              ALIGN(8)
    .binit               : >  FLASH_BANK0_SEC_0_7,
                              ALIGN(8)
    .ovly                : >  FLASH_BANK0_SEC_0_7,
                              ALIGN(8)
    .cinit               : >  FLASH_BANK0_SEC_0_7,
                              ALIGN(8)
    .stack               : >  RAMM1
    .init_array          : >  FLASH_BANK0_SEC_0_7,
                              ALIGN(8)
    .bss                 : >  RAMLS0
    .const               : >  FLASH_BANK0_SEC_32_29,
                              ALIGN(8)
    .data                : >  RAMLS0
    .switch              : >  FLASH_BANK0_SEC_0_7,
                              ALIGN(8)
    .sysmem              : >  RAMLS0

    //
    // User Sections
    //
    FreeRTOS_Heap { *(.freertosHeap) }    >> RAMLS0 | RAMLS1
    FreeRTOS_Stack { *(.freertosStaticStack) }    >> RAMLS0 | RAMLS1
    dclfuncs { *(dclfuncs) }    >  RAMLS0,
                              ALIGN(2)

}

#endif

/*
//===========================================================================
// End of file.
//===========================================================================
*/

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

    您好、Alex、

    你是否为程序设置了"开始"存储器段? 我只在给定的连接器命令文件中看到 codestart 被映射到0x80000。

    谢谢。此致、

    Charles

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

    尊敬的 Charles:

    感谢您的帮助! 看起来不是这样、链接器是从没有分配"开始"段的 SYSCFG 生成的。

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

    是否需要"开始"部分? 我在 SYSCFG 中没有看到该选项、并且在 C28x 编译器链接器指南中的任何位置都没有引用该选项。  

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

    您好、Alex、

    由 SYSCFG 生成、正常。 您是否还可以在将该项目加载到器件后共享该项目的映射文件? 所使用文本的闪存存储体扇区是否为?  

    谢谢!

    Charles

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

    尊敬的 Alexander:

    重新启动后、您会在设备上看到什么行为? 它只是在 BootROM 中挂起吗? 复位器件后、您可以加载与 BootROM 关联的符号以查看其卡住的位置。

    1.加载下拉菜单->加载符号

    2.浏览

    3. C2000Ware_5_02_00_00\libraries\boot_rom\f280015x\rev1\rom_sources\ccs_files\cpu\Release\F280015x_CPU1_full_rom.out

    此致、

    Skyler

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

    复位和加载符号时、我会收到此消息。

    尝试验证加载的程序时、会出现以下错误

    C28xx_CPU1:文件加载程序:验证失败:地址0x008DBC@Program Do Not Match (程序不匹配)请验证目标存储器和存储器映射。

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

    尊敬的 Alexander:

    您能否尝试使用位于 C2000Ware_5_02_00_00\device_support\f280015x\common\cmd 的280015x_generic_flash_lnk.cmd  

    请随时根据需要添加 FreeRTOS 部分。 某些函数(闪存 API、闪存初始化函数等)需要从 RAM 运行、并且我没有在您提供的链接器文件中看到.TI.ramfunc 段被映射到 RAM。

    此致、
    Skyler

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

    您好、Skyler:

    我认为它应该从 RAM 运行、但不会映射到它

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

    此外、示例链接器以相同的方式链接了 ti ramfunc

    我注意到、定义的一些额外存储器区域不存在于 syscfg 链接器中、如"BEGIN"和"保留"、"codestart"实际上从"BEGIN"开始、而不是从闪存地址开始

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

    您好、Alex、

    我们会在第二天内回复您。

    谢谢。此致、

    Charles

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

    Alex、

    是的、这应该是从 RAM 运行、但映射到闪存。  

    除了上述内容外、您是否可以在打开器件(在 Debug 视图中找到)后在 CCS 中对闪存执行内存转储?

    此外,使用上面提到的链接器命令文件的结果是什么?

    谢谢。此致、

    Charles