linux下Nand Flash的JFFS2文件系統的移植.docVIP

  1. 1、本文档共6页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
linux下Nand Flash的JFFS2文件系统的移植 收藏人:danydany_ok 2010-12-01?|?阅:819??转:6??|??分享? ??|????来源 ?? uclinux下Nand Flash的JFFS2文件系统的移植(写在前面) 现在(2005-12-5),linux对mtd设备支持的好得多,远没有我当时(大概2.5年前吧)做得那么复杂了,这里仍然要发原文,是因为想给初学者提供一个参考思路,介绍一下我对linux的学习了解的整个过程,希望对大家有借鉴意义。但是,建议还是使用最新的mtd补丁,新版本的mtd包括了对2k page?的nand flash的支持,要使用大于128MB的Nand flash,就用这个吧。文件系统方面,建议在Nor flash上,使用jffs2(jffs3也有,但是,我没用过,没有发言权)。在Nand flash上强烈建议使用yaffs,这比jffs2快很多,而且支持direct模式,在其他系统,比如:uCOS-II、winCE等都可以使用。我已经做到了在uCOS-II下和Linux下通过yaffs文件系统实现共享。但是,要想使用2k page的nand flash,只有使用yaffs2了。现在,yaffs2开源的代码有点问题,不能直接和mtd设备配合使用,稍作修改可以实现,有兴趣,我可以专门再写一片yaffs2的移植心得。 下面是,很早以前的心得了 ? uclinux下Nand Flash的JFFS2文件系统的移植(1) 继续上一篇《uClinux下移植Ne2000兼容的网卡驱动程序》中介绍的平台和操作系统,开始写JFF2的感想。虽然JFFS2的移植弄出来有一段时间了,但是,前一段时间忙着期末考试,无心写心得。昨天总算考完了,我就继续罗嗦那段时期的经历吧,希望把我遇到的问题和解决的方法和大家共享。错误之处也请不吝指出。 ? 我使用的uClinux的硬件平台还是44B0那个板子具体的情况参见《uClinux下移植Ne2000兼容的网卡驱动程序》中的介绍。Flash我用的是三星公司的K9F2808——16MByte的Nand Flash。 ? 开始,先看看有没有其他人的经验或者文章什么。用uclinux和jffs2关键词google了一下,找到了很多乱七八糟的东西,感觉唯一有用的也就是《The Linux MTD, JFFS HOWTO》,这篇文章写的比较细,我就是看这个逐渐地入了门。 ? 首先,make menuconfig,把mtd打开。可是,发现我拿到的内核中,没有这个mtd选项。比较一下,发现uClinux-dist面,编译4510的时候,就有mtd这个选项。比较郁闷,不过还是不甘心,仔细看看arch/armnommu/config.in文件,发现如下: if [ $CONFIG_ALIGNMENT_TRAP = y ]; then ?? source drivers/mtd/Config.in fi 这就是问题了。不过还是不清楚这个CONFIG_ALIGNMENT_TRAP是干什么的。从字面上猜测可能是处理非对齐异常的。不过,如果我在前面定义了CONFIG_ALIGNMENT_TRAP,那么我的内核就不能正常的运行,看了半天源码,也没看懂,算了,索性把这个就给注释掉了(因为uClinux-dist面就没有这个if)。这样,mtd就可以使用了。 ? 接下来就是定制内核,在MTD中,开启CONFIG_MTD_PARTITIONS、CONFIG_MTD_CHAR、CONFIG_MTD_BLOCK,选中NAND Device Support中的全部选项(因为我用的是Nand Flash)。再到File system中选重JFFS2文件系统。 ? 系统是怎么加载底层的Flash设备呢,很容易在/drivers/mtd/nand/目录下找到相关的代码。先看看Makefile,有如下一行: obj-$(CONFIG_MTD_NAND_SPIA)?? += spia.o 看来只有编译的时候定义了CONFIG_MTD_NAND_SPIA,spia.c才可以被编译。spia.c是一个关键的问题,Nand Flash的驱动程序就是从这里加载的。我不想改spia.c中的东西,就照着spia.c复制了一个文件arm_nand.c,在/drivers/mtd/nand/Makefile中添加 obj-$(CONFIG_MTD_NAND_ARM)?? +=arm_nand.o 并修改drivers/mtd/nand/config.in文件,添加如下内容: if [ $CONFIG_ARM = y ]; then ??? dep_tristate NA

文档评论(0)

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

本账号下所有文档分享可拿50%收益 欢迎分享

1亿VIP精品文档

相关文档