Chinaunix首页 | 论坛 | 博客
  • 博客访问: 836593
  • 博文数量: 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)

分类: 嵌入式

2013-01-28 16:17:01

1.jffs2文件系统的制作

    一种事物的产生总是伴随着原因的,在写这篇博客前,写了解了下jffs文件系统实现的相关概念及一些重要的实现细节。

    制作jffs2文件系统之前需要知道擦除块的大小了物理页的大小。

    对一块典型nand flash,块大小为128KiB(之所以是128KiB,而不是128KB,是因为每块擦除块为128KB的背后还有64bytes的oob区域用于校验),
页大小为0x800(2KB),jffs2文件系统制作方式如下:

$mkfs.jffs2 -r xxx1 -o xxx2 -e 128KiB -s 0x800 -n

    其中xxx1为根文件系统目录,xxx2为目标jffs2文件系统镜像。

这些参数的含义在linux的mkfs.jffs2命令当中有详细的解释,就不用介绍了。

2.常见问题的解决办法及解释

    a.CLEANMARKER node found at 0x00000000 has totlen 0xc != normal 0x0


    这个问题并不是致命的问题,只是看起来不怎么爽而已。个人认为这个问题是jffs2文件系统本身的实现造成的,cleanmaker是jffs2文件系统的一个节点,这个节点放在oob区域(nand flash),用来表示该块flash是否是干净的,在加载jffs2文件系统的时候,jffs2会维护一个free_list,而这个free_list会根据clearmaker节点来判断相应的块是否为干净块,可是实际上在刚刚擦除过的flash上烧写文件系统,所有的块都是干净块,并不应该有这个节点来标识,这个节点有jffs2文件系统来产生,但是第一次加载jffs2,这个节点的内容还没有产生,所有会出现这个问题。

    要解决这个问题,只需要在制作镜像的时候加上“-n”参数即可,可见这个参数可以告诉系统与“加载一次文件系统”相似的功能。

阅读(1843) | 评论(0) | 转发(0) |
0

上一篇:关于jffs文件系统

下一篇:关于模块的封装

给主人留下些什么吧!~~