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.

[参考译文] CC1310:修复了通过 CCFG 区段进行写入以及 NVS 通用混淆的问题

Guru**** 2473260 points
Other Parts Discussed in Thread: UNIFLASH

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

https://e2e.ti.com/support/wireless-connectivity/sub-1-ghz-group/sub-1-ghz/f/sub-1-ghz-forum/1408336/cc1310-fixing-writing-over-ccfg-segment-and-general-nvs-confusion

器件型号:CC1310
主题中讨论的其他器件:UNIFLASH

工具与软件:

大家好

确实需要一些帮助来了解我的代码和可能的整个方法有什么问题。

我正在尝试向我正在使用的 CC13-90电路板简单添加一些存储空间。 我成功地使用 nvs.h 库将一些数据存储在内部 NVS 存储器上、但我现在正努力扩展该区域。

首先、我认为我某种程度上使该区域过大、并覆盖了最后一页中的 ccfg 数据。 无论做什么、目前在对电路板进行尝试编程时都会收到以下错误消息:

Cortex_M3_0: GEL Output: Memory Map Initialization Complete.
Cortex_M3_0: GEL Output: Board Reset Complete.
Cortex_M3_0:   Command=20 -- addr=0x00001000 -- length=0x00001000
Cortex_M3_0: File Loader: Memory write failed:   Status 0x0102: Target flashloader failed to erase sector 0. Low level function returned status 4 (Operation failed).

我所怀疑的是、我设置了一个程序来写入所有可能定义的 NVS 地址、而我错误地将其定义得太大。 这导致闪存在系统启动时以某种方式锁定、就像通电时程序立即运行一样。 当我打开开发板或将其刷写回闪存未锁定的默认状态时、是否有某种方法可以阻止此操作发生。 有趣的是、程序之前成功写入 NVS、现在每次 NVS 偏移都会返回此错误:

Error when writing packet to nvs offset is 24540 error is -1

NVS 区的当前设置为:

Got NVS attrs, regionBase addr 1a000, regionSize 24576, sectorSize 4096,

我真正需要的是某种方法来重置电路板、但我根本找不到关于如何处理此闪存擦除错误的任何信息。 我只是希望能够再次对板进行编程。 这是第三次发生这种情况。

更广泛地说,很明显,我没有做这个 NVS 编程正确,但我真的不知道在哪里找到更多的信息 nvs.h 不包含有关如何使用它的任何信息。 我真的只是想知道什么是一个安全的地方开始这个区域,我可以安全地使它多大。

请有人帮助我理解这里发生了什么,我在这里感到非常迷茫

更新了:我通过使用 UniFlash 擦除整个闪存解决了这个特定问题、但仍然希望帮助您了解可以安全地写入 NVS 区域中的哪些地址、并希望尽可能增大可以节省的空间

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

    首先、请参阅以下有关 NVS 驱动程序的信息:

    NVS.h 文件参考(TI.com)

    此外、您需要查看链接器文件(.cmd)以了解如何 将段分配到目标系统所配置的存储器中、并且您还应该查看映射(.map)文件以确定 内存配置、段分配、重定位后外部符号的地址等。 该文件会列出程序中的代码和数据片段的大小、以及片段和符号在内存中的分配位置。

    最好从已知的良好示例开始、例如 nvsinternal (TI.com)、然后尝试对其进行修改。

    BR

    Siri