嗨,对话框中,
我的代码大小(suota)大约是320千字节,我每次都失败了suota。我发现SUOTA_MAX_IMAGE_SIZE设置为(236 * 1024)。我可以改变参数吗?其他相关参数需要一起设置吗?它有局限性吗?
谢谢你的帮助
嗨nigelyang,
SUOTA_MAX_IMAGE_SIZE宏定义了在启用SUOTA特性时应该考虑的最大图像大小。请注意,除了存储的实际固件更新,一个头被放在上面。如果两个头的总大小+固件更新大于我们预先定义的大小(236 * 1024),那么一个错误识别将发生。要这样做,如果您想要存储一个大于预定义大小(236*1024)的固件更新,那么您应该相应地更改SUOTA_MAX_IMAGE_SIZE宏的值。
固件更新将存储在QSPI Flash中,更具体地说,存储在NVMS_FW_UPDATE_PART部分中。SDK包含3个不同的预定义分区表(1M、2M、521K),分别适用于SUOTA和非SUOTA保护。选择取决于闪光灯的大小。
让我们以pxp_reporter项目为例。对于SUOTA配置,使用1M的分区表(#define USE_PARTITION_TABLE_1MB_WITH_SUOTA)。使用SUOTA查看1M的分区表,你会看到以下条目:
PARTITION2(0x090000, 0x051000, NVMS_FW_UPDATE_PART, 0)
第一个参数确定分区的偏移地址,第二个参数确定分区的大小。分析0x051000 = 324 * 1024。这意味着宏可以取的最大值(在本例中)是#define SUOTA_MAX_IMAGE_SIZE(324*1024)。因此,在您的情况下,您必须相应地更改SUOTA_MAX_IMAGE_SIZE宏和NVMS_FW_UPDATE_PART条目。NVMS_FW_UPDATE_PART分区表项的变化意味着整个分区表的变化。
谢谢,PM_Dialog
嗨nigelyang,
SUOTA_MAX_IMAGE_SIZE宏定义了在启用SUOTA特性时应该考虑的最大图像大小。请注意,除了存储的实际固件更新,一个头被放在上面。如果两个头的总大小+固件更新大于我们预先定义的大小(236 * 1024),那么一个错误识别将发生。要这样做,如果您想要存储一个大于预定义大小(236*1024)的固件更新,那么您应该相应地更改SUOTA_MAX_IMAGE_SIZE宏的值。
固件更新将存储在QSPI Flash中,更具体地说,存储在NVMS_FW_UPDATE_PART部分中。SDK包含3个不同的预定义分区表(1M、2M、521K),分别适用于SUOTA和非SUOTA保护。选择取决于闪光灯的大小。
让我们以pxp_reporter项目为例。对于SUOTA配置,使用1M的分区表(#define USE_PARTITION_TABLE_1MB_WITH_SUOTA)。使用SUOTA查看1M的分区表,你会看到以下条目:
PARTITION2(0x090000, 0x051000, NVMS_FW_UPDATE_PART, 0)
第一个参数确定分区的偏移地址,第二个参数确定分区的大小。分析0x051000 = 324 * 1024。这意味着宏可以取的最大值(在本例中)是#define SUOTA_MAX_IMAGE_SIZE(324*1024)。因此,在您的情况下,您必须相应地更改SUOTA_MAX_IMAGE_SIZE宏和NVMS_FW_UPDATE_PART条目。NVMS_FW_UPDATE_PART分区表项的变化意味着整个分区表的变化。
谢谢,PM_Dialog