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.

[参考译文] CC1312PSIP:传感器/收集器清除 NVRAM 不会清除 RAM、以便重新建立网络。

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

https://e2e.ti.com/support/wireless-connectivity/sub-1-ghz-group/sub-1-ghz/f/sub-1-ghz-forum/1412879/cc1312psip-sensor-collector-clearing-nvram-does-not-clear-ram-for-network-to-reestablish

器件型号:CC1312PSIP

工具与软件:

我发布了一个问题、我找不到一个问题、我试图在收集器启动时执行什么操作、您按住 BTN-2以清除 NVRAM、这也会清除 RAM、因为它是在设备首次通电时完成的。  我需要在代码中执行类似的操作、还需要能够清除 ram。  我们会在将来的版本中指出这是一个需要修复的错误、但我现在需要执行此操作。  有没有人可以指出我可以找到的结构,我可以清除自己?

谢谢!

Kevin

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

    尊敬的 Kevin:

    如果在器件启动后调用函数"csf_clearAllNVItems ();"、则会擦除 NV 闪存、但连接的器件的地址仍保留在 RAM 中。 复位器件后、擦除将生效、因为启动时、器件无法恢复先前连接的器件的任何地址。 这不是错误。 如果您要解除设备关联、您有两个选项:

    1.调用"csf_clearAllNVItems();"、 然后执行一个重新启动设备的过程 (定时器?)。

    2.您可以在运行时按照以下示例移除设备。

    如果您要在运行时删除器件、我建议您查看有关删除器件的示例。 因此、您需要在收集器项目(application -> collector)中的"csf.c"文件开头添加以下定义:

    #define TEST_REMOVE_DEVICE

    使用 BTN-1启动收集器网络后、您可以再次按 BTN-1以删除第一个加入的传感器。
    它的实现可以在函数"removeTheFirstDevice()"(第2697行、csf.c)中找到。

    函数调用在第754行中实现:

    您可以修改 removeFirstDevice 函数来 删除所有设备或您指定的设备、并在代码中将其调用到需要的位置。 这还可以确保未关联的器件不会处于孤立状态。

    如果您可以使用两种建议方法之一在运行时删除这些器件、请告诉我。

    此致、
    等等

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

    theo、

    我无法通过此文件删除所有商品。  我仍然需要重新启动收集器侧(可能甚至是传感器)以使两者在网络上再次配对。  我看到的消息是拒绝访问。  您是否知道该消息的性质以及它与网络状态的关系?

    谢谢!

    Kevin

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

    尊敬的 Kevin:

    您遵循了以下两种解释的方法中的哪一种?您是如何实施的?

    如果 清除收集器 NV 闪存然后重新启动、则会出现消息"access denied"。 如果跟踪连接到收集器的传感器之前的网络尝试连接到它(因为它未被清除和重新启动)、收集器将不允许它加入其网络、因为它无法记住它。

    如果要使用"csf_clearAllNVItems ();",您必须在收集器和传感器上调用它,然后重新启动设备。

    我真的建议您考虑一下从网络中安全删除设备的选项 、下面是"removeTheFirstDevice()"。 如果您使用它从收集器中移除传感器、则传感器之后可以再次加入新网络、并且不会成为孤立网络。

    此致、
    等等  

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

    theo、

    我使用了 removeTheFirstDevice()并且仍然有问题。  下面是我在从网络中移除传感器时使用的调用:

    //将已解除关联的消息发送到当前已配对的设备、这样它就不会在尝试与其他设备配对后立即重新加入
    csf_sendDiscassociateMsg (networkItems.item[0].devInfo.shortAddress);

    //网络需要时间来断开关联
    Usleep(100000 );

    //删除此网络的所有非易失性项目。
    csf_clearAllNVItems();

    //网络需要时间来清除项目
    Usleep(100000 );

    //删除在设备列表中找到的第一个设备。
    removeFirstDevice();

    //网络需要时间来清除活动连接
    Usleep(100000 );


    //开始快速闪烁
    LED_startBlinking (ledHandle[CONFIG_LED_RIGHT]、250、LED_BLINK _FOREVER);

    /*指示收集器启动网络*/
    formNwkAndUpdateUser();

    /*在应用程序线程等待时钟事件时唤醒*/
    sem_post (getCollectorSemaphore ());

    /*开放网络*/
    openCloseNwkAndUpdateUser (true);

    /*在应用程序线程等待时钟事件时唤醒*/
    sem_post (getCollectorSemaphore ());

    Kevin

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

    尊敬的 Kevin:

    要仅测试传感器的删除、请删除所有函数调用、但调用"removeTheFirstDevice();"除外、然后再次测试。
    该操作开始后、我们可以重新添加您的其余功能。

    谢谢!
    等等