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.

[参考译文] TMS320F28379D:无法在两个 CPU 中上传.out 文件。

Guru**** 2460850 points
Other Parts Discussed in Thread: UNIFLASH, C2000WARE, SYSCONFIG

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1466752/tms320f28379d-not-able-to-upload-out-file-in-both-cpu

部件号:TMS320F28379D
Thread 中讨论的其他器件:UNIFLASHC2000WARESYSCONFIG

工具/软件:

您好:

我开发了一个同时使用两个 CPU 的应用程序。 在两个 CPU 上调试代码时、工作正常。 但是、当我尝试使用 uniflash 将.out 文件上传到两个 CPU 时、CPU2不会运行代码。 如果有任何具体程序需要遵循、请告诉我。 当前我要做的是在 C28xx_CPU1和 C28xx_CPU2中加载相应的.out 文件、然后逐个按下两个选项卡上的"LOAD Image"按钮。 请让我知道我犯了什么错。

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

    尊敬的 Kashyap:

    加载完成后、器件是否处于闪存引导模式?

    谢谢。此致、

    Charles

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

    您好 Charles、

    很抱歉晚才回复。 我仍然不熟悉 TMS320和双核控制器、因此我一直在尝试确定如何设置此类控制器。 在我的硬件原理图中、我发现 GPIO 72和 GPIO 84连接到其他输入引脚。 我不确定在 CPU 复位期间两个引脚是否都设置为1。 是否有其他方法可以处理此问题?

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

    尊敬的 Kashyap:

     假设您尚未对 OTP 进行编程、GPIO 72/84配置为通过引导开关从外部拉高/拉低。  

    您是否尝试加载到 LaunchPad、controlCARD 等? CPU1是否成功运行代码?

    此致、

    马特  

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

    你好、Matt 先生、

    感谢您的答复、

    我尚未对 OTP 进行编程。 我在 PCB 上使用 TMS320。 当我尝试调试两个 CPU 同时工作,但当我刷新两个 CPU 上的文件时。 只有 CPU1运行良好。 但 CPU2无法正常工作。 我有一个专为我的应用开发的电路板。

    我更新了电路板、以便拉取 GPIO 72和 GPIO 84的高电平问题仍然存在。 如果我在控制器上加载映像时出错、敬请告知。

    此致、

    Kashyap。

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

    尊敬的 Kashyap:

    我很感谢澄清,它帮助了很多:)  

    GPIO 仅设置 CPU1的引导模式。 似乎 CPU2未引导至闪存中的应用程序、并且处于等待引导状态。 在未编程引导的情况下、CPU2将进入等待引导、在该引导中、它将等待 CPU1应用程序发送 IPC 命令以引导至闪存或 RAM (请参阅 TRM 中的4.10.8)。

    我建议尝试 C2000Ware 中的示例以了解实现方法:

    • C2000Ware_X_XX_XX\driverlib\f2837xd\examples\dual\ipc\ipc_ex1_gpio_toggle_cpu

    除了使用 IPC 命令配置 CPU2引导之外、您还可以  为 CPU2配置 EMU_BOOTCTRL 寄存器、并在连接调试器的情况下模拟独立模式、或者将 CPU2的 OTP 编程为在引导时引导至闪存。 由于 OTP 只能编程一次、建议您首先使用仿真寄存器进行测试、以确认功能正常。  


    此致、

    马特

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

    您好:

    由于几周前没有回复、我假设此问题已解决并结束主题。

    此致、

    马特

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

    您好 Matt、

    很抱歉未回复。 由于项目的紧迫性、我忙于其他工作、我会尽快尝试并恢复。

    此致、

    Kashyap Vasani。

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

    您好 Kashyap、

    不用担心、如果您有任何问题或疑虑、请随时通过此主题与我们联系。

    此致、

    马特

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

    您好 Matt、

    我已经完成了技术参考手册的第4部分。 根据我的最大理解、我放置了  

    HWREG (0x0005F004)= 0x00000B5A;
    HWREG (0x0005F044)= 0x00000B5A;

    在启动 CPU2的 void main ()时、但似乎仍然不起作用。 我尝试将 CPU2设置为闪存引导模式。 因此、CPU2会在控制器上电或复位后立即启动 CPU2。 请让我知道我错了什么地方?

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

    尊敬的 Kashyap:

    请将您的配置写入 OTP 闪存(0x7801E/0x7821E)中的 BOOTCTRL 寄存器。 以下是 TRM 中存储器的寄存器位置:

    您还可以尝试使用 DCSM 工具(在 SysConfig CPU2上下文中)或 CCS 中的片上闪存工具(Connect to CPU2 > Tools > On-Chip Flash)来配置引导配置。 如果您尚未查看本应用手册、其中详细介绍了如何使用 DCSM 安全工具: https://www.ti.com/lit/pdf/spracp8

    最后、我还会注意到无需对 Z1和 Z2 OTP 寄存器进行编程、因为 Z2取代了 Z1配置。 我建议您先对 Z1进行编程、然后对 Z2进行编程。

    此致、

    马特

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

    您好 Matt、

    很抱歉提出非常基本的问题。 请查看下图、如果是您所说的内容?

    此致、

    Kashyap。

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

    嘿、马特、我尝试将该值设为0X00000B5A。 但如果您需要我的代码的任何部分或任何屏幕截图、结果仍然是相同的、请告诉我。

    感谢您跟上我的步伐。

    此致、

    Kashyap

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

    尊敬的 Kashyap:

    是的、这是正确的寄存器。

    加载 CPU2应用程序时在闪存中的哪个位置? 引导后 CPU2的状态是什么?

    此致、

    马特

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

    您好 Matt、

    我正在 uniflash 中加载我的 OUT 文件并直接按"load image"按钮。 是否需要进行任何设置?

    此致、

    Kashyap Vasani

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

    尊敬的 Kashyap:

    看起来正确。 如何验证 CPU2是否未引导至闪存? 您是否加载引导 ROM 符号以验证 CPU2的状态?

    您可以通过将引导 ROM 符号(.out 文件)加载到器件中来逐步使用器件引导 ROM。  此选项添加了生成的工程".out"文件中可用的符号用于调试、而不是通过 CCS 将实际的".out"程序加载到内核-这也是您可以将此方法与引导 ROM/内置引导加载程序一同用于调试和获取可见性的原因。

    1. 将 CCS 打开至工作区
    2. 点击"View">"target configurations":
    3. 您可以将此器件的工程导入 CCS 并使用该工程连接到器件、或者在此窗口中将原始目标配置从 C2000Ware 复制到"user defined"目标配置。 无论使用哪种方法、都找到器件目标配置(下面的 F28375S 示例)并启动它:
    4. 打开调试窗口时、选择器件 CPU 并连接到目标:
    5. 导航至工具栏并单击按钮以"加载符号"
    6. 加载引导 ROM .out 文件。 对于 F2837xD CPU2、应该在中  
      1. C2000Ware_X_XX_XX_XX\libraries\boot_rom\f2837xd\RevB\ROM_SOURCE\ccs_files\cpu02\Release\F2837x_cpu02_bootROM_RevB_Golden _020314.out
      2. 如果弹出一个窗口、指出它找不到源文件、您可以选择"Locate File"并在 C2000Ware 中找到它
        1. 通常在此处:C2000Ware_X_XX_XX_XX\libraries\boot_rom\f2837xd\RevB\ROM_Sources\F2837x_bootROM\cpu02-bootROM\source
    7. 此时应打开该文件以显示您所在的引导 ROM 的位置、您可以逐步执行/调试

    此致、

    马特

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

    尊敬的 Matt:

    我是双核处理器和 TI 控制器新手。 所以我不知道符号是什么以及它是如何工作的。 老实说,我没有得到你在最后的答复中说的。 您能提供一些教程或视频来了解基础知识吗? 因此、我可以理解您使用的每个术语。

    此外、在 OTP 存储器写入实验之后发生了另一件事、我能够使用 CCS 闪存工具对 CPU1进行编程、但当我使用 uniflash 加载时无法使用。 此外、即使我在下电上电后仍加载了 CCS 闪存工具、它也会停止工作。

    谢谢。此致、

    Kashyap  

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

    尊敬的 Kashyap:

    是否已了解技术参考手册中的引导 ROM 一章? 此报告提供了有关 F2837xD 器件上引导流程(包括 CPU2引导流程)工作原理的最全面信息。

    我还强烈建议搜索有关 CPU2引导的其他 E2E 帖子。 有很多有用的信息,可能是相关的,并希望回答你的问题.

    So、我不知道符号是什么、它是如何工作的。

    最简单的符号是编译代码(二进制文件)中的元数据、这些代码包含有关函数和文件中的全局数据(全局变量和只读数据)的信息。 通常、符号包含名称、地址和大小。 通过将引导 ROM 符号加载到 CCS 中、您可以在调试时查看引导 ROM。

    此外、在 OTP 存储器写入实验之后发生了另一件事、我能够使用 CCS 闪存工具对 CPU1进行编程、但当我使用 uniflash 加载时、无法使用。 此外、即使我在下电上电后仍加载了 CCS 闪存工具、它也会停止工作。

    什么不起作用、例如、UniFlash 提供了什么错误消息?

    此致、

    马特

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

    由于一个月内没有回复、我将关闭此主题并假设问题已解决。