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.

[参考译文] CC1312R:无论如何都会覆盖 NoInit 区域

Guru**** 2557670 points


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

https://e2e.ti.com/support/wireless-connectivity/sub-1-ghz-group/sub-1-ghz/f/sub-1-ghz-forum/999968/cc1312r-noinit-region-gets-overwritten-anyway

器件型号:CC1312R

在硬故障中断期间、我们希望将内核和堆栈寄存器保存到 SRAM 中的 NO INIT 区域、以便在器件重新启动后稍后将其打印到 UART。 目前、我们使用的是`#pragma NO_INIT ( )`在变量定义之前,在.cmd 文件中,我们输入了`.TI.noinit:{}> SRAM`。 但当器件重新启动时(使用`SysCtrlSystemReset()`),变量值仍然为0。 是否需要执行任何其他步骤来在 no init 区域中启用变量存储?

这可能是因为奇偶校验错误检测? 如果可以、是否可以禁用它?

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

    很抱歉耽误你的时间。

    是的、这是由于奇偶校验错误检测。 为了使其正常工作、必须在芯片启动时将 RAM 复位/设置为已知状态。  

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

    是否可以禁用奇偶校验检测并防止 RAM 中的某些变量被复位? 或者、在 Hwi ISR 内部、我们是否可以使用一些替代方法将变量存储在非易失性存储器中?

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

    您是否使用传感器控制器? 如果不是、可以选择使用该 RAM 来存储变量。  

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

    是的、我们使用的是传感器控制器、因此无法将其用于数据保留。 高速缓存保留呢?

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

    我没有查看过详细信息、但我认为即使您使用的是传感器控制器、也应该能够使用传感器控制器 RAM、前提是您只需要保存几个变量。 某些传感器控制器 RAM 用于传感器控制器内核和 MCU 之间传递的变量。 这意味着应该可以从 SCS 中定义用于保存寄存器转储的变量。 然后、在引导时重新初始化传感器控制器之前、必须先读取内容。这将取决于您的传感器控制器任务所需的图像大小以及需要转储的数据大小。  

    不确定高速缓存。