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.
您好、查姆斯、
根据 TRM 上的 CPU2引导流程图、CPU2仅在 POR 时进行 RAM 初始化。 我在调试模式下使用 CCS 进行评估、点击"Restart"图标时、软件将再次重新启动、我发现全局变量的内容将被初始化、这是否合理?
另一个问题是、我是否可以使用 CPU1复位 CPU2、以便 CPU2再次重新启动?
感谢你的帮助。
Luke
您好!
默认情况下、EABI 编译器会将所有全局变量初始化为 c_init00函数的一部分。 如果在应用程序中未显式初始化全局变量、编译器将进行零初始化。
可以使用 NOINIT pragma 关闭此功能。
是 CPU1、它使 CPU2脱离复位状态。 更多详细信息、请参阅 device.c 中的 Device_bootCPU2函数。 有关 CPU2RESCTL 寄存器的更多详细信息、另请参阅 TRM。
此致、
Veena
Veena、
我使用 COFF 格式并获得相同的结果、当我在调试模式下点击"Restart"图标时、CPU2将初始化我的全局变量、它似乎与 CPU2引导流程聊天不匹配、这是否合理?
我知道 CPU2RESCTL 寄存器并尝试过、我可以通过设置 CPU2RESCTL 寄存器来复位 CPU2并使其脱离复位状态、但似乎 CPU2不会再次从应用起点执行程序、我还应该执行什么操作才能使 CPU2再次运行?
此致、
Luke
您好、Luke、
[引用 USER="Luke Chen ]我使用 COFF 格式并获得相同的结果、当我在调试模式下点击"Restart"图标时、CPU2将初始化我的全局变量、它似乎与 CPU2引导流程聊天不匹配、这是否合理?[/QUERPLET]
这些全局变量是否已显式初始化? (如 int var = 10;) EABI 和 COFF 格式都会初始化此类变量。 EABI 和 COFF 之间的区别在于、EABI 编译器也会初始化未初始化的变量(int var;-> var 将使用 EABI 初始化为0。)
[引用用户="Luke Chen "]我知道 CPU2RESCTL 寄存器并尝试过、我可以通过设置 CPU2RESCTL 寄存器来重置 CPU2并使其退出复位状态、但似乎 CPU2不会再次从入口点执行程序、我还应该执行什么操作以使 CPU2能够再次运行?
是否正在使用 Device_bootCPU2函数? 这还会在配置 CPU2RESCTL 之前发送 CPU2引导所需的 IPC 命令。
此致、
Veena