高级会员

- 积分
- 994
- 金钱
- 994
- 注册时间
- 2016-7-22
- 在线时间
- 318 小时
|

楼主 |
发表于 2017-3-6 10:52:13
|
显示全部楼层
问题解决了 最后还是找到了ABAE的pdf 重新配置下 nand.c中需要修改两个地方,初始化和擦除函数
else if(nand_dev.id==MT29F4G08ABAEA)
{
printf("NAND=ABAEA\r\n");
nand_dev.page_totalsize=4320; //nand一个page的总大小(包括spare区)
nand_dev.page_mainsize=4096; //nand一个page的有效数据区大小
nand_dev.page_sparesize=224; //nand一个page的spare区大小
nand_dev.block_pagenum=64; //nand一个block所包含的page数目
nand_dev.plane_blocknum=1024; //nand一个plane所包含的block数目
nand_dev.block_totalnum=2048; //nand的总block数目
} else return 1; //错误,返回
//擦除一个块
//BlockNum:要擦除的BLOCK编号,范围:0-(block_totalnum-1)
//返回值:0,擦除成功
// 其他,擦除失败
u8 NAND_EraseBlock(u32 BlockNum)
{
if(nand_dev.id==MT29F16G08ABABA)BlockNum<<=7; //将块地址转换为页地址
else if(nand_dev.id==MT29F4G08ABADA)BlockNum<<=6;
else if(nand_dev.id==MT29F4G08ABAEA)BlockNum<<=6;
*(vu8*)(NAND_ADDRESS|NAND_CMD)=NAND_ERASE0;
//发送块地址
*(vu8*)(NAND_ADDRESS|NAND_ADDR)=(u8)BlockNum;
*(vu8*)(NAND_ADDRESS|NAND_ADDR)=(u8)(BlockNum>>8);
*(vu8*)(NAND_ADDRESS|NAND_ADDR)=(u8)(BlockNum>>16);
*(vu8*)(NAND_ADDRESS|NAND_CMD)=NAND_ERASE1;
if(NAND_WaitForReady()!=NSTA_READY)return NSTA_ERROR;//失败
return 0; //成功
}
|
|