第四章 Yaffs2文件系统移植艰辛记录.pdf

  1. 1、本文档共9页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Yaffs2 文件系统移植艰辛记录 Rocky 于昆山 1. 下载yaffs2 包 2. 将包以补丁形式放入内核中 #tar xvf yaffs2.tar #cd yaffs2 #./patch-ker.sh c /home/arm/dev_home/kernel/gec2410-2.6.8.1 3. 配置内核、并编译 编译出现错误: 图1 此时,修改fs/yaffs2/yaffs_fs.c 中111 行: 改为:#include asm/uacesss.h 重新编译通过! 4 . 下载到板子上,运行,结果如下: 图2 上述过程把yaffs2 的移植和挂载一起进行,为方便调试,找出遇到问题,对上述过程分开进行。 按目前理解,成功移植yaffs2 文件系统并挂载需有以下两个步骤: A .下载yaffs2 包,解压到内核fs 目录 。修改fs/Makefile,重新编译内核; B .在根文件系统的启动脚本中添 mount 命令行,对某分区进行挂载yaffs2 操作; 由此,先完成步骤A : 根据上述过程1、2 、3 及完成步骤A ,此时,可进入系统查看是否已支持yaffs2 文件系统, 系统启动后,进入/proc 目录,查看filesystems 文件,如下: 图3 由此可知,系统已支持yaffs2 文件系统!故肯定步骤A 正确无误。 继续完成步骤B : 对步骤B 而言,为调试方便,先不将mount 命令行写进启动脚本。直接在终端进行mount 操作,将3 号分区以yaffs2 文件系统格式挂载到yaffs2_dir 目录下: cd /tmp mkdir yaffs2_dir mount t yaffs2 /dev/mtdblock/3 yaffs2_dir 终端显示结果为: 图4 此时,终端无反应了,敲击键盘没有任何作用。核心板上有两个发光管D1 和D2 (查手册得知为输入/输出指示灯)。 发现挂载前后,D1 指示灯照常闪烁,而D2 指示灯由快速闪烁变为持续高亮。终端完蛋?系统崩溃?未知! 上述 “Hi,Rocky! I’m here(yaffs2) ”为我添 的打印信息。添加地方为 “内核 - /fs/yaffs2/Yaffs_fs.c - yaffs_internal_read_super() 函数”中,经添 信息发现,此函数能完全执行完,中间过程没有任何return 发生。 对此,查阅很多资料仍未果! 查阅资料发现mount 前应先将所要mount 的分区擦除一遍。于是费九牛二虎之力找erase 分区工具。 找资料,对nandflash 擦除需要flash_erase、flash_eraseall 工具。由此需交叉编译mtd-util 工具。对于包为:mtd-util- 1.0.0 对应网络文章《cramfs+yaffs 嵌入式平台的实现》中关于mtd-util 的编译,成功获取flash_erase、flash_eraseall 工具。 拷贝到根文件系统的bin 目录下,chmod 成777,然后采用u-boot 重新烧写根文件系统 (cramfs 格式)。 启动系统后执行如 命令: flash_eraseall /dev/mtdblock/3 // 擦除3 号分区 (用户分区) 结果如下: 图5 无法获取MTD (内存技术设备)设备信息! 好在有flash_eraseall 命令代码,进入mtd-util 目录,查看flash_eraseall.c 文件: if ((fd = open(mtd_device, O_RDWR)) 0) { fprintf(stderr, %s: %s: %s\n, e

文档评论(0)

kehan123 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档