初级会员

- 积分
- 98
- 金钱
- 98
- 注册时间
- 2019-9-22
- 在线时间
- 36 小时
|
1金钱
uint32_t ftl_find_unused_block(uint32_t sblock, uint8_t flag)
{
uint32_t temp = 0;
uint32_t blocknum = 0;
for (blocknum = sblock + 1; blocknum > 0; blocknum--)
{
if (((blocknum - 1) % 2) == flag) /* 奇偶合格,才检测 */
{
nand_readspare((blocknum - 1) * nand_dev.block_pagenum, 0, (uint8_t *)&temp, 4); /* 读块是否被使用标记 */
if (temp == 0XFFFFFFFF)
{
return (blocknum - 1); /* 找到一个空块,返回块编号 */
}
}
}
return 0XFFFFFFFF; /* 未找到空余块 */
}
此函数是否有问题?我调试的时候,向同一个扇区里面写数据,每次if (temp == 0XFFFFFFFF) 这里永远页无法识别到未使用的块,我记得第一个字节为是否为坏块,第二个字节为是否被占用,第三第四个字节是存储该块所映射到的逻辑地址,如果判断空块的话,应该是判断第一和第二和字节把?
|
|