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.

[参考译文] Cc2650:使用 flash.c 进行闪存读取写入

Guru**** 2589280 points


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

https://e2e.ti.com/support/wireless-connectivity/bluetooth-group/bluetooth/f/bluetooth-forum/602803/cc2650-flash-read-write-with-flash-c

器件型号:CC2650

您好!

我正在使用 flash.c 驱动​程序在 sppbleserver 上读取写入闪存。 在 sppbleserver_init()中,

我将在闪存中写入一个32字节的值、该值位于0x1e000的存储器位置。

复位前、写入的值在闪存中有效。

如果我复位电路板/重新为电路板供电。 当我在 sppbleserver_init()处读取时,它被擦除。 它在 iCall 时被擦除。

如何在复位后保留该值。

我只喜欢使用 flash.c 驱动程序。 这就是我们跳过 OSAL_SNV_READ 和 WRITE 的原因。

请为我们提供解决方案。

谢谢、

Santhanarayanan

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

    您是否启用了 SNV? 这可能是它被擦除的原因。

    尝试禁用 SNV 并查看这是否解决了问题。 如果您只是计划使用自己的闪存驱动程序、那么实际上没有理由使用 SNV (除了节省保证金)、在这种情况下、您需要为驱动程序保留闪存或切换到 SNV。 (或者可能采用另一种方法、您为什么要这样做?)

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

    您好!

    我们尝试通过在预定义符号中设置 NO_OSAL_SNV 来禁用 SNV、并在 build_config.opt 中禁用-DGAP_BUSK_Mgr。

    则代码不会在 main 之后运行。

    我们也将 rfpacketRx.c RxTask 与 sppbleserver 任务一起使用。 我们将根据主器件上的 GPIO 引脚输入来分离要运行的两个任务。

    main()
    {
    input = PIN_getInputValue (Board_DIO15);
    if (input = 1)
    {
    RxTask_init ();
    }
    else
    {
    iCall_init();
    iCall_createRemoteTasks();
    GAPRole_createTask();
    SPPBLESERVER_createTask();
    SDITASK_createTask();
    }
    BIOS_start();
    } 

    我们必须在两个任务之间共享同一存储器位置的闪存数据。

    由于在 rfpacketRx 任务中没有 ICALL 无法使用 SNV、因此我们使用的是 flash.c 驱动程序

    请为我们提供解决方案来实现这一点。

    谢谢、

    Santhanarayanan