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.

[参考译文] CC2652RB:OpenThread 设置在闪存中的什么位置、如 IPv6。 ? 如何防止获取新的 IPv6地址?

Guru**** 2577385 points
Other Parts Discussed in Thread: CC2652RB

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

https://e2e.ti.com/support/wireless-connectivity/zigbee-thread-group/zigbee-and-thread/f/zigbee-thread-forum/920754/cc2652rb-where-are-the-openthread-settings-located-in-flash-like-ipv6-how-to-prevent-getting-a-new-ipv6-address

器件型号:CC2652RB

目前我不断刷写同一图像、设备每次都会获取新的 IPv6地址。

日志:  

[12:01:40][fdde:ad00:furb0:b6c9:102a:ddbf:9410]:5683"虚拟"{"温度":1337、"电池":0、"euid":"0x00124b00214f48b5"}
[12:02:32][fdde:ad00:furb0:7e9b:4b5e:41c5:e723]:5683"虚拟"{"温度":1337、"电池":0、"euid":"0x00124b00214f48b5"}
[12:03:08][fdde:ad00:falk:0:a7ae:dbef:f249:9c25]:5683"虚拟"{"温度":1337、"电池":0、"euid":"0x00124b00214f48b5"}
[12:15:52][fdde:ad00:牛肉:0:2038:4505:cf7f:459f]:5683"虚拟"{"温度":1337、"电池":0、"euid":"0x00124b00214f48b5"}
[12:16:13][fdde:ad00:furb0:83fc:28b2:2bd1:65f7]:5683"虚拟"{"温度":1337、"电池":0、"euid":"0x00124b00214f48b5"}

想知道这些设置究竟存储在闪存中的什么位置?

我不清楚这些闪存的关联位置。 因此、我可以在闪烁期间跳过它

即使我不擦除器件而只是刷写同一图像、它仍会获得新的地址。

BTW、我的设置:

-使用串行引导加载程序并使用以下工具进行刷写: https://github.com/JelmerT/cc2538-bsl

-将 Launchpad 作为边界路由器运行,并使用 wpantund 创建本地网络接口。

-一个简单的 golang 服务器正在侦听和打印接收到的 CoAP 信息

-器件是我的定制设计: https://www.tindie.com/products/slaesh/cc2652-zigbee-coordinator-or-openthread-router/ 只需在开始时发送 CoAP 消息并按下按钮

想象一下这种情况:

设备 A 希望向设备 B 发送 MSG

设备 A 知道设备 B 的 IPv6地址。

器件 B 以某种方式更改了该地址?!

器件 A 现在应该怎么办? =/

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

    我猜我找到了!

    链接器文件(CC2652RB_LAUNCHXL_TIRTOS.lds)

    .NVS (空载):align (0x2000){
    *(.NVS)
    }> region_text 

    TI_DRIVERS_CONFIG.c

    __attribute__((section (".NVS"))
    ) static char flashBuf0[0x4000];
    

    无论如何…… 问题仍然存在!

    任何设备如何知道任何其他设备的 IPv6地址?

    唯一已知的固定值是 euid。 ?!

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

    您好!

    感谢您分享您对 NV 区域部分的发现。

    应在应用程序 中实现器件发现:https://groups.google.com/forum/#!topic/openthread-users/fkA385Lyd_E

    也就是说、您可以使用 DHCPv6之类的内容、它具有地址管理(租赁、续订、释放等)的规定。

    此致、
    Toby

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

    感谢 Toby 的快速回复和这些提示!

    对我来说、您有什么起点吗? 谁正在分配 IP?

    -NCP 边界路由器设备?

    -wpantund?

    -我的 PC?

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

    尝试引用 openthread.io/.../ipv6寻址

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

    除黄先生的帖子外:

    根据用例和范围、单个 Thread 设备可通过多个 IPv6地址进行标识。

    最初形成 Thread 网络  的器件决定网格-本地前缀是什么(请参阅 thread_api.cpp 中的函数 otThreadSetExtendedPanId)。

    之后,加入和委托的设备将被分配地址(在链接所引用的链接 YK 的结构中)。

    由于边界路由器用作 Thread 网络和非 Thread IP 设备之间的接口、因此它可能会为此分配额外(全局范围)地址(例如 DHCPv6服务器)。 边界路由器实体由 wpantund 和 NCP 组成,wpanctl 提供各种 CLI 命令(https://github.com/openthread/wpantund)。

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

    感谢您提供的信息!

    但我仍在想... 想象一下以下情况:

    角色1:灯开关

    演员2:灯光

    我想告诉演员1,如果他换了,他应该告诉演员2切换灯光!

    目前、他们在同一个房间内、靠近同一台路由器、其中一个甚至是路由器。

    但现在我把演员1搬到花园里的小木屋里。 通过另一台路由器连接..

    我不想再把它们配对、它应该起作用!

    而无需任何边界路由器。 就是网络本身!

    使用即时 OT 是不可能实现的?

    我不知道如何"配对"这些人来知道将其数据包发送到何处。

    或者、我是否需要始终发送广播、并将目标置于其有效负载中。 在一个巨大的网络中似乎是一个过度使用的现象。

    谢谢! )

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

    是的、规范中包含了路线维修功能。

    器件的网状本地端点标识符(ML-EID)应在 Thread 网络中保持恒定(并应供应用使用)。 如何完成"配对"由应用程序的配对逻辑决定。

    假设配对完成、角色1知道角色2的 ML-EID。 在您的示例中,角色1被移动,这样它到角色2的路由可能不再有效。 然后,网络层(角色1或其父节点)将继续查找到角色2的有效路由(例如,角色2的 ML-EID)。

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

    谢谢你 Toby! 这些就是我遗漏的两分!

    当然、配对是我(应用)的一部分!

    喜欢开始黑客攻击