73 Star 464 Fork 302

SpunkyWX / rt-fota

 / 详情

某些经过quicklz压缩的固件进入这个分支之后,如果block_size>0x1000,会有问题

待办的
创建于  
2020-12-22 17:31

if (hdr_tmp_pos < RT_FOTA_BLOCK_HEADER_SIZE)
{
fw_raw_len = rt_fota_read_part(part, fw_raw_pos, aes_ctx, aes_iv, crypt_buf, RT_FOTA_ALGO_BUFF_SIZE);
if (fw_raw_len < 0)
{
LOG_D("AES256 algorithm failed.");
fota_err = RT_FOTA_PART_READ_ERR;
goto __exit_upgrade;
}
fw_raw_pos += fw_raw_len;

block_hdr_pos = 0;
while (hdr_tmp_pos < RT_FOTA_BLOCK_HEADER_SIZE)
{
	block_hdr_buf[hdr_tmp_pos++] = crypt_buf[block_hdr_pos++];
}
block_size = block_hdr_buf[0] * (1 << 24) + block_hdr_buf[1] * (1 << 16) + block_hdr_buf[2] * (1 << 8) + block_hdr_buf[3];

rt_memset(cmprs_buff, 0x0, RT_FOTA_CMPRS_BUFFER_SIZE + padding_size);
rt_memcpy(cmprs_buff, &crypt_buf[block_hdr_pos], block_size);

block_hdr_pos = (block_hdr_pos + block_size) % RT_FOTA_ALGO_BUFF_SIZE;

}

评论 (1)

老王 创建了任务
老王 关联仓库设置为SpunkyWX/rt-fota
展开全部操作日志

具体是什么故障问题?

block_size是可以通过宏进行配置,设置为4K主要是考虑内存消耗和FLASH页写入大小进行考虑的。不同的MCU可以进行不同的设置,但必须是4字节对齐(对于32位单片机)。

登录 后才可以发表评论

状态
负责人
里程碑
Pull Requests
关联的 Pull Requests 被合并后可能会关闭此 issue
分支
开始日期   -   截止日期
-
置顶选项
优先级
参与者(2)
C
1
https://gitee.com/spunky_973/rt-fota.git
git@gitee.com:spunky_973/rt-fota.git
spunky_973
rt-fota
rt-fota

搜索帮助