算法原理:
- 数据读取:代码首先确定每次从USB设备读取的数据量(1024字节或剩余的数据量,取较小值)。
- 错误处理:如果读取操作失败,则记录日志并跳转到错误处理部分(
FILE_CLOSE
)。 - 更新剩余数据量:每次读取后,更新
DataRemain
以反映剩余要读取的数据量。 - 校验和计算:在文件末尾附近的区域,代码计算读取到的数据的校验和。如果读取的数据可能包含校验和或尾部信息,则只计算到这些信息之前的数据的校验和。
- 数据写入:将读取到的数据写入外部flash。如果写入失败,则记录日志并跳转到错误处理部分。
- 缓冲区清理:在每次读取之前,将写缓冲区清零,以确保不会使用旧数据
代码实现
if (isFmtBIN) // 检查是否处理BIN格式的文件
{
// 每次读1024bytes数据
if(DataRemain < 1024) // 如果剩余要读取的字节数小于1024
{
readBytes = DataRemain; // 则只读取剩余字节数
}
else
{
readBytes = 1024; // 否则,读取1024字节