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:有关 CPU1看门狗复位后 GSxRAM 初始化的问题

Guru**** 2540720 points


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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1416967/tms320f28p650dk-questions-about-gsxram-initialization-after-cpu1-watchdog-reset

器件型号:TMS320F28P650DK

工具与软件:

你(们)好

 使用 F28P65时、我对 GSxRAM 初始化有一些疑问:

(1)我使用 CPU1 GSxRAM  测试 变量、并且每个 CPU1 PWM ISR 都将此变量添加1。

   使用 CPU1看门狗复位后、 变量仍将保持其值。

   这种现象是否正常?

(2)在上电复位或  CPU1看门狗复位之后、

    如果 GSxRAM 中的变量在变量声明中没有初始值、那么它们是否会被设定为零?

此致。

Ting-Wei

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

    我将回顾 F28P65x TRM https://www.ti.com/lit/spruiz1b 的 1045页、其中提供了引导流程

    [报价 userid="624290" url="~/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1416967/tms320f28p650dk-questions-about-gsxram-initialization-after-cpu1-watchdog-reset "]

    (1)我使用 CPU1 GSxRAM  测试 变量、并且每个 CPU1 PWM ISR 都将此变量添加1。

       使用 CPU1看门狗复位后、 变量仍将保持其值。

       这种现象是否正常?

    [/报价][报价用户 id="624290" url="~/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1416967/tms320f28p650dk-questions-about-gsxram-initialization-after-cpu1-watchdog-reset

    (2)在上电复位或  CPU1看门狗复位之后、

        如果 GSxRAM 中的变量在变量声明中没有初始值、那么它们是否会被设定为零?

    [报价]

    A1/2) RAM 初始化仅在上电复位(POR)或基于 XRSn 的复位时发生。  看门狗复位 WDRSn 不会触发引导 ROM 中的 RAM Init 函数。  所以、#1是预期的、对于#2、RAMINI 将只在 POR 后发生、而不是 WDRSn。

    此致!
    Matthew

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

    您好、Matthew  
    感谢您的答复。


    (1)请参考下图。
       您是说 POR 和 WDRS 使用红线的引导流程、但只有 POR 触发 RAM 初始化(红圈)?

    (2)是否有其他方法可以在 WDRS 中触发 RAM INIT?
       或者我可以将 WDRS 引导流程更改为 RAM 初始化的橙色线(橙色圆圈)吗?
       (请参考下图。)

    此致。


    Ting-Wei

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

    是的、这就是我所指的。  查看 TRM 774页、您也可以通过 SW 写入 DxInit/LxInit/GxInit 寄存器来激活 RAM Init、然后等待 Init 设置"Done"位。

    作为主代码的一部分、可以读取复位原因寄存器"RESC"来确定源是否为 POR 以外的内容、然后相应地初始化 RAM。

    此致!

    Matthew

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

    您好、Matthew  
    感谢您的答复。

    我在 main()中对 GxInit 寄存器执行 SW 写入、发现在变量声明中具有初始值的 GSRAM 变量被设置为零。
    因此、我尝试另一种方法、即在 codestart 分支到_c_int00之前、对 GxInit 寄存器进行软件写入。
    此方法是否会对 TI 引导流程造成任何不良影响?

    codestart: 
    	SETC OBJMODE
    	EALLOW
    	.if WD_DISABLE == 1
    	  MOVZ DP, #7029h>>6
    	  MOV  @7029h, #0068h
    	.endif
    GSRAM_Init_Start:
    	MOVW DP, #5F452h>>6
    	MOV  @5F452h, #001Fh
    GSRAM_Init_Chk:
    	MOVW DP, #5F454h>>6
    	CMP  @5F454h, #001Fh
    	B    GSRAM_Init_Chk, NEQ
    	EDIS
    	LB _c_int00

    此致。
    Ting-Wei

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

    丁伟  

    好的、我知道 c 初始化的问题是怎样的。  是的、将此代码添加到 code_start_branch.asm 将解决这些问题、而不会影响引导流程。  这部分代码是在上电到闪存启动后首先执行的、因此不会假设保留任何 CPU 寄存器、即可以像您之前一样安全地使用汇编语言进行编码。

    唯一的问题将是看门狗、因此我假设您已通过 WD_DISABLE = 1预定义将其禁用。  如果您在禁用 WD 方面有任何问题、我们需要添加更多汇编语言来定期写入 CHECK 位。  如果您已使用 WD_Enabled 运行上述命令并且未看到问题、则 RAM 初始化时间不会更改为运行、因此您可以独立运行;我只是不知道 RAM 初始化 GSx RAM 的时间与复位后的 WD 超时。

    此致!

    Matthew

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

    您好、Matthew  
    感谢您的答复。

    是的、我已经通过一个汇编代码"WD_DISABLE .set 1"禁用了看门狗装置。
    我将使用我的方法并继续检查它是否在工作。

    我的问题已经解决。
    谢谢你。

    此致。
    Ting-Wei