Matter - NXP K32W061 OTA 校验失败问题

    在之前的文章中分享过 NXP K32W061 Matter Contact Sensor Demo 的使用,同时也分享了 NXP K32W061 Matter OTA 相关的操作,当时使用了 Matter Lighting Demo 来演示的,最近在使用 Contact Sensor Demo 采用同样的操作进行 OTA 时,出现了 OTA 失败的情况,查看 log 提示校验失败,出现以上的问题,实际上就是因为在 APP 固件编译时,打开了 OTA 加密的选项;

    在编译固件时,如果有 OTA加密的需求,可以启用 chip_with_ota_encryption=1,在 k32w0_sdk.gni 文件中,添加如下图 print 语句,在编译时输出 chip_with_ota_encryption 值;

        

    编译时可以看到,在 Contact Sensor APP 中 chip_with_ota_encryption 是默认启用的;

        

    lighting-app 中默认 chip_with_ota_encryption=0 ;

        

    而在之前 OTA 测试时,使用的是默认的生成 OTA 固件的指令,可以在 https://github.com/NXP/matter/tree/v1.3-branch-release/examples/contact-sensor-app/nxp/k32w/k32w0#ota 中看到;

 

    在原厂的发布的 https://github.com/NXP/matter/tree/v1.4.0-pvw1 分支中可以看到一个注意事项,当工程编译时,如果编译 APP 固件时配置了 chip_with_ota_encryption=1,则需要在 生成 OTA 固件时添加 --enc_enable 和 --input_ota_key 选项,且 key 值需要同 APP 固件中定义的相同;


        

    key 值同样可以在 k32w0_sdk.gni 文件中查看到;

        

    例如使用如下指令生成 OTA 固件:

./scripts/tools/nxp/ota/ota_image_tool.py create -v 0xDEAD -p 0xBEEF -vn 42021 -vs "1.0" -da sha256 --enc_enable --input_ota_key "1234567890ABCDEFA1B2C3D4E5F6F1B4" --app-input-file chip-k32w0x-contact-example.bin chip-k32w0x-contact-example.ota

    因此,由于编译 APP 时,Contact Sensor APP 中启用了 chip_with_ota_encryption,继续使用同 Lighting APP 同样生成 OTA 固件的命令就会导致 OTA 固件传输完成后,就会导致固件校验失败,更改的办法就是在 Contact Sensor APP 编译时,将 chip_with_ota_encryption=0,或者将  chip_with_ota_encryption=1,但要配置 --enc_enable 和 --input_ota_key 选项。

★博文内容均由个人提供,与平台无关,如有违法或侵权,请与网站管理员联系。

★文明上网,请理性发言。内容一周内被举报5次,发文人进小黑屋喔~

参考来源

评论