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:以错误模式引导

Guru**** 2611705 points
Other Parts Discussed in Thread: C2000WARE

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/993747/tms320f28379d-booting-in-wrong-mode

器件型号:TMS320F28379D
主题中讨论的其他器件:C2000WARE

我正在使用 F28379D 开发定制板的软件、并且在使其在独立模式下正确启动时遇到问题。 当使用调试器进行编程并保持连接时、代码正常执行。 如果我尝试重置 CPU (Ctrl + Shift + R)、系统将在引导 ROM 中的某个位置停留。 在未连接调试器的情况下、在下电上电后也会发生同样的情况。 我正在尝试让系统始终从闪存引导。

我在 CCS 中加载了引导 ROM 符号(ROM 版本为修订版 B),发现 CPU1卡在 Parallel_GetWordData()函数中(特别是 while 循环 中 while (host_data_NOT_RDY){})。 地址0x0000 002C 处的引导状态为0x0D00 (引导 ROM 已启动、DCSM 初始化已完成、并且所有复位均已处理)。 地址0x0000 0038处的 CPU1引导模式为0x0、表示并行引导模式(这说明了它卡在那里的原因)。

我探测了两个引导引脚 GPIO72和 GPIO84、似乎找不到任何问题(两者都是高电平、表示"获取"引导模式、而不是"并行"引导模式)。 上拉电阻为5.1k、引脚均在 GPCDAT 寄存器中读作逻辑1。

Z1_BOOTCTRL 中的 BMODE 按预期设置为0x0B (闪存)。

我还查看了 BOM 符号中的 BootMode 变量、并确认它确实为0 (并行模式)。 EMUKey 变量也设置为0x00A5、这很奇怪、因为它还指示并行引导模式(我从未指定过这种模式)。 如果我使用调试器将 EMUKey 设置为0x0BA5 (引导至闪存)、0x03A5 ("Get"引导)或0xFF ("独立仿真"模式)、然后复位 CPU、系统将按预期引导至闪存并正常运行。 如果我运行 EMU_BOOT_FLASH GEL 脚本、这也会起作用、但我不知道 为什么默认 GEL 脚本不自动执行此操作(我之前在不需要执行额外步骤的情况下使用过其他 C2000器件)。 是否有一个设置我可以配置为在仿真模式下始终从闪存引导? 当然、这在下电上电后停止工作、系统再次卡住。

引导 ROM 中的 EMUBMode 变量设置为0xA796、这与系统上可用的任何 GPIO 引脚不对应(0xA7 = GPIO165、0x96 = GPIO149)。 不确定该值来自何处。

在 C2000Ware 3.04中使用"empty_driverlib_project"时、电路板上出现了相同的问题、因此我怀疑这可能与硬件相关。

有人有任何意见吗?

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

    更正:Z1_BOOTCTRL 中的所有值实际上为0xFF:

    我还在两个单独的板上尝试过这种方法、两个板的作用都是相同的。

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

    您好、Felix、

    [引用 userid="483994" URL"~/support/microcontrollers/c2000/f/c2000-microcontrollers-forum/993747/tms320f28379d-booting-in-wrong-mode ]EmuKey 变量也设置为0x00A5、这很奇怪、因为它还指示并行引导模式(我从未指定过的内容)

    如果 EMUKey 被设定为"并行启动"、那么在加电时 ROM 代码只将引导模式检测为并行启动、这是因为 ROM 代码写入检测到 EMUKey 的引导模式。 由于您在引导模式引脚上看到1/1值、这可能是由于加电期间出现一些噪声、或者如果您已将这些引脚连接到板上的一些有源驱动器、则可能会在下电上电期间将它们驱动为"0"。 我建议在这些引脚上连接示波器、并尝试在发生这种情况时捕获低电平值。

    此致、

    Vivek Singh

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

    我获得了两个引导引脚的示波器捕获、这确实是一个电源域问题。 谢谢!