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.

[参考译文] TMS320F28069:无法通过看门狗复位器件

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

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/948066/tms320f28069-cannot-reset-the-device-through-watchdog

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

您好!

在更新应用程序后、我客户的引导加载程序代码将通过看门狗重置器件、如下所示(注释掉了行、在测试中、我们不注释掉):

当电路板通过 xds200连接到 CCS 时、代码可以复位器件。

当电路板未连接到 CCS 时、代码无法重置器件、因此器件将不会转至更新的应用代码运行。

但我们不知道它为什么会如此。

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

    引导加载程序是如何编程到闪存中的? 或其他一些方法进行通信?  

    有关 一些提示、请参阅 e2e.ti.com/.../757590。

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

    Hareesh、

    引导加载程序通过 JTAG 编程到闪存中。 您为什么会问这个问题?

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

    请提供有关引导加载程序编程完整序列的清晰信息。

    1. 引导加载程序通过哪个外设传输代码?
    2. 引导加载程序在何处进行编程?
    3. 从器件上电开始、引导加载程序应该执行什么操作?
    4. 何时以及如何调用引导加载程序?
    5. 您是否通读了 Lori 提供的调试提示?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Hareesh、

    很抱歉、我之前的描述有误:

    当电路板未连接到 CCS 时、代码无法重置器件、因此器件将不会转至更新的应用代码运行。

    实际上、我们测量了 XRS 引脚并发现它始终切换、这是错误的、这意味着在看门狗复位后、器件始终由于某种原因复位。

    然后、我们尝试通过 Lori 的建议进行调试。

    我们尝试了 C2000WARE 示例代码。

    1. 使用 C:\ti\c2000\C2000Ware_3_02_00_00\device_support\f28066\examples\c28\flash_f28069刷写器件
    2. 关闭电源
    3. 连接 CCS 并仅选择"load symbols"
    4. 在闪存的入口点放置一个断点//我不知道应该将它放置在哪里,它在 codestartbranch.asm 的开头吗?  
    5. 这是插入断点的正确点吗? 但它是灰色的。

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

    [引用]我们测量了 XRS 引脚并发现它始终切换、这意味着在看门狗复位后、器件始终会由于某种原因复位。[/quot]

    发生这种情况的一个原因是闪存为空。 编程后、您是否检查了闪存内容以确保其已编程? 您是否检查了密码位置?

    [引用]我不知道应该在哪里放置它、它在 codestartbranch.asm 的开头吗? [/报价]

    是、但您不能在第81或83行设置 BP。 您的项目中可能禁用了 WD、因此您应该能够在第82行设置 BP。 请记住、这是在闪存中、因此它必须是硬件 BP。

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

    Hareesh、

    我们根据 Lori 的程序进行了测试、无法重现问题、其行为与连接 CCS 的方式相同。

    代码帧为:

    主程序

    if (更新了应用程序代码)、运行应用程序代码、

    如果(未更新应用程序代码)、则运行引导加载程序代码(通过 SCI 接收新的应用程序代码、擦除旧的应用程序代码并对新的应用程序代码进行编程、然后通过看门狗进行复位)

    我们不知道如何对其进行调试。

     Hareesh:编程后、您是否检查了闪存内容以确保其已编程?

    霍华德:如何检查它? 连接到 CCS 并读取所有存储器?

    Haresesh:您是否检查了密码位置?

    霍华德: 如何检查它? 连接到 CCS 并读取所有存储器? 我们为什么需要检查密码?

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

    Howard、

                   很抱歉、我仍然不明白我们要解决的问题。 有2种情况:  

    1. 正常代码执行。 这是应用程序大部分时间将执行的操作。
    2. 需要更新代码。 运行引导加载程序代码(通过 SCI 接收新的应用程序代码、擦除旧的应用程序代码并对新的应用程序代码进行编程、然后通过看门狗进行复位)。  

    重要问题是如何确定#2? 也就是说、如何保证应用程序知道代码更新? 什么决定了正常的应用程序运行代码更新?  

    您尚未回答我之前的问题:

    1. 引导加载程序在何处进行编程? 引导 ROM 中的 SCI 引导加载程序是被调用还是闪存中的 SCI 引导加载程序部分?
    2. 从器件上电开始、引导加载程序应该执行什么操作?
    3. 何时以及如何调用引导加载程序?