主题中讨论的其他器件: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 区域中的哪些地址、并希望尽可能增大可以节省的空间