关于 uboot nand 驱动源代码的问题
uboot 2010.06 中 drivers\mtd\nand\Nand_util.c
int nand_write_skip_bad(nand_info_t *nand, loff_t offset, size_t *length,
u_char *buffer)
{
int rval;
size_t left_to_write = *length;
size_t len_incl_bad;
u_char *p_buffer = buffer;
......
len_incl_bad = get_len_incl_bad (nand, offset, *length);
if (len_incl_bad == *length) {
rval = nand_write (nand, offset, length, buffer);
if (rval != 0)
printf ("NAND write to offset %llx failed %d\n",
offset, rval);
return rval;
}
......
}
我不太明白 if (len_incl_bad == *length) 这段代码。
len_incl_bad 应该是 length 中包含的坏块数,可为什么要有这个 if 呢?这个 if 到底判断的意义是什么?
希望明白的朋友给说明一下,小弟谢过了!