OTA后的图像crc或加密问题

8个帖子/ 0个新
最后发表
mohit3112
离线
最后看到:9个月3天前
专家
加入:2014-08-04一点
OTA后的图像crc或加密问题

你好,
我只是选择了da14850中的bootloader,它从eeprom启动就很好。但当我OTA设备后重新启动引导程序是得到一个错误在以下代码

如果(image1_encryption && !AES_ENCRYPTED_IMAGE_SUPPORTED)
= crc32(0,(uint8_t*)SYSRAM_BASE_ADDRESS, codesize1))
返回1;

我错过了什么?如何调试这个问题?

谢谢
Mohit

设备:
MT_dialog
离线
最后看到:1个月前4个星期前
工作人员
加入:2015-06-08 34
嗨mohit3112,

嗨mohit3112,

我认为错误是在loadActiveImage()函数中的辅助引导加载程序代码中。您可以检查这两个条件中哪一个返回true,检查您从flash/eeprom上传的图像是否支持加密,以及图像的crc是否与当前计算的crc有效。

由于MT_dialog

mohit3112
离线
最后看到:9个月3天前
专家
加入:2014-08-04一点
好,调试这个问题I

调试这个问题,我做了一个像这样的全局变量探测

Int32_t探测__attribute__(((section(“retention_mem_area0”),zero_init));

我试着

探测= image1_encryption;
然后
probe = crc32(0,(uint8_t*)SYSRAM_BASE_ADDRESS, codesize1);

两者都返回0,如果这是真的,那么为什么返回-1是执行的
我已经附上了调试的图像,请看一看,我认为编译器正在优化的代码和造成的问题

谢谢
Mohit

mohit3112
离线
最后看到:9个月3天前
专家
加入:2014-08-04一点
在更多的调试之后,我发现

经过更多的调试,我发现在OTA后,我的产品头签名pProductHeader->签名[1]从0x52改变到0x10,为什么这是发生的?
有什么建议吗? ?

我使用SDK 3.0.10.1

谢谢
Mohit

MT_dialog
离线
最后看到:1个月前4个星期前
工作人员
加入:2015-06-08 34
嗨mohit3112,

嗨mohit3112,

用OTA更新你的软件后,产品标头将签名更改为0x10是什么意思?你是如何制作你的图像的,你遵循AN-B-010.pdf ?也许你遗漏了什么。SUOTA不会改变PRODUCT_HEADER_SIGNATURE2,您可以转储您的spi,并检查它是否是SUOTA事务之后的更改。如果您的产品标头被更改,辅助引导加载程序将加载任何图像。

由于MT_dialog

mohit3112
离线
最后看到:9个月3天前
专家
加入:2014-08-04一点
我使用了以下步骤

我使用了以下步骤
1.我做了fw_1。img, fw_2。mkimage.exe single fw_1.bin fw_version_1.h fw_1.img
2.运行命令——mkimage.exe multi eeprom fw_1。img 0 x8000 fw_2。img 0x13000 0x1F000 multi_part.bin
3.在eeprom的偏移量0中加载multi_part.bin——带有选项make_eeprom_bootable = no(它出现在按下刻录按钮后弹出)
4.secondary_bootloader燃烧。十六进制的otp
5.烧otp头
应用标志1 ---- yes
应用标志2 ---- yes
重新映射标志——Otp为0
DMA长度---- 0x1FC0
JTAG启用标志

mohit3112
离线
最后看到:9个月3天前
专家
加入:2014-08-04一点
我查了巫术转储

我检查十六进制转储后燃烧的图像文件从smartsnippets这是不正确的,是的,它确实改变了产品头签名后ota。我已经附加的图像smartsnippets屏幕截图。

谢谢
Mohit

MT_dialog
离线
最后看到:1个月前4个星期前
工作人员
加入:2015-06-08 34
嗨,mohit,

嗨,mohit,

当我说SUOTA不改变产品头部签名是,在SUOTA应用程序中没有代码将改变或改变产品头部,在多部分图像后,它停留在那里,SUOTA只改变图像。另外,在你上传的图像中,我看到了产品头部上方的数据,这些数据是什么,也许你重写了一些eeprom,你发送的数据重叠产品头部。我已经测试了SUOTA与eeprom和引导加载程序运行,尽管jtag头保持不变,因为它应该是。

由于MT_dialog