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.

[参考译文] CCS/TMS320F28035:更改振荡器设置后无法进行编程。

Guru**** 2592420 points


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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/668613/ccs-tms320f28035-not-able-to-program-after-changing-oscillator-settings

器件型号:TMS320F28035

工具/软件:Code Composer Studio

您好!

我有一个 F28035 controlCARD、在对振荡器设置进行实验之后、它处于无法将新程序加载到其中的状态。

我可以连接到目标、我可以单步执行初始化代码。 我可以看到、在 PLLset 函数中、程序进入一个断点、因为处理器处于跛行模式。 我尝试在初始化期间更改一些值、但无法使程序正常运行。 我还启用了看门狗、以便稍后它可以复位程序。

都是如此。 我不明白我怎么不能简单地将已知工作的软件刷写到器件中。 我只获得以下输出:

C28xx:闪存编程器:写入闪存存储器时遇到错误
C28xx:文件加载程序:内存写入失败:未知错误
C28xx:GEL:文件:[path removed].out:加载失败。

闪烁是否在某种程度上取决于振荡器设置? 内部振荡器不应该在启动时始终处于默认状态?

我认为内部看门狗至少不应阻止加载新程序?

是否可以通过设置奇怪的振荡器值来使处理器砖型? 比如、通过禁用所有振荡器?

此致
Pauli

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Pauli、
    闪存器件的代码假定时钟有一个特定的设置(我认为在这个器件上为60MHz)、并且如果 CPU 时钟不是这个设置、编程有可能会失败。 我认为代码设置了 PLL、但它假设内部振荡器处于出厂状态、修整为10MHz。

    我们需要确定的是、闪存是否因此而"锁定"。 如果您打开一个存储器窗口来访问闪存密码位置(0x3F7FF8-0x3F7FFF)、您可以读取它们还是内容全部为"0x0000"? 如果它们不是全部为0x0000、那么您应该是可以的。 只需执行上电复位(通过拔下 CC 并将其插回)。 这将使内部振荡器恢复到出厂调整、然后我建议从闪存工具执行删除恢复、以便在闪存中安全。 之后、您应该进行设置。

    如果地址全部为0x0000、则密码已编程为默认的0xFFFF (已擦除)之外的其他内容。 当闪存尝试编程但 CPU 频率错误时、可能会发生这种情况。 如果是这种情况、28035很可能被永久锁定、您需要获得一个新的锁。

    让我们看看上面的结果、然后从那里开始。

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

    感谢您的快速回复。

    我认为闪存未锁定。 我可以读取您建议的存储器地址、所有字都是0xFFFF。

    但我无法执行 DepleIO 恢复。 当 tryin 出现以下错误时:

    执行闪存操作"DepleectionRecovery"时出错:未知错误

    C28xx:耗尽恢复已启动。
    C28xx:闪存编程器:执行删除恢复时出错。


    在我重启实验板套件后、我需要先连接到目标器件、然后才能开始耗尽恢复。 我怀疑处理器上电后、当前程序立即开始运行并将振荡器寄存器设置为无效值?

    在从 Code Composer Studio 连接之前、是否有某种方法可以保持处理器处于复位状态? 我已经尝试使用 Direct USB XDS100v1以及外部 XDS100v2调试器。

    您提到了振荡器修整。 我没有故意改变这些。 我只修改了 CLKCTL 和 PLLSTS 寄存器。 但我还注意到、目前我没有在初始化代码中调用 Device_cal。 那么、这是否意味着未加载出厂调整值?

    或者您是否在讨论启动时从引导 ROM 调用 Device_cal? 我从数据表中读取到、Device_cal 被引导 ROM 调用、除非引导 ROM 被 Code Composer Studio 绕过? 如何知道它是否被绕过?

    我尝试从脚本菜单中调用 Device_cal、但它没有帮助。

    此致
    Pauli

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

    Pauli、

    感谢您提供的更多详细信息、我现在知道了。

    是的、您可以让处理器等待仿真连接。  此处对此进行了详细说明:

    http://www.ti.com/product/TMS320F28035/datasheet/detailed-description#litSPRS230-0453

    您将使用引导模式2、"等待引导":GPIO34 = 0和 GPIO37 = 1。

    这将保持 MCU、以便在您可以连接/获得控制之前、它不会执行违规代码。

    Matt

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    谢谢你。 使用等待模式、我能够连接到目标、然后成功执行删除恢复并加载一个已知工作的软件。

    此致
    Pauli