[原创] 【KW41Z设计大赛】Thread初步开玩

shinykongcn   2017-7-16 19:00 楼主
KW441Z 支持thread和ble同时的特性,让我很兴奋。thread属首次接触,看了挺长一段时间了,有的地方可能还是一知半解,先记下来,又不对的地方,欢迎拍砖。在这里赞一下nxp提供的文档,看起来很丝滑有木有~~kw41z的sdk提供了详细的文档,不用上网站一个个下,省心很多。关于thread的文档位于docs/wireless/thread目录下。thread相关的demo也很丰富,这里暂时了解的有router eligible device和end device两种设备类型的demo,这两个demo能完整的表现thread组网的内容,其中reed设备可以转换为leader router、active router和end device的角色。除了border router与非thread网络通信的内容,其它都可以从这两个demo中学习到。
Kinetis Thread Stack Demo Applications - Google Chrome.jpg
Thread节点类型

说说thread,百科曰:Thread is an IPv6-based, closed-documentation, royalty-free[1] networking protocol for Internet of Things (IoT) "smart" home automation devices to communicate on a local wireless mesh network.
thread是一个针对IoT应用的IPv6 mesh网络协议,底层mac和phy层基于802.15.4无线协议标准(Zigbee也是基于802.15.4). 这里的IPv6为6LowPAN, IPv6 over Low power Wireless Personal Area Networks. 看全程应该很明白了。下面看一下Thread的结构:
联网家庭的 Thread 网络解决方案芯科科技 - Google Chrome.jpg
6LowPAN在mac层和phy层之上,由Thread实现,Thread同时实现的还有路由和udp协议,这些都可以对比传统的网络模型加以理解。再之上就是应用层了,比较常用的是CoAP协议,可以类比为常见的HTTP协议,CoAP协议全称为Constrained Application Protocol由于HTTP这种协议用在嵌入式设备上显得过于庞大,所有就有了这货。


大概理清了Thread协议的结构之后,另外还需要理解一下IPv6协议才好进行下一步了。因为Thread中跟其它节点沟通需要知道对方节点的IPv6地址, 不同于以往的IPv4地址表示方法,IPv6使用128位二进制数据表示一个IP地址. IPv6地址的记法分为标准和简写,这里以我的KW41Z的ifconfig信息为例说明一下。
欢迎使用百度网盘.jpg

标准写法为用:分割的8组4个4位16进制数表示,我的kw41z的ML64地址 fd18:ac32:9b0f:b537:145d:c752:46ba:e917,而简写分为单组前0省略和多组全0省略。单组前0省略如ML16地址 fd18:ac32:9b0f:b537::ff:fe00:400最后一组地址400,本来应该为0400,前面的0省略了。多组全0省略指当相邻的几组全为0是,用两个冒号::省略这些0,如LL64地址 fe80::8008:bcc4:9a4e:2d25,这里需要注意的是,这种::省略只能使用一次,因为多次的时候,就不能确定这中间到底省略了几组数据了。 另外IPv6还可以兼容IPv4,具体写法参考这个链接

另外大家应该有注意到这里有好几个IP信息:
前3个为单播IP:
Link Local   指单个子网的ip,即一个active router下有效,类似于我们常见的192.68.1.x局域网ip
Mesh Local 指整个Thread Mesh网络的IP地址,用于在整个Mesh网络中通信
其实应该还有另外一种IP地址,由border router分配的广域网IP,可全球定位的。
此外这里的地址还有 16和64之分,这里的16、64指的是子网掩码,类似于我们平时常见的192.168.1.0/255.255.255.0,这种子网还有另外一种记法就是192.168.1.0/24,也就是我们这里的 LL64、ML16这样的地址了,可不要以为是16/64位地址哦。
后二个为多播/组播IP,用于数据广播,不做进一步解释。


好了,先写这么多





此内容由EEWORLD论坛网友shinykongcn原创,如需转载或用于商业用途需征得作者同意并注明出处



HELLO_WATER

回复评论 (13)

看不懂,帮顶!
点赞  2017-7-16 20:06
say what?不懂帮顶
我是一头搞电子的猪,猪是一种好色的动物,猪八戒就是代表.       
点赞  2017-7-16 20:06
带我玩带我飞
点赞  2017-7-16 22:04
两块板玩thread,猴赛雷
RTEMS
点赞  2017-7-17 00:09
引用: lcofjp 发表于 2017-7-16 20:06
看不懂,帮顶!

队长给力
HELLO_WATER
点赞  2017-7-17 09:19
引用: long521 发表于 2017-7-16 20:06
say what?不懂帮顶

酷叔搞起
HELLO_WATER
点赞  2017-7-17 09:20
引用: strong161 发表于 2017-7-16 22:04
带我玩带我飞

听说你回水群了,怎么不见你装x
HELLO_WATER
点赞  2017-7-17 09:20
引用: 54chenjq 发表于 2017-7-17 00:09
两块板玩thread,猴赛雷

5毛一块收几块,哪里有
HELLO_WATER
点赞  2017-7-17 09:21
引用: shinykongcn 发表于 2017-7-17 09:21
5毛一块收几块,哪里有

哪里有这么便宜的
点赞  2017-7-17 09:34
写得好,都直接用16进制fd, ac编程了,顶了也完全看不懂。
默认摸鱼,再摸鱼。2022、9、28
点赞  2017-7-17 10:58
dian boom sky
So TM what......?
点赞  2017-7-17 19:00
引用: ljj3166 发表于 2017-7-17 19:00
dian boom sky

专心开车,注意路况
HELLO_WATER
点赞  2017-7-18 20:24
顺便发一下找到的关于ip地址类型的说明

What are the differences of  these three local IP addresses?

* IP 0 contains the mesh-local 64 address of the node.
* IP 1 contains the link-local 64 address of the node.
* IP 2 and greater will return any global unicast addresses (GUAs) of this node.


Mesh-Local is for sending a message anywhere on the entire mesh.Thread uses mesh-local addresses to reach Thread interfaces within the same Thread Network Partition.

Link-Local is nodes within a single hop. Thread uses link-local addresses to reach Thread interfaces within range of a single radio transmission. Thread devices use link-local addresses to discover neighbors, configure links, and exchange routing information. A Thread device MUST assign a link-local IPv6 address where the interface identifier is set to the MAC Extended Address with the universal/local bit inverted.

Global Unicast Address is assigned by the Border Router so this is generally used from outside the mesh. Thread interfaces MAY assign additional IPv6 unicast addresses for valid prefixes assigned to the Thread Network. Such addresses can be used to enable communication with devices outside the Thread Network Partition.
HELLO_WATER
点赞  2017-7-18 20:25
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复