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.

[参考译文] TMS320F28P650DK:复位问题

Guru**** 2460850 points


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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1499022/tms320f28p650dk-reset-issue

器件型号:TMS320F28P650DK

工具/软件:

您好:

我们的代码结构设计为包含引导加载程序和应用程序。

当我在引导加载程序中测试软件复位功能时、它会起作用。

SysCtl_simulateReset (SYSCTL_SIMRESET_CPU1RSN);

但是、当我从应用程序代码测试相同内容时、CPU 会卡住、不会进行复位。

引导加载程序和应用程序之间的区别之一是、在引导加载程序中、只有 CPU1处于活动状态、而在应用程序中、两个 CPU 都处于活动状态。

我尝试了另外两个选项来重置上面的选项。

SysCtl_simulateReset (SYSCTL_SIMRESET_XRSN);
sysctl_resetDevice()

两者显示相同的行为。 在调试器上、我可以看到以下内容:

Jay

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

    您好、

    复位后、在 CPU1上、它是在某个位置停止还是继续运行? 它似乎卡在 cinit 中。 请检查器件是否处于连续复位环路中。  

    Vivek Singh

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

    您好、Vivek、您建议检查 RESET 引脚吗?

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

    https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1390161/tms320f280049c-the-codestart-address

    我相信这张票可能与重置有关。

    我们的闪存配置如下:

    /*引导加载程序代码的段*/
       /*分配闪存组0 */
       boot_begin    :origin = 0x080000、length = 0X400   /*扇区0跳转地址*/
       BOOTHEADER    :origin = 0x080400、length = 0X400   /*扇区1引导加载程序信息*/
       Bootflash     :origin = 0x080800、length = 0x1F800  /*引导加载程序代码开头的扇区2 */

       /*应用程序代码的段- cpu1*/
       /*分配闪存组1 */
       开始       : origin = 0x0a0000, length = 2.      /* CPU1应用开始部分的扇区0 CPU1占位符*/
       APPHEADER_CPU1  :origin = 0x0a0002、长度= 254     /*扇区1 CPU1应用信息*/
       APPFLASH_CPU1  :origin = 0x0a0100、length = 0x1FF00  /*扇区2 CPU1应用程序空间*/

    在应用中、我们将 codestart 设置为 begin [用于应用代码启动]。

    codestart    :> begin

    这是正确的链接器设置吗? 还是应该将其设置为 BOOT_BEGIN?

    谢谢

    Jay

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

    假设您从引导加载程序跳转到应用程序。 如果是、则应该可以。 请确认一下。 如果您希望 CPU 直接跳转到您的应用程序、那么这将不起作用、因为 ROM 代码会跳转到固定地址0x80000。

    Vivek Singh

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

    可以从引导加载程序开始、跳转到应用程序代码。

    当我们在应用程序代码中调用软件复位时、不会跳转到引导加载程序。
    我们在 F28377D 中实现了这一点[通过触发看门狗复位]

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

    这很奇怪。 您是否可以提供示例代码以在我们的(TI)控制卡上重现此问题?

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

    该问题是由于应用程序将 D2-D5 RAMS 分配给 CPU2、并且在复位时不会清除该设置[在软件复位时]。 启动时的 CPU1试图访问 D2 RAM [因为闪存函数被复制并从 ram]运行。

    一旦在进入引导加载程序时将 D2 ram 分配给 CPU1、问题就解决了。

    谢谢

    Jay

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

    很棒,及时的支持,给你们两个!  谢谢大家、Chris。

    已解决