void ota_clearNewFwDataArea() { u32 tmp1 = 0; u32 tmp2 = 0; u32 cur_flash_setor; for(int i = 0; i < 12 ; i++) { cur_flash_setor = new_ota_offset + i*0x1000; flash_read_page(cur_flash_setor, 4, (u8 *)&tmp1); flash_read_page(cur_flash_setor + 2048, 4, (u8 *)&tmp2); if(tmp1 != ONES_32 || tmp2 != ONES_32) { flash_erase_sector(cur_flash_setor); } } }
时间: 2024-03-29 13:35:07 浏览: 93
这段代码是用来清除新固件数据区域的。它首先定义了三个变量:`tmp1`和`tmp2`是两个32位的无符号整数,`cur_flash_setor`是一个当前flash扇区的地址。然后使用一个循环,枚举12个flash扇区,每个扇区大小为0x1000字节,即4KB。在循环中,它首先读取当前flash扇区的前4个字节和第2048个字节(即第2KB处)的4个字节,存储在`tmp1`和`tmp2`中。然后检查`tmp1`和`tmp2`是否等于全1的32位无符号整数`ONES_32`,如果不是,则擦除该flash扇区。
阅读全文