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.

[参考译文] 独立执行代码

Guru**** 2348790 points
Other Parts Discussed in Thread: CONTROLSUITE, C2000WARE
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/594677/execute-code-in-standalone

Thread 中讨论的其他器件:controlSUITEC2000WARE

您好!

为了开发项目、我在拥有我们自己的硬件之前使用 controlCARD F28377D。

我使用了集成 JTAG 调试器 XDS100、现在我使用的是 Blackhawk USB560 v2。

然后、我在 CCS v7下编译和刷写软件。

controlCARD 全部正常运行、插入到主板 IDDK 上、我在该主板上添加了一些部件、如7段显示屏。

但是、现在、当我刷写电路板时、使用调试器运行是可以的。 因此、我关闭电路板电源、拔下 JTAG 链路、然后打开电路板电源、我希望最后一个闪存软件"独立"运行。

但不会! 不运行、不通过串行发送数据、不管理显示7段。 比如没有执行任何代码。

在"独立"模式下运行电路板时、我错过了哪些内容?

谢谢你

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

    您需要通过闪存运行代码、因为当前代码是从 RAM 运行的。 只需浏览以下主题:
    e2e.ti.com/.../1360423

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

    您好!

    感谢您的帮助、但我已经看到此帖子未成功:

    我当前的项目由 IDDK 示例发布。

    今天、如果我使用此示例进行测试、则独立运行正确、但我的应用程序不能正常运行!...

    我使用编译器 v17.3.0测试了这个示例、然后使用新的".TI.ramfunc"部分测试了我当前的 cmd 文件。 因此,使用此选项时,不存在预定义的“_FLASH”,主调用首先是“InitSysCtrl()”,然后是“InitFlash()”=>通过这些修改,IDDK 示波器可以独立正确运行。

    但不是我的应用。

    我目前正在尝试检查属性项目差异! 我通过减少以下代码来简化了这两个 main:

    void main (void)
    {
    
    InitSysCtrl();
    InitFlash();//调用闪存包装程序 init 函数*/
    
    GPIO_SetupPinMux (31、GPIO_MUX_CPU1、0);
    GPIO_SetupPinOptions (31、GPIO_OUTPUT、 GPIO_PushPull);
    
    for (;;)
    {
    uint32_t I;
    //
    //打开 LED
    //
    GPIO_WritePin (31、0);
    
    //
    //延迟一位。
    //
    //delay_US(1000*500);
    对于(i=0;i < 500000;i++)
    {
    }
    
    //
    //关闭 LED
    //
    GPIO_WritePin (31、1);
    
    //
    //延迟一位。
    //
    //delay_US(1000*500);
    对于(i=0;i < 500000;i++)
    {
    }
    }
    

    我今天唯一能看到的区别是链接函数"InitFlash"的地址。

    IDDK exemple 中为0x8000、当前项目中为0xBDB8 (因为如果从未调用过、则在我的项目事件中会有其他 Ramfunction、因为 main()已减少...)


     

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

    好的
    我发现了问题!

    实际上、IDDK 开发人员使用了 controlSUITE 库 v170 (C:\ti\controlSUITE\device_support\f2837xd\v170)

    当我启动项目时、我还使用了此库并使用新库版本 V190、V200、V210进行更新、然后我最近将其传递给 C2000ware。

    我在 V210和 C2000Ware 之间有所不同、没有什么可以解释问题的主要区别。
    但我在 V200和 V210之间有所不同。
    在 F2837xD_CodeStartBranch.asm 中:
    V200:
    WD_DISABLE .set 1;设置为1可禁用 WD、否则设置为0

    V210:
    WD_DISABLE .set 0;设置为1以禁用 WD、否则设置为0

    因此、在一个情况下、看门狗在第一个代码启动时被禁用、而在第二个情况下则被禁用。

    我认为这项有关 IDDK 示例的工作、因为.TI.ramfunc 复制持续时间很短。 因此,在调用 main()\InitSysCtrl()之前看门狗不会溢出。

    但在我的实际应用中、此部分较大、复制需要更多时间。 因此我认为看门狗在到达 main()之前会复位!

    然后、我认为不取消激活 codestBranch.asm 中的看门狗是个问题、因为编译器可以使用链接器选项.TI.ramfunc...table (BINIT)创建一个"自动" ramf有趣 的副本。。。。 或者在此复制期间、应刷新看门狗...

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我假设您已确保 BOOTPINS 设置为引导至闪存。

    Vivek Singh
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    当然、Standalone 与 IDDK 员工合作良好。
    正如我在上一个帖子中所说、问题已经解决、这是看门狗引起的、自器件版本 V210及更高版本以来、CodeStartbranch 中未禁用看门狗。