在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起了什么作用?