基于大页面nand flashvivi移植.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
基于大页面nand flashvivi移植

基于大页面nand flashvivi移植   摘 要:介绍了基于大页面nand flash的vivi移植方法。对vivi中与nand flash有关的操作作了较为详细的分析,并就如何将vivi移植到配有大页面nand的开发板中作了分析,指出了vivi源码中需要修改的地方。为需要移植vivi bootloader的开发人员提供了可行的参考。   关键词:大页面;nand flash;vivi??   中图分类号:TP311.52 文献标识码:A 文章编号:1672-7800(2011)011-0129-03?お?   ??      1 nand flash简介??   1.1 常见nand flash的大小和参数??   以前的nand flash的pagesize(页大小),多为512B+16B的OOB(out of band),block大小为 64*(512B+16B)=32KB+1KB;现在的nand flash多为2048B+64B的OOB,block大小为64*(2048B+64B)=128KB+4KB。??   1.2 spare area/oob??   这块区域的主要用途有:①标记是否坏块;②存储ECC校验数据;③存储一些和文件系统有关的数据,如yaffs2就会利用这个空间存储相关数据。??   1.3 nand flash的特点??   (1)nand flash写的最小单位是页page,擦除的最小单位是block;??   (2)写入数据之前必须先进行擦除操作;??   (3)nand flash的读写容易出错,所以最好在读写过程中做ecc校验;??   (4)nand flash出厂时一般都有坏块,在oob区域有坏块标记,如512B页面大小的flash的坏块标记存放在oob的第6个字节,而2048B页面大小的则存放在oob的第1个字节,写镜像时需要注意这些坏块标记。??   1.4 大页面与小页面nand操作上的主要差别??   主要是读写指令上的差别:①小页面的读指令有3种:00h、01h、50h分别指向前256B、后256B、oob区域,之后写入地址,然后便可读数据。大页面的读指令是先写入00h,再写入地址,接着写入30h,然后才能读数据;②小页面的写指令有3种组合:00h+80h+10h、01h+80h+10h、50h+80h+10h,在80h与10h之间先写入地址,然后写入数据;而大页面的写指令就是先写入80h,再写入地址及数据,最后写入10h终止写操作。??      2 vivi简析??   vivi为一款基于s3c2410芯片的bootloader,其基本原理可参考。其源码基于小页面nand,所以要移植到配有大页面nand的开发板中需要对其进行修改。??   2.1 vivi对内存及nand flash的划分??   如图1,图2所示。??   2.2 vivi常用命令的分析??   (1)part命令:①part del/add…均是对内存中mtd_part中的数据进行操作;②part reset将内存中存放的初始值default_mtd_partitions的内容重新读入内存的mtd_part中;③part save则将内存中vivi_priv中的数据全部写入param块;如果没有使用param块,则这些数据将存入以VIVI_PRIV_ROM_BASE为起始偏移的48k大小的nand中。??   (2)param命令:①param set…:如果是param set linux_cmd_line ...则将...复制到内存的vivi_priv中的linux_cmd_line处;如果不是linux_cmd_line则在内存中的parameter_tlb中搜索名字,若找到则将其对应的值修改为当前值;②param reset则将内存中存放的初始值default_vivi_parameters重新读入内存的param_tlb中,将内存中存放的初始值linux_cmd重新读入内存的linux_cmd中;③param save则将当前内存中vivi_priv中的数据存入nand的param块中。??   (3)load命令:load flash…命令最终将调用write_to_nand:当part的flag不是bon_fs时将首先擦除part所在块(nand_erase),然后写入(nand_write);若是bon_fs则先调用read_bon_partition,然后调用write_bon_image写入镜像。 ??   (4)boot命令:①boot命令将从默认的media_type=中的kernel部分启动内核;②boot smc及

文档评论(0)

189****7685 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档