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.

[参考译文] TMS320F28377D:28377d 芯片处于闪存模式、向 CPU2编程代码不正常

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/764151/tms320f28377d-28377d-chip-in-flash-mode-programming-code-to-cpu2-is-not-normal

器件型号:TMS320F28377D
主题中讨论的其他器件:C2000WARETPS3808

您好, 我使用28377d 设计了一个新的电路板,但在 RAM 模式下,两个 CPU 加载程序成功,而在闪存模式下,只有 CPU1加载程序正常,加载程序到 CPU2有一些错误。错误如下所示:, 我的原理图也附在下面:

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

    您使用什么将代码加载到器件中?

    SAL
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好,感谢您的回复。我正在使用 YXDSP-XDS200仿真器。在闪存模式下,当我想在代码加载到 CPU1后将代码加载到 CPU2时,出现错误。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您是否使用 CCS 加载代码? 通常需要加载两个不同的.outs、每个 CPU 一个。

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

    e2e.ti.com/.../28377_3868C35F7F679F530674FE56_.pdfthanks。我确实使用 CCS 加载我的代码。

    但是、一个项目只能生成一个.out、我有另一个开发板、也使用了28377d 芯片、可以将相同的.out 文件下载到两个 CPU、我上传了原理图、您能帮我比较一下我自己 的原理图吗??我的设计是否有错误

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我不适合看这个。 让我请求另一位工程师提供帮助。

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

    根据提供的错误消息、编程时似乎是 JTAG 或连接问题。 当您尝试对器件进行编程时、您是否仅连接了 XDS-200仿真器? 我在原理图上看到 JTAG 信号(TXK、TDO、TDI、TMS)路由到接头 J3。 我想确保您没有其他任何东西连接到可能干扰这些信号的信号。

    您说您已经尝试从 RAM 在 CPU2上运行您的程序、这起作用了吗? 您能否尝试运行 c2000ware 中的一个双 CPU 示例以确保操作正常。 尝试从 RAM 然后闪存运行(编程和执行) CPU2上的示例。 您可以尝试以下目录中的一个:

    C:\ti\c2000Ware_1_00_06_00\device_support\f2837xd\examples\dual\IPC_GPIO_toggle\cpu02

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

    感谢您的回复、

    我确定我的器件只连接到 XDS-200仿真 器、没有其他信号连接到我的 JTAG 引脚、我将上传我的 JTAG 原理图。

    我已经在 RAM 模式下在 CPU2上运行程序了。请按照您的建议、首先从 RAM 运行项目 IPC_GPIO_toggle\cpu02、并且两个 CPU 正常工作。但是当我尝试在闪存上运行时、会出现相同的错误。此外、 我尝试仅在 CPU2上运行、也有错误、并且经验表明、在将程序加载到 CPU2之前必须在 CPU1上运行。 我将列出错误。

    请访问 wishes.e2e.ti.com/.../dsp_5F00_config.pdf

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

    您好、Tianyi、

    请尝试以下 E2E 前文中的建议:

    https://e2e.ti.com/support/microcontrollers/c2000/f/171/t/397002

    您可以尝试以下步骤吗? 我刚才删除了将代码加载到 CPU1的步骤。 我想确保 CPU1未断开连接。 您之前发送的屏幕截图显示您正在断开 CPU1。

    1) 1)从 Target configurations 窗口启动目标配置(View -> Target Configurations ->右键点击 F28377D CCXML -> Launch Selected configuration)

    2)连接到 CPU1、然后连接到 CPU2 (在调试窗口中、选择 C28xx_CPU1、右键单击->连接目标。 对 C28xx_CPU2执行相同的操作)。

    3) 3)复位 CPU1、然后复位 CPU2 (选择 C28xx_CPU1、然后在调试窗口菜单->运行->复位-> CPU 复位。 为 C28xx_CPU2执行此操作)

    4)在 CPU2中加载代码(选择 C28xx_CPU2、然后在调试窗口菜单中单击"Run"-> Load -> Load program、然后选择要加载到 CPU2的.out 文件)


    最棒的

    Kevin

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    感谢您的建议、
    我已按照您的指导步骤进行步骤操作、但会出现与我首次上传相同的错误。 我有一个开发板,原理图已上载为“28377核心板原理图…pdf”,其操作相同,不会导致错误。 因此、我怀疑我的硬件电路设计是否有一些非法细节、但我可以将程序加载到 CPU1、这表明我的电路可能是正确的。
    您是否认为我的非法原理图设计可能会导致这些错误?

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

    我有点困惑、您有多个板吗? 您28377核心板原理图 您拥有的与"T Ü V S Ü D .pdf "匹配的电路板在加载 CPU1和2时可以按预期工作? 但您有的另一个板没有?

    是否确定在尝试对 CPU2进行编程时已连接 CPU1? 可能尝试上述相同的步骤、但不会重置内核。 此外、在对 CPU2进行编程时、确保 CPU1停止且未运行。

    有关更多详细信息、请参阅以下链接的文章:

    e2e.ti.com/.../553977

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

    您好、Tianyi、

    我不会注意到您的 JTAG 原理图有任何特别错误。 也许在 R65上放置一个0欧姆电阻器而不是100欧姆会有所帮助。 这是我在比较您的原理图和我们的参考设计时唯一能想到的东西。

    最棒的

    Kevin

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

    您是否能够解决此问题? 那么、我将继续并关闭该线程。

    最棒的
    Kevin
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    好的,谢谢、
    我已将 R65替换为0欧姆、但它没有任何帮助。

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

    e2e.ti.com/.../DSP.pdfe2e.ti.com/.../4722.dsp_5F00_config.pdfHiKevin、

     我28377核心板原理图 了两块电路板、电路板与".pdf"匹配是我从其他人那里购买的、并且在加载 CPU1和 CPU2时工作正常(不仅按照您的步骤工作、而且使用 "调试"按钮工作)、电路板有我 想要的错误。

    我确实确保在对 CPU2进行编程时、CPU1已连接并停止。

    我将上传整个28377d 器件、即下面的两个.pdf、您能帮助我检查导致此问题的原因吗? 我发现28377d 芯片中的 WE 引脚未连接到闪存、您认为这可能会产生一些影响吗?(虽然我可以在闪存模式下将程序加载到 CPU1、但这是为什么?)  

    谢谢、祝您一切顺利、

    天一

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

    天一、

    我不理解。 您购买的评估板可以正常工作、但您自己的定制板无法正常工作? 如果是、您是否确定了电路板之间的差异?

    您在讨论我们引脚的外部存储器接口(EMIF)吗? 那么、您使用的是外部闪存吗? 如果您尝试加载此外部闪存、请务必确保包含此连接正确(我们)。

    最棒的

    Kevin

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    尊敬的 Kevin:
    根据您的理解、我自己的电路板无法在闪存模式下对 CPU2进行编程、而购买的电路板甚至可以在相同的操作下进行编程。
    此外、我们的外部存储器接口(EMIF)引脚未连接到我的28377d、因为将要上传的"dsp_io.dsp"、我不理解这种情况不连接会导致一些错误、为什么我可以在这种情况下将程序加载到 CPU1。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Tianyi、

    与我的同事讨论了一些内容后、将程序加载到该外部闪存中是很少见的、该外部闪存使用器件的 EMIF 进行连接。 最初未为 EMIF 配置使用的 GPIO、因此这种外部闪存连接似乎不太可能成为根本问题。

    您能否检查您的定制板上使用的引导模式(请参阅引导模式引脚)与您使用的工作评估板相比? 请使用除 Get-Mode (从闪存引导)之外的引导模式尝试此过程、并查看其是否起作用。

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

    您的意思是、当选择闪存模式或 RAM 模式时、我们的操作仅为28377d (它包含闪存和 RAM)、它与外部闪存的关系更小? 如果是、外部闪存和 SDRAM 发挥什么作用?

    此外、我不知道如何检查引导模式、您能举个例子吗?

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

    天一、

    当您对闪存进行编程时、您将写入内部 F28377d 闪存、而不是外部闪存或 SDRAM。 原理图中的外部 SDRAM 和闪存使用 f28377d's EMIF (外部存储器接口)外设连接、该外设在编程前未初始化。 可以在应用程序中写入外部闪存和 SDRAM、但这不应是 f28377d 程序的存储位置。

    如果检查链接器命令文件中的地址、您可以看到程序存储在存储器中的位置。 它们应该是器件存储器地址。

    引导模式根据某些引脚的状态进行设置。 请参阅下表并尝试"获取模式"以外的引导模式:

    最棒的

    Kevin

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

    尊敬的 Kevin:

    您是说我应该将 gpio72和 gpio84设置为不连接到任何引脚? 什么是 TRST 引脚? 我找不到。

    工作评估板将模式设置为如上所示、EM1D12为 gpio72。 我自己的板也设置为它、但有错误。

    BSET、

    天一

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

    此外、我的模式设置为跟随、它可能是 Get 模式。 几乎我发现、在我将程序加载到 CPU1后、我必须运行它、然后暂停、两次操作后、程序可以加载到 CPU2。 如果我将程序加载到 CPU1未运行且挂起(我是说此时 CPU1也处于挂起  状态)、则会发生上述程序 CPU2错误。

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

    TRST 是器件上的引脚。 请查看数据表以查找哪个引脚。

    您应该针对相应的引导模式上拉/下拉这些引脚。

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

    尊敬的 Kevin:

    我已经检查了 TRST 是否为低电平、因此模式是 EMU 引导模式。 因此、无论我的 gpio84和 gpio72是低电平还是高电平、都不会导致任何结果。但我发现当 gpio84和72是高电平时、我必须首先对 CPU1进行编程、然后运行它并暂停、 我可以对 CPU2进行编程、如果不运行、则对 CPU2进行编程会导致上面所述的错误。当 gpio84和72为低电平时、其操作与之相同、是高电平、CCS 会指向可能处于低功耗模式的位置。

    我想知道为什么我必须在 CPU1中运行程序并在对 CPU2进行编程之前暂停它? 在 EMU 引导模式下、为什么 gpio84和72都是低功耗导致的低功耗模式?

    最棒的
    天一

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

    如果 TRST 为低电平、则不使用仿真(EMU)引导模式。 EMU 引导是唯一要求 TRST 为高电平的选项。

    TRST 为低电平、GPIO 72和84为高电平所描述的模式为 Get Mode、如果未更改、则默认从闪存运行。 如果进行调试或编程、这不是所需的引导模式。

    最棒的
    Kevin
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Kevin、
    在 EMU 引导模式下、我已将 TRSTn 设置为高电平、但会出现已执行的错误。
    此外、在 Get 模式下、我必须首先对 CPU1进行编程、然后运行 CPU1并暂停、并且我可以对 CPU2进行编程、如果不运行、则对 CPU2进行编程会导致上述错误。 造成这种现象的原因?

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

    天一、

    在对 CPU2进行编程之前、应暂停/暂停 CPU1、这是正确的行为。

    使用 GetMode 时、我很困惑您的编程方式。 在此模式下、您应该根本无法连接到器件、除非您更改了 GetMode 的 OTP 配置、但即使这样、我仍然认为您无法连接。

    查看多日技术讲座的"双核处理器间通信"部分、可以帮助您更好地了解双核编程。

    多日 F28379D 技术讲座:

    技术讲座指南:
    http://software-dl.ti.com/trainingTTO/trainingTTO_public_sw/c28x28379/F2837xD_Microcontroller_MDW_2-0.pdf

    最棒的

    Kevin

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

    Kevin、

    我的意思是我必须在 CPU1上运行程序,然后停止,不仅是暂停(将程序成功加载到 CPU1,它是暂停,而且在这种状态下,将程序加载到 CPU2会出现错误,就像我所做的那样)。 我的演示板也处于获取模式。

    此外,我没有连接到重新启动芯片“tps3808”,在连接到芯片后,即使在成功之前 也有错误,错误是与停止相关的错误,如下所示。

    最棒的

    天一

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

    您好、Tianyi、

    能否验证您的目标配置是否适用于 F28377D、而不适用于其他器件:

    此外、最好检查您是否可以在 CCS 中成功擦除闪存。 要执行此操作、请启动目标配置并连接到您的器件。 在顶部的工具栏上、选择"Tools"、然后选择"On-Chip Flash"。 向下滚动至 Erase Settings (擦除设置)并擦除整个闪存。 查看这是否成功。

    最棒的

    Kevin