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:XDS110写入失败

Guru**** 2445680 points
Other Parts Discussed in Thread: TMS320F280025C, C2000WARE

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1393026/tms320f280025c-xds110-writing-failure

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

工具与软件:

你好。

现在、我将使用 XDS110、并尝试将软件写入 TMS320F280025C。 但我不能这样做。 配置如 TMS320F280025C 数据表 P76图7-17中所示、并由 TI 传统14引脚(TI14)连接。 XDS110 LED 发出绿光、不是红色。

此外、在写入时的错误代码是"Error-2131@0x0"。 我们必须加快 TMS320F280025C 产品的开发。

提前感谢您。

-------------------------------------------------------- 下面是完整的错误--------------------------------------------------------

IcePick_C_0:连接到目标时出错:(错误-2131 @ 0x0)无法访问器件寄存器。 重置设备、然后重试此操作。 如果错误仍然存在、请确认配置、对电路板进行下电上电、并/或尝试更可靠的 JTAG 设置(例如、降低 TCLK)。 (仿真包12.7.0.00105)  

 

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

    您好!

    您可以在 Code Composer Studio 中打开目标配置文件吗、您可以测试连接吗?   https://www.youtube.com/watch?v=o_2iMqZ1EbU

    如果按照这些说明手动启动调试会话、是否能够连接到器件?  https://software-dl.ti.com/ccs/esd/documents/users_guide/ccs_debug-main.html#launching-a-debug-session

    此致、

    Ben Collier

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

    尊敬的 Benjamin:

    感谢您的答复。
    我仔细检查了一下,发现配置中有一个缺陷。
    我们现在能够写入和检查该操作。

    然而、我们正面临一个新的问题。
    在 syscfg 文件中的"CMD"中、我已经指定将程序写入闪存 ROM。
    在可在 CCS 上检查的"内存分配"中、确认文本位于 FLASH_BANK 中。
    但是、当写入处理器后执行电源复位时、程序会出现意外行为。
    (通过 USB)将同一个项目写入开发板时、不会发生这种情况、并且电源复位会确认项目的运行方式与文档中描述的一样。

    这是否在写作阶段存在某种问题?

    此致、

    Hiroki

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

    尊敬的 Hiroki:

    您将文本部分放在哪里? 您将 codestart 放在哪里?  

    谢谢!

    Ben Collier

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

    尊敬的 Benjamin:

    目前、文本段位于 FLASH_BANK0_SEC2至 FLASH_BANK0_SEC6中。
    代码的起始位置为"从闪存扇区0引导"。

    提前感谢您。

    Hiroki

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

    好的、您能将文本段从扇区0开始吗?  

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

    我们从扇区0开始文本部分。 但是、没有更改、并且在电源复位后程序没有开始运行。
    是否只是出现问题的文本部分?

    提前感谢您的帮助。

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

    尊敬的 Hiroki:  

    在使用 CCS 和仿真器作为 XDS100加载.out 文件时、您是否遇到了这个问题?

    您是否能够在闪存配置中运行 C2000Ware SDK 中存在的任何现有示例(例如 LED 闪烁示例)、执行 POR 并检查它是否在 POR 后运行?

    是否可以共享 lnker cmd 文件进行进一步分析?

    谢谢

    Aswin

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

    我很抱歉。
    我不知道如何附加文件、因此我会直接记下。

    #define FLASH_lnk
    #ifdef flash_lnk

    小程序

    RAMM0:origin = 0x000128、length = 0x0002D8
    RAMM1:origin = 0x000400、length = 0x0003F8
    RAMLS4:origin = 0x00A000、length = 0x000800
    RAMLS5:origin = 0x00A800、length = 0x000800
    RAMLS6:origin = 0x00B000、length = 0x000800
    RAMLS7:origin = 0x00B800、length = 0x000800
    RAMGS0:origin = 0x00C000、length = 0x0007F8
    FLASH_BANK0_SEC0:origin = 0x080000、length = 0x001000
    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 = 0x000FF0
    复位:origin = 0x3FFFC0、length = 0x000002
    }


    部分中)

    //
    // C28x 段
    //
    .reset :> RESET , TYPE = DSECT /* NOT USED ,*/
    codestart :> 0x080000
    .text:>> FLASH_BANK0_SEC0 | FLASH_BANK0_SEC2 | FLASH_BANK0_SEC3 | FLASH_BANK0_SEC4 | FLASH_BANK0_SEC5 | FLASH_BANK0_SEC6、
    对齐(8)
    .TI.ramfunc:load > FLASH_BANK0_SEC1、
    Run > RAMGS0、
    table (copyTable_ramfunc)、
    对齐(8)
    .binit :> FLASH_BANK0_SEC1
    对齐(8)
    .ovly :> FLASH_BANK0_SEC1
    对齐(8)
    .cinit :> FLASH_BANK0_SEC1
    对齐(8)
    .stack :> RAMM1.
    init_array :> flash_BANK0_SEC1
    对齐(8)
    .bss :> RAMLS5.
    .const:> FLASH_BANK0_SEC4、
    对齐(8)
    .data :> RAMLS5.
    .switch :> FLASH_BANK0_SEC1
    对齐(8)
    .sysmem :> RAMLS5.

    }

    #endif

    感谢您的合作。

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

    尊敬的 Hiroki:

    地址0x00000002处有一个 BOOT_RSVD 位置、长度= 0x00000126。

     FLASH_BANK0_SEC0 origin 将为 0x080000 +  0x00000002、即 长度为0x000FFE 的0x080002。

    请查看 SDK 中位于 C2000Ware\device_support\f28002x\common\cmd 的现有闪存链接器 cmd 文件(28002x_generic_flash_lnk.cmd)   、以作参考。

    请尝试使用 thisdk 中的 cmd 文件、并告知我是否正在解决您的问题。

    谢谢

    Aswin

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

    尊敬的 Aswin:

    我明白你在说什么。 但现在、我将使用 syscfg 文件生成 lnkcmd 文件。
    在本例中、当我尝试使用闪存的默认配置时、FLASH_BANK_SEC0的起始位置为0x080000。
    在使用 syscfg 文件时、是否可以将配置更改为您提到的配置?
    或者、是否可以更快地将您提供给我们的示例文件调整到我们的项目中?
    我想知道如何做到这一点。

    感谢您的合作。

    Hiroki

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

    尊敬的 Hiroki:  

    我在上一次答复中提到的问题、能否作一下评论?

    • 在使用 CCS 和仿真器作为 XDS100加载.out 文件时、您是否遇到了这个问题?
    • 您是否能够在闪存配置中运行 C2000Ware SDK 中存在的任何现有示例(例如 LED 闪烁示例)、执行 POR 并检查它是否在 POR 后运行?

    谢谢

    Aswin

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

    尊敬的 Aswin:

    我使用了 C2000ware 样例中的 GPIO 切换工程。
    在 CMD 中作为默认值存在的"GENERIC_FLASH_lnk"被设置为"Active"并被写入、该程序经确认可正常运行。
    但是、当执行 POR 时、程序不起作用。

    感谢您的合作。

    Hiroki

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

    尊敬的 Hiroki:

    我能够在控制卡中运行示例、但 我选择切换的 GPIO 是 GPIO31、可以将其视为 LED。

    请检查器件中的引导模式设置、S4开关应为1 1、以便从闪存引导。

    谢谢

    Aswin

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

    尊敬的 Aswin:

    我很抱歉。
    我没有足够的信息。
    我目前不在评估板上工作、但正在尝试使用 JTAG 将项目编写到安装在其中一个评估板上的处理器。
    我知道、没有开关。

    感谢您的合作。

    Hiroki

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

    尊敬的 Hiroki:  

    现在、请告诉我、您已按照以下步骤在闪存中运行示例-  

    1) 1)将构建配置设置为 set active -> CPU_FLASH

    2) 2)在链接器 cmd 中选择通用闪存并构建、然后运行示例。

    3) 3)您可以看到闪存位置正在更新。

    4)执行了 POR 并进行了检查

    将同一个项目写入开发板(通过 USB)时、不会发生这种情况、并且电源复位确认该项目的行为与文档相符。

    让我给 JTAG 专家讲解一下。

    谢谢

    Aswin

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

    Hiroki、

    此 MCU 上有默认的"BOOT 引脚"。 根据这些引脚是高电平还是低电平、器件将以特定模式启动。

    通过写入 OTP、可以对 MCU 进行永久编程以始终使用特定的引导模式。

    如何配置 MCU 的引导模式? 您需要确保 MCU 使用的是闪存引导模式。

    此外、 请在链接器 CMD 工具中检查以下三项:  

    1.确保选择正确的 CMD 配置为活动状态

    2.确保设置 FLASH 默认值

    3.确保 codestart 位置正确。 在某些较旧的版本中、闪存默认按钮无法正确设置 codestart。  

    此致、

    Ben Collier

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

    本杰明、您好!

    抱歉、我不明白"写入 OTP"是什么意思、因为我还不能完全理解这个 MCU。
    但我检查了 MCU 并发现 GPIO24和 GPIO32为引导引脚、因此我将这两个引脚设置为高电平、并且我的写入项目在电源复位后启动。
    我的理解是否正确、如果我提前拔出这两个引脚、项目将使用闪存进行引导?

    感谢您的合作。

    Hiroki

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

    您好!

    我理解是否正确、如果我提前拔出这两个引脚、项目将使用闪存启动?

    没错。 如果您浏览 TRM 的"系统控制"部分的"引导"部分、您将找到有关这一切的说明。

    写入 OTP 意味着写入到"一次性可编程"存储器中。 由于它只能被写入一次、它被用于永久设置。  

    这些永久设置之一是让 MCU 忽略引导模式引脚、并始终以相同的引导模式引导。 您可以在上述引导模式下阅读有关这方面的内容。  

    此致、

    Ben Collier  

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

    尊敬的 Benjamin:

    是的、先生。
    非常感谢。

    另外、您能告诉我如何写入 OTP 吗?
    目前、我对引脚数量没有问题、但我想知道的是、因为我将来可能会耗尽引脚。

    很抱歉问了所有问题、但提前感谢您。

    Hiroki

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

    Hiroki、

    以下是使用我们的 GUI 工具对 OTP 进行编程的指南: https://www.ti.com/lit/pdf/spracp8

    该工具称为 DCSM 工具、因为它的主要重点是在 OTP 中编程安全代码、但您也可以使用它来编程引导设置。 只需在应用手册中搜索"boot"即可。

    此致、

    Ben Collier