工具与软件:
你(们)好
使用 F28P65时、我对 GSxRAM 初始化有一些疑问:
(1)我使用 CPU1 GSxRAM 测试 变量、并且每个 CPU1 PWM ISR 都将此变量添加1。
使用 CPU1看门狗复位后、 变量仍将保持其值。
这种现象是否正常?
(2)在上电复位或 CPU1看门狗复位之后、
如果 GSxRAM 中的变量在变量声明中没有初始值、那么它们是否会被设定为零?
此致。
Ting-Wei
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.
工具与软件:
你(们)好
使用 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看门狗复位后、 变量仍将保持其值。
这种现象是否正常?
(2)在上电复位或 CPU1看门狗复位之后、
如果 GSxRAM 中的变量在变量声明中没有初始值、那么它们是否会被设定为零?
[报价]A1/2) RAM 初始化仅在上电复位(POR)或基于 XRSn 的复位时发生。 看门狗复位 WDRSn 不会触发引导 ROM 中的 RAM Init 函数。 所以、#1是预期的、对于#2、RAMINI 将只在 POR 后发生、而不是 WDRSn。
此致!
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