最近把历程的 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[cc] = i * 2 ; nand_F_rx_buff[cc] = 0; i ++; } NAND_WritePage( 4000, 6, &nand_F_tx_buff[0], 512); NAND_ReadPage(4000, 6, &nand_F_rx_buff[0], 512); if( Buffercmp_8(&nand_F_tx_buff[0], &nand_F_rx_buff[0], 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资料介绍: |
你好,移植的正点原子的, 看stm资料,貌似只支持 1bit错误的ECC,也就是只支持SLC的nand flash 芯片,
MT29F32G08CBACA 这个nand flash 是MLC的芯片,估计是比较麻烦或者是stm的单片机不支持 MLC类型的 nand flash 吧
你们有没有什么好的办法啊(除跟换器件外) ??
评分
查看全部评分
你好,能否把这块的程序发上来共享一下啊
keil 安装环境下有例程的
你好,能否说说具体路径啊,我找了半天也找到