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.

[参考译文] CC1352P7:CC1352/2652中的 ZigBee 密钥存储在哪里? 以及如何在电路板生产期间将其存储在 MCU 中?

Guru**** 2422670 points
Other Parts Discussed in Thread: SYSCONFIG, Z-STACK

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

https://e2e.ti.com/support/wireless-connectivity/zigbee-thread-group/zigbee-and-thread/f/zigbee-thread-forum/1218164/cc1352p7-where-is-the-zigbee-key-stored-in-the-cc1352-2652-and-how-can-i-store-it-in-the-mcu-during-the-production-of-the-boards

器件型号:CC1352P7
Thread 中讨论的其他器件:SysConfigZ-stack

您好、TI!

ZigBee 密钥存储在 CC1352/2652中的何处?

在电路板的生产过程中、如何将其存储在 MCU 中?

能否通过 UART 对其进行配置?

注意:这些问题主要与作为终端器件的 CC1352/CC2652有关。

谢谢!

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

    您好、albgarc:

    您是否指的是默认 NWK 密钥?  这可以由 SysConfig -> Z-Stack ->网络模块内的编译器进行定义。   此值存储在 NWK_globals.c 内定义的 defaultKey 变量中、并在 stackInit -> zgInit -> zgPreconfigKeyInit 内进一步计算  、这在栈初始化期间发生如果未设置为全部0x00、则它确定 zgPreConfigKey 的值、否则会随机生成此值。  然后、它被存储在 NV 项目 ZCD_NV_PRECFGKEY 中、然后被局部清零。  您可以选择  在运行时使用 UART 重新写入 ZCD_NV_PRECFGKEY 的值、这与 Monitor 和 Test UTIL_SET_PRECFGKEY 命令类似、该命令转换为 ZNP 项目的 MT_UtilSetPreCfgKey。

    此致、
    Ryan

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

    您好、Ryan!

    真诚的、非常感谢!

    我们需要在生产中设置 De NWK Key。  

    如果我们知道存储 NWK 密钥的闪存地址、我们可以通过 JTAG 进行写入、对吧?

    那么、我如何知道 NWK 密钥所在的闪存地址?

    从这个意义上讲、
    在固件中、我们定义了以下值:
    #define FLASH_NV_BASE 0xAA000
    #define ZCD_NV_EX_EX_legacy 0x0000
    #define ZCD_NV_PRECFGKEY 0x0062

    使用这些值、我们可以计算 NWK 密钥的地址?

    非常感谢。

    此致。

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

    我不建议直接修改单个 NV 项、因为这可能与 NVOCMP TI 驱动程序预期运行相冲突。  相反、最好指定闪存中已知定义的位置、然后您可以通过 JTAG 按照合适的方式进行编程。  例如、以下 custom_default_key 将写入闪存位置0xAE000、并可通过查看.hex 输出文件进行验证。

    //nwk_globals.c
    
    // LINES ADDED
    __attribute__((section(".custom")))
    #define CUSTOM_DEFAULT_KEY {0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0A,0x0B,0xC0,0x0D,0x0E,0x0F}
    
    CONFIG_ITEM uint8_t defaultKey[SEC_KEY_LEN] = CUSTOM_DEFAULT_KEY; // LINE MODIFIED
    
    //cc13x2_cc26x2_tirtos7_ticlang.cmd
    
        .emb_text       :   > FLASH
        .custom         :   > FLASH_LAST        /* LINE ADDED */
        .ccfg           :   > FLASH_LAST (HIGH)

    此致、
    Ryan

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

    您好、Ryan!

    非常感谢!

    您的意思是在代码中指定闪存中的地址以在何处保存密钥?

    如果是、我认为它不适合我。 请注意、我们必须在生产过程中向每个电路板写入一个自定义密钥。 因此解决方案必须与代码无关。

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

    初始 POST 请求在 MCU 上的已知位置以包含用于电路板生产的 NWK 密钥。  我已经给出了一个预先确定的存储 NWK 密钥的位置来解决这个问题、然后应用程序代码会读取并使用 NWK 密钥。  现在您"知道 NWK 密钥所在的闪存地址、我们可以通过 JTAG 写入"。  您可以修改输出 hex/bin 文件中的存储器地址、通过 JTAG 写入或使用引导加载程序修改它。  NV 存储器也存储在闪存中、如果使用首选方法、则可以执行必要的调试步骤来发现存储的 NWK 密钥存储器位置。  在这方面、您可以参考 SWRA671。

    此致、
    Ryan