Chinaunix首页 | 论坛 | 博客
  • 博客访问: 849043
  • 博文数量: 90
  • 博客积分: 766
  • 博客等级: 军士长
  • 技术积分: 1867
  • 用 户 组: 普通用户
  • 注册时间: 2011-12-18 08:42
个人简介

linux

文章分类

全部博文(90)

文章存档

2021年(2)

2020年(2)

2017年(1)

2015年(11)

2014年(1)

2013年(53)

2012年(16)

2011年(4)

分类: LINUX

2012-10-29 14:31:13

以nand flash(pagesize=2kB erasesize=pagesize*64)为基础。
擦除某个mtd设备:
            struct erase_info_user argp;
            argp.start = 0;
            argp.length = 2048*64;
            ioctl(fd,MEMERASE,&argp);
注意点:start和length都必须和erasesize对齐。

编程某个mtd设备:
            write(fd,&buf,length);
注意点:length必须与页对齐(不包括oob区域)。
          buf不能以栈方式给出。
读某个设备:
            read(fd,&buf,length);
length只要不大于设备大小且offset需与页大小对齐。

        最近要封装nor flash的接口,发现了两个比较明显的差异,第一就是nor flash的操作(包括擦除)都以字节为单位,另外就是nor flash的擦做非常慢,另外值得注意的是,对linux应用程序而言,mtd的操作不管是nand还是nor都是一样的,擦除都必须以块为单位,写必须以也为单位,读的位置也必须与页对齐,这跟linux的实现有关,如果实现不同可能操作就不会不同,比如cfe的读写就可以不以页对齐。
阅读(8499) | 评论(0) | 转发(1) |
给主人留下些什么吧!~~