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.

[参考译文] F28M36P63C2:M3引导加载程序到应用程序:应用程序无法运行

Guru**** 2540720 points
Other Parts Discussed in Thread: CONTROLSUITE

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/617793/f28m36p63c2-m3-bootloader-to-application-application-wont-run

部件号:F28M36P63C2
主题:controlSUITE中讨论的其他部件

我有两个项目,一个是bootloader,另一个是应用程序。

引导加载程序通过应用程序重置ISR跳至应用程序,然后转至正确的_c_int00,如应用程序映射文件所示。

然后,它进入D区,应用程序代码在那里存在,但什么也不发生。  

应用程序代码独立运行正常。 (闪烁LED ...通过flashAPI将值写入闪存...再次闪烁LED)

从bootloader启动应用程序时,应用程序在调试中的运行方式是否有所不同?

感谢您提供任何调试帮助。

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

    您是否在XRSn上看到重置/切换?
    您的应用程序服务监视程序是否根据需要?
    是否有任何已初始化的部分直接映射到链接器cmd中的RAM?

    您可能已经对ECC进行了编程-我记得您在上周某个时候的另一篇文章中这样说。

    谢谢,此致,
    Vamsi
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    此外,您的核心之间是否有任何IPC通信? 如果是,您是否检查过您的代码是否通过了它? -在此之后切换GPIO并检查其是否存在。

    谢谢,此致,
    Vamsi
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    再次感谢。
    我只在使用M3右边,而不是。 尚无IPC代码。
    在调试GUI中,EEC被设置为auto。
    我当前正在向codegstartbranch添加代码以禁用监视程序。

    我将根据您的建议讨论其他项目。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我正在寻找一个M3 codegantbranch.asm,它包含看门狗禁用功能,但似乎找不到。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Regis,

    如果要禁用它,请在controlSUITE\device_support\f28m36x\V210\Mware\driverlib\watchdog.c.处检查WatchdogResetDisable()函数

    另外,签出SPRUHE8D中的RCGC0注册。

    谢谢,此致,
    Vamsi
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我当时在想,在程序集中,我可以从DSP2833x_CodeStartBranch.asm添加类似的codegbranch:


    ***************
    *功能:wd_disable
    *
    *说明:禁用看门狗计时器
    ***************
    如果wd_disable == 1

    文本
    WD_禁用:
    SETC OBJMODE ;为28x对象代码设置OBJMODE
    EALLOW ;启用EALLOW保护的寄存器访问
    MOVZ DP,#7029h>>6;设置WDCR寄存器的数据页
    MOV @7029h,#0068h;在WDCR中设置WDDIS位以禁用WD
    EDIS ;禁用EALLOW保护的寄存器访问
    磅_c_int00 ;分支以启动RTS库中的boot.asm

    endif

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

    Regis,

    您应该能够从启动代码调用驱动程序lib函数。 如果你想使用汇编,那么我建议你先把调用放在C代码中,然后在条目处放置一个中断点,检查拆卸,以了解如何在汇编中写入函数。 您还可以使用其中一个生成选项生成汇编代码,并检查编译器生成的文件汇编程序代码。

    我们的库中没有用于禁用监视程序的直接汇编代码。

    另外,我认为看门狗不会默认在ARM端启用。 您是否可以查看TRM的TRM和引导ROM章节? 如果引导ROM启用了看门狗,它将显示在引导流程图中。

    此致

    Santosh Athuru

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我发现应用程序在设置时钟时挂起。 我已经在引导加载程序中执行了此操作,因此我已将其从应用程序中删除。

    //设置75MHz - M3和150MHz - C28x的主时钟树
    // SysctlClockConfigSet(sysctl_SYSDIV_1 | sysctl_M3SSDIV_2 | sysctl_use_PLL |
    // (sysctl_SPLLIMULT_M & 0x0F));
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Regis,

    只是想知道:它在哪一步悬挂?

    谢谢,此致,
    Vamsi
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我一步一步地显示该代码,它在以下位置重置:
    SysctlClockConfigSet(sysctl_SYSDIV_1 | sysctl_M3SSDIV_2 | sysctl_use_PLL |
    (sysctl_SPLLIMULT_M & 0x0F));

    我从应用程序中删除了此项,它按预期运行。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Regis,

    您是否可以介入并查看哪个具体说明导致了重置?

    谢谢,此致,
    Vamsi
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    它可能是SysCrtlClockPllConfig(ClkSrcReq,(PllMul));
    有点难调试。