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/TMS320F28335:看门狗复位和上电之间的 CODE_START 差异

Guru**** 2602745 points


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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/675434/ccs-tms320f28335-code_start-difference-between-watchdog-reset-and-power-on

器件型号:TMS320F28335

工具/软件:Code Composer Studio

F28335中有两个项目、一个是引导加载程序、另一个是应用程序 上电时、第一个引导加载程序将从默认的 CODE_START 地址(0x33FFF6)运行代码。 然后分支到应用项目 code_start 地址(0x300008)。 两个 code_start 如下所示(即 DSP2833x_CodeStartBranch.asm)且看门狗已禁用。

code_start:   .if WD_disable = 1       lb wd_disable      分支到看门狗禁用代码   .else       LB _c_int00        ;分支到 RTS 库   .endif 中的 boot.asm 启动

;结束 codestart 段

我在应用项目中添加了代码以检查看门狗 WDFLAG 位、如下所示(按照勘误文档来解决 XINTF 模块错误)

EALLOW;
   if ((SysCtrlRegs.WDCR & 0x0080)=0)
   {
       SysCtrlRegs.WDCR = 0x0028;
       SysCtrlRegs.WDKEY = 0x0055;
       SysCtrlRegs.WDKEY = 0x00AA;
   }
   其他
   {
       SysCtrlRegs.WDCR |= 0x0080;
   }
   EDIS;

但是、在看门狗复位后 、代码"SysCtrlRegs.WDCR |= 0x0080"似乎无法禁用看门狗。 但是、CODE_START 应该已禁用看门狗。 如何理解此问题? 加电和看门狗复位之间的 CODE_START 有何差异? 谢谢。

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

    您好!

    WDCR 寄存器有 WDCHK 位域、需要写入值1-0-1来使能对该寄存器的写操作。

    因此、要禁用 WD、您需要写入0x68。

    SysCtrlRegs.WDCR |= 0x0068;


    此致、

    Vivek Singh

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

    您好、Vivek、

         立即了解、感谢您的回复。 然后、我要确认 代码运行以及加电和看门狗复位之间的行为差异、仅需要 WDFLAG 位吗?  我 不希望看门狗复位会造成任何特殊影响。 非常感谢。

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

    您好!

    [引用]然后、我想确认 代码运行以及加电和看门狗复位之间的行为差异、只有 WDFLAG 位吗?  我 不希望看门狗复位会造成任何特殊影响。 非常感谢。 [/报价]

    看门狗复位不会造成任何特殊影响。 没关系。

    此致、

    Vivek Singh