主题 : 关于 uboot nand 驱动源代码的问题 复制链接 | 浏览器收藏 | 打印
级别: 新手上路
UID: 52652
精华: 0
发帖: 7
金钱: 35 两
威望: 7 点
贡献值: 0 点
综合积分: 14 分
注册时间: 2011-07-22
最后登录: 2011-09-23
楼主  发表于: 2011-07-22 14:54

 关于 uboot nand 驱动源代码的问题

关于 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 到底判断的意义是什么?

希望明白的朋友给说明一下,小弟谢过了!