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:如果未找到 NVM 项、则 OSAL_NV_READ_Ex ()返回成功

Guru**** 2455560 points


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

https://e2e.ti.com/support/wireless-connectivity/zigbee-thread-group/zigbee-and-thread/f/zigbee-thread-forum/1481131/launchxl-cc1352r1-osal_nv_read_ex-returns-success-if-the-nvm-item-is-not-found

器件型号:LAUNCHXL-CC1352R1

工具与软件:

似乎在osal_nv_read_ex()中的函数中存在问题osal_nv.c

pZStackCfg->nvFps.readItem()返回时NVINTF_NOTFOUNDosal_nv_read_ex()仍然返回SUCCESS

或许应该更改  

if ( pZStackCfg->nvFps.readItem( nvId, ndx, len, buf )!= NVINTF_SUCCESS )

???

/******************************************************************************
 * @fn      osal_nv_read_ex
 *
 * @brief   Read data from NV. This function can be used to read an entire item from NV or
 *          an element of an item by indexing into the item with an offset.
 *          Read data is copied into *buf.
 *
 * @param   id     - Valid NV item Id.
 * @param   subId - Valid NV item sub Id.
 * @param   ndx - Index offset into item
 * @param   len    - Length of data to read.
 * @param   *buf  - Data is read into this buffer.
 *
 * @return  SUCCESS if NV data was copied to the parameter 'buf'.
 *          Otherwise, NV_OPER_FAILED for failure.
 */
uint8_t osal_nv_read_ex( uint16_t id, uint16_t subId, uint16_t ndx, uint16_t len, void *buf )
{

  if ( pZStackCfg && pZStackCfg->nvFps.readItem )
  {
    NVINTF_itemID_t nvId;

    nvId.systemID = NVINTF_SYSID_ZSTACK;
    nvId.itemID = (uint16_t)id;
    nvId.subID = (uint16_t)subId;

    if ( pZStackCfg->nvFps.readItem( nvId, ndx, len, buf ) == NVINTF_FAILURE )
    {
      return ( NV_OPER_FAILED );
    }
    else
    {
      return ( SUCCESS );
    }
  }
  else
  {
      return ( NV_OPER_FAILED );
  }
}

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

    请提供有关您正在使用的 SDK 版本以及正在运行的 SDK 中的哪个示例的附加信息、以便我们对其进行研究。

    BR

    Siri

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

    7.41.0.17.

    我用函数 osal_NV_delete_ex()删除 NV 项、然后用函数 osal_NV_READ_ex()读取它。

     OSAL_NV_READ_EX()返回成功。 但是 NV 项目不存在。

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

    实际上,你可以尝试读取 随机 ItemID, subId(不存在)的 NV 项目,而  osal_NV_READ_Ex()函数总是返回成功。

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

    您使用的是哪个堆栈/代码示例?

    Siri

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

    我使用基于 dmm_zed_switch_remote_display_oad_app 示例的项目

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

    JFYI 通常osal_nv工作良好—我们可以创建、读取、写入和删除非易失性项目、而不会出现任何问题。 唯一的问题是结果osal_nv_read_ex()不正确。 我在测试过程中意外发现了这一点。

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

    您好、Alex、

    我浏览了代码,你是正确的,由 osal_NV_READ_Ex()调用的基础函数实际上会返回与 NVINTF_FAILURE 不同的可能错误代码。

    我会将其报告给开发团队。

    同时、作为对策、您的项目可以在 osal_NV_READ_Ex 之前调用 osal_NV_item_len_ex  吗?
    从  osal_NV_item_len_ex 返回的值为0将表示未找到该项。

    谢谢!
    Toby