完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
我根据BSP里面的NAND YAFFS2的例程调试NANDFLASH。
我现在不想使用YAFFS2文件系统。想直接调NANDflash驱动写。 int main(void) { char *ptr; char mtpoint[] = "user"; char buf[8]; int volatile i; sysInitializeUART(); sysprintf("\n"); sysprintf("==========================================\n"); sysprintf(" FMI NAND YAFFS2 \n"); sysprintf("==========================================\n"); sysDisableCache(); sysInvalidCache(); sysSetMMUMappingMethod(MMU_DIRECT_MAPPING); sysEnableCache(CACHE_WRITE_BACK); SYS_Init(); nand_init(); // cmd_yaffs_devconfig(mtpoint, 0, 0x10, 0x14); // cmd_yaffs_dev_ls(); // cmd_yaffs_mount(mtpoint); // cmd_yaffs_dev_ls(); nand_read_chip(); while(1) { } } void nand_read_chip(void) { struct mtd_info *mtd = &nand_info[0]; struct nand_chip *nand = &nand_chip[0]; size_t retlen; u_char buf1[2048]; u_char buf[2048]; unsigned int i=0; struct erase_info ei; int retval = 0; //擦除 ei.mtd = mtd; ei.addr = 0x1600000; //// ei.len = dev->data_bytes_per_chunk * dev->param.chunks_per_block; ei.len = 2048*64; ei.time = 1000; ei.retries = 2; ei.callback = NULL; ei.priv = 0; /* Todo finish off the ei if required */ retval = mtd->erase(mtd, &ei); //写 memset(buf, 0x88, 2048); mtd->write(mtd ,0x1600000,2048,&retlen,buf); //读 mtd->read(mtd ,0x1600000,2048,&retlen,buf1); for(i =0; i < 2048; i++) sysPutChar(buf1[i]); } 擦除,写,读数据不成功,有没有人调试过 |
|
相关推荐
1个回答
|
|
nbsp; sysprintf("= NUC970 NANDFLASH WRITE EXAMPLE =n"); sysprintf("==========================================nn"); sysprintf("Opening NAND device...n"); if (nandInit() != 0) { sysprintf("ERROR: NAND Init failed!!n"); while(1); } sysprintf("NAND Init Success!!nn"); sysprintf("Writing data to NAND...n"); ptr = (char *)malloc(512); for (i=0;i<512;i++) { ptr[i] = i%26 + 'A'; } memset(buf, 0x0, sizeof(buf)); buf[0] = 'T'; buf[1] = 'E'; buf[2] = 'S'; buf[3] = 'T'; buf[4] = '1'; buf[5] = '2'; buf[6] = '3'; buf[7] = '4'; nandEraseBlock(0, 0, 0); nandWritePage(0, (UINT8 *)buf, ptr); sysprintf("Data written successfully!n"); free(ptr); return 0;}
以上是一个简单的写NANDFLASH的示例代码,只需要引入头文件nand.h并调用相应的API即可实现写入操作,不需要使用YAFFS2文件系统。需要注意的是,由于NANDFLASH写操作的特殊性,因此在调用相关API之前可能需要进行擦除操作。具体使用方法可以参考BSP提供的例程或者相关文档。 |
|
|
|
只有小组成员才能发言,加入小组>>
3310 浏览 9 评论
2991 浏览 16 评论
3492 浏览 1 评论
9057 浏览 16 评论
4086 浏览 18 评论
1176浏览 3评论
604浏览 2评论
const uint16_t Tab[10]={0}; const uint16_t *p; p = Tab;//报错是怎么回事?
597浏览 2评论
用NUC131单片机UART3作为打印口,但printf没有输出东西是什么原因?
2334浏览 2评论
NUC980DK61YC启动随机性出现Err-DDR是为什么?
1895浏览 2评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-22 16:27 , Processed in 1.151058 second(s), Total 78, Slave 59 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号