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.

[FAQ] [参考译文] 【常见问题解答】AM2634-Q1:如何保留 AM263 微控制器闪存存储中代码的数据结构?

Guru**** 2779905 points

Other Parts Discussed in Thread: SYSCONFIG, UNIFLASH

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1611858/faq-am2634-q1-how-can-i-persist-a-data-structure-from-my-code-in-flash-storage-on-an-am263-microcontroller

器件型号: AM2634-Q1
Thread 中讨论的其他器件: SYSCONFIG、UNIFLASH

此常见问题解答重点介绍了如何创建要存储在 AM263 微控制器闪存中的数据结构。

通常、我们可以在支持 XIP 的 AM263Px 和 AM261x 微控制器中执行此操作。 但这也可以在 AM263x 中完成。

请参阅以下示例、其中我们尝试在闪存中存储一个常量 uint8_t 数组。

-创建一个名为 test_buffer 的常量数组。 该缓冲区保持使用一些值进行初始化。  

-在链接器中创建一个要存储 test_buffer 的段。 该段的加载地址应作为闪存。

- SysConfig 的内存配置器不允许只有加载地址和运行地址作为闪存的部分。 这是因为 AM263 中没有 XIP。

因此、我们将禁止从 SysConfig 生成链接器、并手动添加我们的部分。

使用 SysConfig 中的 show generated files 选项查看按钮以禁用链接器脚本生成。

-在项目中手动添加链接器脚本。 链接器脚本的名称为 linker.cmd

-在链接器脚本中,添加一个部分以存储这样的缓冲区

- FLASH_X 是指定用于将项目存储在闪存中的段。 链接器脚本的存储器选项中也启用了此功能。

-现在构建项目。 在 Output 文件夹 (Release/Debug) 文件夹中、我们可以看到一个扩展名为.mcelf_xIP 的文件。

-这个文件有应该进入闪存的内容。 mcelf 文件将包含 SBL 将从闪存复制到 RAM 中的内容。

-现在使用 Uniflash GUI 工具刷写.mcelf 文件(即应用程序映像)和.mcelf_XIP 文件。

需要在 0xE0000000 偏移处刷写.mcelf_xIP 文件。

-刷新后,现在运行应用程序并检查保存数组的闪存偏移量。 也可以在存储器浏览器中搜索 TEST_BUFFER。