Proprietary Knowledge Base

    Publish
     
      • ZigBee 3.0 网络:如何使用install code生成的Link Key加入Z3网络?

        Lesun | 07/198/2017 | 12:35 AM

        问题

         

        ZigBee 3.0 网络:如何使用install code生成的Link Key加入Z3网络?

        答案

         

        在ZigBee 3.0之前,install code只用于Smart Energy网络。现在,所有的ZigBee 3.0设备都需要支持install code,但是否在网络中使用由Trust Center决定。在本文中,你可以按照以下步骤使用命令行(CLI命令)的方式,将Z3 Light使用install code生成Link Key方式加入到Z3 Gateway中。本文适用于EM358x或者EFR32平台。

         

        假定你已经编译了Z3 Light的示例代码,以及Z3 Gateway的示例代码。其中Z3 Light是SOC模式,Z3 Gateway的是以NCP + Host模式。在创建Z3 Gateway的示例代码时,需要设置Link Key table的大小,可在“NCP configuration” plugin中配置,设置其至少为1(默认为0)。

         

        1. 确保Z3 Light没有处在任何网络当中。可以使用“network leave” CLI命令使其退网。
        2. 在Z3 Light的设备中安装install code,install code可以是6/8/12/16字节。在本例子中,使用00112233445566778899AABBCCDDEEFF,将其保存到txt文本中,格式如下:
        Install Code: 00112233445566778899AABBCCDDEEFF
        1. 按照AN714第4、5部分的指导,将install code安装到Z3 Light设备的Token中。我的EFR32MG1的无线板子+WSTK的套件的serial number是#440069872。在Windows系统的CMD窗口中输入以下命令:
        >commander flash --tokengroup znet --tokenfile installCode.txt --serialno 440069872

         

        你将看到窗口输出以下内容:

        Writing 2048 bytes starting at address 0x0fe04000
        Comparing range 0x0FE04000 - 0x0FE047FF (2 KB)
        Erasing range 0x0FE04000 - 0x0FE047FF (1 sector, 2 KB)
        Programming range 0x0FE04240 - 0x0FE0435F (288 Bytes)
        Verifying range 0x0FE04000 - 0x0FE047FF (2 KB)
        DONE

         

        为了验证install code是否安装成功,可以使用以下命令将Token导出进行验证:

        >commander tokendump --tokengroup znet --serialno 440069872

         

        在输出的信息中包含以下重要内容:

        #
        # The token data can be in one of three main forms: byte-array, integer, or string.
        # Byte-arrays are a series of hexadecimal numbers of the required length.
        # Integers are BIG endian hexadecimal numbers.
        # String data is a quoted set of ASCII characters.
        #
        # MFG_EMBER_EUI_64     : E3F607FEFF570B00
        ……
         
        #'MFG_INSTALLATION_CODE (Smart Energy Install Code)' token group
        # Install Code Flags : 0x0006
        Install Code       : 00112233445566778899AABBCCDDEEFF
        # CRC                : 0x8F52

         

        1. 在Z3 Gateway中,使用以下CLI命令建立Centralized网络:
         
        >plugin network-creator start 1
         
        NWK Creator: Form: 0x00
        Z3GatewayHostv510>NWK Creator Security: Start: 0x00
        NWK Creator: Form. Channel: 20. Status: 0x00
        Form Centralized network complete: 0x00
        NWK Creator: Stop. Status: 0x00. State: 0x00
        EMBER_NETWORK_UP 0x0000

         

        1. 使用以下命令将install code生成Link Key,并存储在Z3 Gateway中。Z3 Gateway作为Centralized的Trust Center。

        option install-code [KeyTableIndex:1] [ieeeAddress:8] [installCode:-1]

         

        option install-code 0 {00 0B 57 FF FE 07 F6 E3} {00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 52 8F}

        其中option install-code后面第一参数是Link Key table的指引。

        第二个参数是入网节点的EUI64地址。

        第三个参数是install code。你可以通过使用CLI “info”来查看入网节点Z3 Light的EUI64地址(node [(>)000B57FFFE07F6E3])。

        第四个参数是install code加上其对应的CRC校验码。你可以通过第3步的tokendump命令得到install code的CRC校验码。注意:这里是以大端格式排列。

         

        1. 使用Network Analyzer工具对入网过程进行抓包(可选)。在Simplicity Studio视图中转到Network Analyzer,并右键单击J-Link adapter,选择capture 进行抓包。如果你处于一个噪音环境下,可以选择在指定的PAN ID上进行抓包。

         

        1. 使用如下CLI命令,在Z3Gateway(Trust Center)上设置临时的Link Key(与install code生成的Link Key相同):

        plugin network-creator-security set-joining-Link-Key {eui64} {LinkKey}

        plugin network-creator-security set-joining-Link-Key {00 0B 57 FF FE 07 F6 E3} {9A A4 67 C7 8F 45 43 F1 BC A6 CA 03 C3 D7 3B 31}

         

        1. 在Z3Gateway中使用如下CLI命令设置允许加网:
        plugin network-creator-security open-network

         

        1. 最后在Z3Light中使用Network Steering plugin命令加入网络。
        plugin network-steering start 0

        以上步骤就是通过install code生成的临时Link Key顺利加入到Z3网络中。如果你在第6步使用Network Analyzer进行抓包,可以看到整个入网过程。Z3 Light初始化网络使用临时的Link Key。Trust Center使用临时的Link Key将Network Key传输给Z3 Light,(请参考"Transport Key (NWK)"帧)。最后Z3 Light请求一个新的Link Key,Trust Center传输新的Link Key给Z3 Light,(请参考"Transport Key (Link)"帧)。

         

         

      • EmberZNet 以及Thread协议栈需要用哪个版本的IAR EWARM进行编译?

        Lesun | 07/186/2017 | 04:33 AM

        问题

         

        EmberZNet 以及Thread协议栈需要用哪个版本的IAR EWARM进行编译?

        答案

         

        Silabs有多个版本的 EmberZNet ZigBee和SL-Thread 协议栈,以及新的Gecko Bootloader SDK。我们需要哪些版本的编译器来编译这些不同版本的协议栈?

         

        IAR-EWARM 用来编译Silicon Labs的EM3xx以及EFR32 MCUs。使用当前最新版本的Simplicity Studio进行开发,安装完Simplicity Studio之后,需要安装IAR-EWARM,并将其导入到Simplicity Studio中,步骤如下所示:

         

        Simplicity Studio-> Windows-> Preferences -> Simplicity Studio -> Toolchains-> click “Add” button.

         

        对于EmberZNet 5.7以及之后的版本都必须使用Simplicity Studio进行开发。不同的协议栈对应的IAR编译器版本如下:

        Stack Version

        Compiler Version

        EmberZNet 5.9.x; SL-Thread 2.1; SL-Thread 2.2

        EWARM 7.80.2

        EmberZNet 5.8.x; SL-Thread 2.0

        EWARM 7.80.2

        EmberZNet 5.4.x through 5.7.x; SL-Thread 2.0 and prior

        EWARM 7.30.1

        EmberZNet 5.0.x through 5.3.x

        EWARM 6.40.2

        EmberZNet 4.6

        EWARM 6.21.1

        EmberZNet 4.0 through 4.5

        EWARM 5.40.5

         

        Gecko Bootloader Main Bootloader v.1.0.0 可以使用 EWARM 7.80.2或者GCC (GNU ARM) versions 4.9.3/4.8.3进行编译,在Simplicity Studio 4中安装Gecko SDK之后会自动安装GCC。