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:复位后 RAM 变为0

Guru**** 2540720 points


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

https://e2e.ti.com/support/wireless-connectivity/sub-1-ghz-group/sub-1-ghz/f/sub-1-ghz-forum/1064620/cc1312r-ram-gets-0-after-reset

器件型号:CC1312R

你(们)好

我在 RAM 中使用"搜索框"在应用程序和引导加载程序之间进行通信。

为此、我更改了两个.cmd 文件、以便排除最后128个字节。

#define RAM_base 0x20000000
#define RAM_SIZE 0x13F80 // RAM 总量为80K、0x14000。 RAM 的最后128个字节被保留用于邮箱。 *

然后、我使用指针来访问该区域:

#define mailbox_address ( 0x20000000 + 0x13F80)

因此、当应用程序想要指示引导加载程序执行某项操作时、它会使用字符串和 CRC32填充该128字节并进行复位。

复位时引导加载程序会检查此区域的一致性(CRC32必须匹配)、然后对写入此邮箱的字符串中给出的指令执行操作。

当我使用调试器(使用 Debugger Restart 命令,而不是 SysCtrlSystemReset())进行测试时,它可以正常工作, 但我不使用调试器、似乎(使用 LED 调试工具)这个 RAM 被0填充、就像 C 启动忽略.cmd 文件中的定义一样。

这是可行的吗?

如何将 C 启动代码添加到项目中以便进行调试?

谢谢