主题 : 谁能告诉我BBT_PAGE_MASK    0xffffff3f是啥东西,咋用的。 复制链接 | 浏览器收藏 | 打印
级别: 侠客
UID: 69056
精华: 0
发帖: 53
金钱: 265 两
威望: 53 点
贡献值: 0 点
综合积分: 106 分
注册时间: 2012-04-30
最后登录: 2013-06-07
楼主  发表于: 2013-01-17 16:13

 谁能告诉我BBT_PAGE_MASK    0xffffff3f是啥东西,咋用的。

在nand_base.c的nand_erase_nand()函数中定义了
#define BBT_PAGE_MASK    0xffffff3f      
if (chip->options & BBT_AUTO_REFRESH && !allowbbt)
        bbt_masked_page = chip->bbt_td->pages[chipnr] & BBT_PAGE_MASK
然后有
if (bbt_masked_page != 0xffffffff &&
            (page & BBT_PAGE_MASK) == bbt_masked_page)
            rewrite_bbt[chipnr] =
                ((loff_t)page << chip->page_shift);

百思不得其解上面几个语句到底啥意思,干啥的?
为什么要把 BBT_PAGE_MASK    定义成0xffffff3f?
为什么要满足if (bbt_masked_page != 0xffffffff && (page & BBT_PAGE_MASK) == bbt_masked_page)
才能标记重写bbt数组rewrite_bbt[chipnr],
里面的(page & BBT_PAGE_MASK) == bbt_masked_page起了什么作用?