Embeded linux 之 mtd nand

嵌入式技术

1372人已加入

描述

应用层:(使用mtd ioctl)

0.获取mtd基本信息

struct mtd_info_user {
unsigned char type;  //flash类型
unsigned int flags;    
unsigned int size;     //分区大小
unsigned int erasesize; //块大小
unsigned int writesize;  //页数据大小
unsigned int oobsize;    //OOB大小
unsigned int ecctype;   //ECC类型
unsigned int eccsize;    //ECC大小
};

fd = open("/dev/mtd", O_RDWR);

ioctl(fd, MEMGETINFO, &mtd_info);

1.读页数据

2.写页数据

unsigned char pagedate[2048] = {...};

write(fd, pagedate, mtd_info.writesize);

3.读OOB

struct mtd_oob_buf {
unsigned int start;
unsigned int length;
unsigned char *ptr;
};

unsigned char oobbuf2[64];

OOB_INFO.start = page_num * (2048);
OOB_INFO.ptr = oobbuf2;
ioctl(fd, MEMREADOOB, &OOB_INFO);

4.写OOB

unsigned char oobbuf[64] = {...};

OOB_INFO.start = page_num * (2048);
OOB_INFO.ptr = oobbuf;
ioctl(fd, MEMWRITEOOB, &OOB_INFO);

NAND mtd demo



 

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分