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.

[参考译文] LAUNCHXL-CC1352R1:写入板载闪存

Guru**** 2482225 points


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

https://e2e.ti.com/support/wireless-connectivity/sub-1-ghz-group/sub-1-ghz/f/sub-1-ghz-forum/1234341/launchxl-cc1352r1-writing-to-onboard-flash

器件型号:LAUNCHXL-CC1352R1

大家好

我在写入 NVS...时遇到问题

在我的1个任务开始时(我还有3个其他任务正在运行)、执行所有 NVS 调用、我打开 NVS、检查签名、然后编写一些内容。
确保一切正常(不返回错误)。
我不关闭 NVS、而只是保持打开。

稍后当我尝试写入更新的内容时,我得到错误(-1)....对于相同的操作!???

ARET = NVS_WRITE (nvsHandle、HU_RADIO_ADDR、&RADIOAddr、4、NVS_WRITE_POST_VERIFY);

在2个写入实例之间、NVS 不会被关闭。
HU_REPORT_ADDR = 60 (因此可被4整除)、我还要 写入4个字节(也可被4整除)

我调试了 NVS_WRITE,发现:
     函数调用 status = FlashProgram (((uint8_t*) srcBuf、(uint32_t) dstBuf、writeIncrement);
     在函数 int_fast16_t NVSCC26XX_WRITE 中(NVS_Handle handle、size_t offset、void *缓冲区、size_t buffersize、uint_fast16_t 标志)
     在文件"C:\ti\simplelink_cc13x2_26x2_SDK_5_20_00_52\source\ti\drivers\NVS\NVSCC26XX.c 中
     返回的状态为4,这又意味着 FlashProgram()返回了 NVS_STATUS_ERROR (-1)

我的问题...
返回值"4"表示什么?我应该怎么做才能使写入正常运行?
我应该在第一次写入之后做些什么吗? 例如、重置闪存指针、或者我应该将整个区域读入缓冲区、将缓冲区的内容更改为我需要的新值、然后使用 NVS_WRITE_ERASE 将整个区域写回?

提前感谢

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

    您能否尝试执行 NVS_WRITE_ERASE | NVS_WRITE_POST_VERIFY、而不是仅执行  NVS_WRITE_POST_VERIFY?

    请参阅以下内容:

    (+) RTOS/CC1310:每隔一秒的 NVS_WRITE 都会莫名其妙地使用 NVS_STATUS_INV_OFFSET -低于1GHz 论坛-低于1GHz - TI E2E 支持论坛

    Siri.

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

    AH..Siri...这确实是我的临时解决方法(等待 TI 的响应)、因为这意味着我必须挂起一个8K 存储器块以便首先读取整个扇区、从而使擦除发生时其他数据不会受到影响、 然后用我的新数据更新这个块、再用 NVS_WRITE_ERASE 写回整个块。

    文档中的内容让我相信、最后、板载闪存可以直接写入 RAM、但事实并非如此。

    阅读您的链接、证实了我的怀疑以及我是如何使用 FLASH (尽管是在较小的领域)进行工作的...或许文档应该更新?

    Moshe