请教 MT29F32G08 nand flash 移植 ????
最近把历程的 nand flash 程序移植到 MT29F32G08CBACA 这个芯片上,出现如下问题,如果单独使用如下函数进行测试是是正常的,
FTL_Init() ;
NAND_EraseBlock(4000);
uint32_t RWDataSize = 8192 * 4;
uint8_t* nand_F_tx_buff =(uint8_t*)mymalloc(SRAMEX, RWDataSize );
uint8_t* nand_F_rx_buff =(uint8_t*)mymalloc(SRAMEX, RWDataSize );
uint8_t i=0;
for(cc=0; cc < RWDataSize; cc++)
{
nand_F_tx_buff = i * 2 ;
nand_F_rx_buff = 0;
i ++;
}
NAND_WritePage( 4000, 6, &nand_F_tx_buff, 512);
NAND_ReadPage(4000, 6, &nand_F_rx_buff, 512);
if( Buffercmp_8(&nand_F_tx_buff, &nand_F_rx_buff, 512) == 0)
printf("NAND Data Read Write 8192 * 4 Test OK ...DD \r\n\r\n");
else
printf("NAND Data Read Write 8192 * 4 Test Error...EE \r\n\r\n");
myfree(SRAMEX, nand_F_tx_buff);
myfree(SRAMEX, nand_F_rx_buff);
上述测试是OK的
但是如果使用LUT功能建立分区表 就出错,格式化也是出错,也就是如下函数
u8 FTL_CreateLUT(u8 mode)
另外hnand1.Init.ECCPageSize = FMC_NAND_ECC_PAGE_SIZE_1024BYTE; //ECC页大小为1024字节 这个我配置是1024字节,根据资料介绍是1024字节,还有
还有#define NAND_ECC_SECTOR_SIZE 1024 //执行ECC计算的单元大小,默认1024字节 我也改成了1024,
不知道其他的是否还需要修改啊 ???
mt29f32g08cbaca芯片的ecc资料介绍:
mt29f4g08abada芯片的ecc资料介绍:
帮顶帮顶
移植的是哪个例程?nand的驱动有点复杂 本帖最后由 hpdell 于 2016-12-27 09:51 编辑
jcx0324 发表于 2016-12-27 09:38
移植的是哪个例程?nand的驱动有点复杂
你好,移植的正点原子的, 看stm资料,貌似只支持 1bit错误的ECC,也就是只支持SLC的nand flash 芯片,
MT29F32G08CBACA 这个nand flash 是MLC的芯片,估计是比较麻烦或者是stm的单片机不支持 MLC类型的 nand flash 吧
你们有没有什么好的办法啊(除跟换器件外) ??
确实没用过,帮顶吧 这个不会,只能帮楼主加人气了。 美光和STM有关系吗? MLC的话要用软件ECC,没验证过原子的nand控制算法,毕竟涉及到磨损管理,碎片利用,坏块管理等, 可以参考下RTX的nand驱动,貌似还挺好用的 jcx0324 发表于 2016-12-28 08:54
MLC的话要用软件ECC,没验证过原子的nand控制算法,毕竟涉及到磨损管理,碎片利用,坏块管理等, 可以参考下RTX ...
你好,能否把这块的程序发上来共享一下啊 顶
页:
[1]
2