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.

[参考译文] CC2630:从应用中写入/读取 NV

Guru**** 2538930 points
Other Parts Discussed in Thread: Z-STACK

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

https://e2e.ti.com/support/wireless-connectivity/zigbee-thread-group/zigbee-and-thread/f/zigbee-thread-forum/570725/cc2630-writing-reading-nv-from-application

器件型号:CC2630
Thread 中讨论的其他器件:Z-stack

您好!


我想向 NV 写入和读取信息、并阅读 OSAP API.pdf 中的第10章。 但是、文档中的函数原型仅提及 NVID 和偏移(以及长度)、而 SampleSwitch 项目中的函数原型需要 id、subId 和索引。 我假设 offset = index、但我应该在 id subId 中输入什么值

该文档还指定了一个范围为0x0401-0x0FFF 的应用值。

是否有人使用过这些功能、可以给我一个提示?

谢谢您!

此致、Stephanie

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

    有两个原型:
    -uint8 osal_nv_write_ex( uint16 id、uint16 subId、uint16 ndx、uint16 len、void *buf )
    -uint8 osal_nv_write( uint16 id、uint16 ndx、uint16 len、void *buf )

    这取决于要写入的项目的初始化方式:
    - uint8 osal_nv_item_init_ex (uint16 id、uint16 subId、uint16 len、void * buf)
    -uint8 osal_nv_item_init (uint16 id、uint16 len、void * buf)

    请查看 ZComDef.h 以了解您要使用的 NV 商品、并查看它们是如何初始化的。 扩展版本的函数使用两个 ID 来到达 NV 存储器项、而旧版本只使用一个 ID。

    如果您的应用需要一些新项目、只需将它们添加到0x0401-0x0FFF 范围内的 ZComDef.h 中、并使用 osal NV 初始化函数对其进行初始化。

    我认为这很有帮助。

    此致。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我记得、NV ID 0x0401-0x0FFF 在 CC26xx 的 Z-Stack 中不起作用。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Stephanie、

    我的最后一个答案是错误的,因为 OSAL 函数不会暴露给应用程序,而是需要使用 zcl_port.h 文件中定义的函数,请查看 zcl_port.c 中定义的 zclGeneral_AddScene()函数并将其用作示例。 再次使用"ID"和"subId"来初始化、读取和写入 NV 项目。

    下一个 NV 信息已保留:

    // OSAL NV 项目标识

    #define ZCD_NV_EX_LEGACE          0x0000

    #define ZCD_NV_EX_ADDRMGR         0x0001

    #define ZCD_NV_EX_Binding_table      0x0002

    #define ZCD_NV_EX_DEVICE_LIST       0x0003

     

    但愿这对您有所帮助。

     

    此致、

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

    您好、Jose、


    谢谢、是的。 您是否还知道商品是如何放入 NV 中的?

    SceneNVID 定义为"ZCL_PORT_Scene_Table_NV_ID 0x0001"。 这是否意味着对我自己的 NV 商品使用0x0002是安全的? 并且、我要放置在0x0002以下的所有 NV 项目是否都具有相同的长度/数据类型、或者它们是不同的数据类型?

    即、这是否有效?

    uint32_t 功能;
    bool pairedFlag;
    uint8_t identifier;
    
    zclport_writeNV (0x0004、0x0001、0、 sizeof (权能)、(void*)&Capabilities);
    zclport_writeNV (0x0004、0x0002、0、 sizeof (pairedFlag)、(void*)&pairedFlag);
    zclport_writeNV (0x0004、0x0003、0、 sizeof (identifier)、(void*)&identifier); 

    谢谢!

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    检查后、TI 建议在0x0100之后使用 NV ID。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    大家好、Stephhnie、

    正如 YK 所说,最好使用0X0100中的 NV ID,并跟踪将来的 ZStack 更改,以查看您的 NV ID 是否被保留用于其他提议,并在必要时进行更改。

    您提供的示例看起来不错、只是跟踪每个项目的大小、很容易在这方面犯错。

    此致、

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

    好的、我相应地更改了 NV ID。

    "跟踪尺寸"是什么意思?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Jose 意味着跟踪将来的 ZStack 更改、看看您的 NV ID 是否保留用于其他建议、并在必要时进行更改。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

    正如 YK 所说的那样、也许新版本的堆栈可以保留更多的 NV ID、因为它们用于任何类型的东西、因此、请查看您的 ID 是否仍然可用、如果不是将它们从0x0100更改为0x0200 (任何免费 ID)。

    关于跟踪商品尺寸:

    zclport_writeNV(0x0004, 0x0001, 0, sizeof(capabilities), (void*)&capabilities);
    zclport_writeNV(0x0004, 0x0002, 0, sizeof(pairedFlag),   (void*)&pairedFlag);
    zclport_writeNV(0x0004, 0x0003, 0, sizeof(identifier),   (void*)&identifier);
    在存储器初始化、读取和写入期间、请注意大小。 很明显、您知道这一点。 但同样容易犯错、制造混乱。
     
    此致、
     
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    嗯、好的。 我想、当您提到尺寸时、我错过了一些东西。

    非常感谢! 你们两个人都很有帮助。