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.

[参考译文] CC2541:OSAL_SNV_WRITE ()。 重新启动或关闭电源后,存储的数据被擦除

Guru**** 2555630 points


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

https://e2e.ti.com/support/wireless-connectivity/bluetooth-group/bluetooth/f/bluetooth-forum/583486/cc2541-osal_snv_write-stored-data-erased-after-restart-or-power-down

部件号:CC2541

您好!

我尝试了这个简单的代码来将值存储在SimpleBLEBroadcaster的闪存中,例如:

 UINT8 buf = 99;
 UINT8结果;
     
 结果= osal_SNV_write(0x80, 1,&buf );

 buf = 0;
 结果= osal_SNV_READ(0x80, 1,&buf );

第一次运行结果== Success,buf =99。 一切都好

在第二次运行(重新启动后)时,我只调用

 结果= osal_SNV_READ(0x80, 1,&buf );

并返回0x0A。buf not changed。

我尝试在不同的位置插入此代码(Periodic task,main(),SBP_start_device_EVT),尝试了不同的地址(0x81. 0x82...)。 结果相同。

我做错了什么?

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

    您好,Rustem:

    如果要在重新启动后记住变量值,则需要将它们存储在EEPROM存储器中。

    此致,

    克拉斯

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    谢谢你,克拉斯!
    我的错误。 我尝试使用调试器来跟踪写入闪存的情况。 但是在重新加载代码后,闪存被擦除:)
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好,Rustem:

    事实上,我的第一个答案并不完全正确。 您也可以写入非易失性闪存,您可以在OSAL API (C:\Texas Instruments \BLE-CC254x-OSAL.OSA\Documents\osal 1.4)中阅读有关2.2 内容。

    此致,

    克拉斯

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

    很好的听到! 如果您遇到任何其他问题,请返回。

    此致,

    克拉斯