#author("2022-11-09T14:15:14+08:00","default:Admin","Admin") #author("2022-11-09T14:26:48+08:00","default:Admin","Admin") [[+Zigbee30+EmberZnet]] &color(red){※This article is based on Simplicity Studio 4 、EmberZnet SDK 6.7.5.0 and EFR32MG Series}; #contents * Simplicity Studio [#o27dbd19] Simplicity Studio 工具的主要目的不是编译调试,而是一个工程项目的模板编辑器, 他创建的工程项目,再在IAR 等 IDE 工具中打开使用,用 IAR 等工具进行开发编译调试。 为了后期的版本升级方便,建议最大程度的使用 Simplicity Studio 工具进行代码的开发,IAR 等工具只作为编译器去使用。 例程 https://github.com/SiliconLabs/zigbee_applications ** 创建一个Zigbee项目 [#j06a2432] 您可以按照以下步骤创建Zigbee项目: + 转到File->New->Project。 这将显示 "New Project Wizard"; + 选择“ Silicon Labs AppBuilder项目”,单击“Next”; + 选择“ Silicon Labs Zigbee”,单击“Next”; + 选择我们用于SoC的最新EmberZNet协议栈,单击“Next”; + 这里将列出示例项目。您可以选择其中之一,单击“Next”; + 命名您的项目,例如“ ZigbeeMinimal”,单击“Next”; + 在下一个窗口(项目设置)中,选择板(如果要开发自定义板,请将“board”字段留空,然后选择芯片型号。)和编译器,单击“Finish”。之后,创建项目。项目的isc文件将自动打开。 ** 项目工程的设置 [#hc1e3f0e] 项目通过使用 isc 文件进行配置,在 Simplicity Studio 里面打开 isc 文件,可以看到下面的选项卡 *** Zigbee Stack [#zfd6a1be] 可以设置设备类型和安全性类型。对于Zigbee设备类型,我们有四个选项: - Cooridnator or Router - Router - End Device - Sleepy End Device *** ZCL CLuster [#f3e4fe51] 确定Zigbee设备类型后,您可以设置endpoint和每个endpoint所在的cluster。这些功能在“ ZCL Clusters”选项卡下。 + 首先,您需要设置制造商代码。这是Zigbee联盟在您公司的第一个产品通过联盟认证时提供的代码。如果您的公司已经获得了制造代码,则可以从列表中选择。 + 其次,您可以在此处添加/删除endpoint,还可以选择要在endpoint上使用的设备配置文件。您还可以根据配置文件选择其他Clusters。在这种情况下,设置“ ZCL设备类型”时,请勿直接选择Zigbee设备配置文件。而是选择“ Zigbee Custom”,然后选择一个设备配置文件。您可以选择Cluster,然后选择Cluster定义的属性和命令。 + Cluster的属性和命令在Zigbee Cluster Library(ZCL)中定义。选择属性和命令时,需要参考ZCL规范。 *** Plugins [#x723d338] 插件的属性 |属性|注释|h |Plugin Name|插件名称| |Quality|插件的质量可能是:&br; 制作准备&br; 测试工具&br; 扩展需求&br; 示例代码&br; 内部测试&br; 公开测试&br; 调试工具| |Option|插件选项| |Located|插件目录| |Source files|插件的源文件| |Defined callbacks|此插件定义的回调| |Implemented callbacks|在协议栈或其他插件中定义的回调,用此插件实现| 大多数插件都是开源的。您可以检查源代码以了解其实现方式。 常用插件 |类别|插件|注释|h |核心协议栈|Zigbee PRO Stack Library|具有路由支持的核心协议栈,由路由和协调器使用| |~|Zigbee PRO Leaf Library|不支持路由的核心协议栈,由终端设备使用| |~|End Device Support|一个支持终端设备的插件| |~|Network Creator|创建网络,由协调器使用| |~|Network Creator Security|协调器的安全设置,例如为新设备配置Link key| |~|Network Steering|扫描可加入的网络并加入| |睡眠|Idle/Sleep|由睡眠终端设备使用。空闲时设备将进入EM2。| |~|EM4|插件可帮助睡眠终端设备进入EM4| |主条目|Simple Main|项目的主要入口| |非易失性数据|Simulate EEPROM Version 1 Library|模拟EEPROM版本1的库,用于存储非易失性数据| |~|Simulate EEPROM Version 2 Library|模拟EEPROM版本2的库,用于存储非易失性数据| |~|NVM3 Library|NVM3库,用于存储非易失性数据| *** HAL [#n6a300c5] Bootloader Configuration - Default:Application - None - Application - Standalone - Local Storage 点击“ Open Hardware Configurator”按钮,可以打开“Hardware Configurator”对芯片引脚进行设置 *** Callbacks [#a8b8384b] Silicons Labs建议客户在回调中添加其自定义源代码。好处是,当您从旧的SDK迁移到新的SDK时,这将非常容易。 建议在生成的文件<projectname>_callbacks.c 中定义和实现选定的回调。您也可以将它们添加到新的源文件中。 ** 环境问题 [#c567dd4b] *** Could not erase chip, error code -13 (Invalid MCU Info.). [#x58a4a4b] *** The given part number (efr32mg1b232f256gm32) does not match the detected device (EFR32MG21A020F768) [#n6655875] Try Project->Properties->Run/Debug Settings "iRIS_270FX Debug" -> Edit button, Connection tab Also Simplicity Commander.. click Connect twice defiantly the right processor... on two counts you shouldn't configure the part number as mgmxxx in Simplicity IDE, that is not a valid part number. you should use efr32ngxxxx as the commander showed. C:\SiliconLabs\SimplicityStudio\v4\developer\adapter_packs\commander>commander device info -d cortex-m4 --serialno 440029541 ** 工程文件 [#y6a0c54d] 完成项目设置后,保存并按下按钮“ Generate”,AppBuilder将生成项目。 |文件|描述|h |<projectname>.h|主头文件。此处列出了所有插件设置,回调设置| |<projectname>_callbacks.c|生成的源文件。自定义回调和事件处理应在此文件中实现。| |<projectname>_endpoint_config.h|定义endpoint,属性和命令| |znet-cli.c/znet-cli.h|CLI命令列表| |client-command-macro.h|定义大量宏指令用于填充消息| |call-command-handler.c|Cluster命令处理| |attribute-id.h/attribute-size.h/attribute-type.h/att-storage.h|相关属性| |af-structs.h|数据结构| |af-gen-event.h|事件/处理程序对| ** 编译 [#w2d875cd] 编译完成后,生成的应用程序image位于: - 如果使用的是IAR,则为“ IAR ARM-默认”目录 - 如果使用的是GCC,则为“ GNU ARM v7.2.1-默认”目录 - 生成的应用程序image是 .s37/.hex 文件。您可以将它们烧录到设备中进行测试。 *** 编译问题 [#m1ab70c6] *** identifier "BSP_PTI_DOUT_LOC" "BSP_PTI_DOUT_PORT" "BSP_PTI_DOUT_PIN" "BSP_PTI_DFRAME_LOC" "BSP_PTI_DFRAME_PORT" "BSP_PTI_DFRAME_PIN" is undefined [#vcebc50e] 显示以下的错误信息: #codeprettify{{ Error[Pe020]: identifier "BSP_PTI_DOUT_LOC" is undefined D:\Tools\SimplicityStudio-EmberZnet 6.7.5.0\SimplicityStudio\v4\developer\sdks\gecko_sdk_suite\v2.7\platform\base\hal\micro\cortexm3\efm32\hal-config.c 379 Error[Pe020]: identifier "BSP_PTI_DOUT_PORT" is undefined D:\Tools\SimplicityStudio-EmberZnet 6.7.5.0\SimplicityStudio\v4\developer\sdks\gecko_sdk_suite\v2.7\platform\base\hal\micro\cortexm3\efm32\hal-config.c 380 Error[Pe020]: identifier "BSP_PTI_DOUT_PIN" is undefined D:\Tools\SimplicityStudio-EmberZnet 6.7.5.0\SimplicityStudio\v4\developer\sdks\gecko_sdk_suite\v2.7\platform\base\hal\micro\cortexm3\efm32\hal-config.c 381 Error[Pe020]: identifier "BSP_PTI_DFRAME_LOC" is undefined D:\Tools\SimplicityStudio-EmberZnet 6.7.5.0\SimplicityStudio\v4\developer\sdks\gecko_sdk_suite\v2.7\platform\base\hal\micro\cortexm3\efm32\hal-config.c 385 Error[Pe020]: identifier "BSP_PTI_DFRAME_PORT" is undefined D:\Tools\SimplicityStudio-EmberZnet 6.7.5.0\SimplicityStudio\v4\developer\sdks\gecko_sdk_suite\v2.7\platform\base\hal\micro\cortexm3\efm32\hal-config.c 386 Error[Pe020]: identifier "BSP_PTI_DFRAME_PIN" is undefined D:\Tools\SimplicityStudio-EmberZnet 6.7.5.0\SimplicityStudio\v4\developer\sdks\gecko_sdk_suite\v2.7\platform\base\hal\micro\cortexm3\efm32\hal-config.c 387 }} 打开.hwconf文件(或者在isc文件的 HAL 选项卡里面找到“Open Hardware Configurator”),找到PTI,将其取消,或者配置对应的参数,试缺少的参数补齐(PTI一般开发板才需要配合使用) *** Type RAIL_Handle_t RAIL_Status_t RAIL_STATUS_NO_ERROR could not be resolved hal-config.c [#z925b173] 在isc文件的 includes 选项卡里面,add directory... 添加下面的路径 安装路径\SimplicityStudio-EmberZnet 6.7.5.0\SimplicityStudio\v4\developer\sdks\gecko_sdk_suite\v2.7\platform\radio\rail_lib\common ** 烧录 [#y351e695] *** The connected device does not have a Secure Element (ID Code 43000467) [#k2c4b50c] Simplicity Studio 自带的烧录器的问题,使用 Simplicity Commander 烧录即可解决 参考URL https://community.silabs.com/s/question/0D51M00007xeRSnSAM/cannot-debug-mgm210p022jia2-using-external-ji-link-secure-element-not-present?language=en_US * Simplicity Commander [#l337c9d9] Simplicity Commander 是一个实用程序,可提供对 EFM32 设备调试功能的 GUI 和命令行访问。它允许您刷新固件、更新套件固件以及锁定或解锁调试访问。此工具旨在替换 eACommander。 下载地址 https://www.silabs.com/documents/public/software/SimplicityCommander-Windows.zip simplicity studio v5 的话,点击 tools 选择 simplicity commander 默认的路径 安装路径\SimplicityStudio-EmberZnet 6.7.5.0\SimplicityStudio\v4\developer\adapter_packs\commander ** 命令行 [#b8d440dc] 可以使用commander.exe刷新引导加载程序,包括公共签名密钥和加密密钥。 下面的列表显示了以SN 440049475为例的板的commander.exe的参数: - 擦除Flash Commander device masserase --serialno 440049475 --device Cortex-M4 - 复位 Commander device reset -s 440049475 -dCortex-M4 - 擦除Bootloader Commander device pageerase --region @bootloader -s 440049475 -d Cortex-M4 - 擦除Lockbits Commander device pageerase --region @lockbits -s 440049475 -d Cortex-M4 - 烧录Bootloader: Commander flash C:\dk2\Apps458\BootLoader_7.11.0_458\OTA-bootloader-fg13-combined.s37 -s 440049475 -d Cortex-M4 - 烧录Keys Commander flash--tokengroup znet –tokenfileC:\Apps458\BootLoader_7.11.0_458\sample_encrypt.key --tokenfileC:\Apps458\BootLoader_7.11.0_458\sample_sign.key-tokens.txt -s 440049475 -d Cortex-M4 - 擦除Flash:devicemasserase -s 440049475 -d Cortex-M4 - 复位:device reset -s 440049475 -dCortex-M4 - 烧录应用程序: Commander flash "C:\Apps458\dev.hex"--address 0x0 -- serialno 440049475 --device Cortex-M4 - 复位 device reset -s 440049475 -dCortex-M4 - 获取token(MAC地址) Commander tokendump --tokengroup znet --token TOKEN_MFG_STRING --token TOKEN_MFG_EMBER_EUI_64 --device Cortex-M33 Commander tokendump --tokengroup znet --token TOKEN_MFG_CUSTOM_EUI_64 --token TOKEN_MFG_EMBER_EUI_64 --device Cortex-M33 Commander tokendump --tokengroup znet --outfile tokens.txt --device Cortex-M33 - 设置token(MAC地址) Commander flash --tokengroup znet --token TOKEN_MFG_CUSTOM_EUI_64:"0300000003900007" --device Cortex-M33 [[UG162 Simplicity Commander Reference Guide:http://www.silabs.com/Support%20Documents/TechnicalDocs/ug162-simplicity-commander-reference-guide.pdf]] *** 注意 [#x97b2465] 不能使用下面的命令去修改 TOKEN_MFG_EMBER_EUI_64 - 不能使用下面的命令去修改 TOKEN_MFG_EMBER_EUI_64 Commander flash --tokengroup znet --token TOKEN_MFG_EMBER_EUI_64:"0300000003900008" --device Cortex-M33 执行后提示下面的错误 #codeprettify{{ WARNING: Could not retrieve debug mode, can not identify target device. Reconfiguring debug connection with detected device part number: EFR32MG21A020F768 ERROR: Cannot write token "MFG_EMBER_EUI_64" to region "DEVINFO" - not writeable. DONE }} - 提示下面的错误 No serial number or IP address given. cannot lock access toadapter. 需要添加 -s / -serialno 选项,来指定序列号(就是jLink的号) ** Troubleshooting [#x6fbbd05] *** Error: Could not get Memory Layout [#w26263d5] 检查是否有线松动 &ref(ZigBee.png); #hr(); Comment: #comment_kcaptcha