免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 3069 | 回复: 4
打印 上一主题 下一主题

关于jffs的问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2011-07-18 11:48 |只看该作者 |倒序浏览
背景:
工程中有一个rootfs,我只想编译一次生成一个jffs2.img,但是由于板子上的flash有可能变更,所以我要让我的jffs2.img兼容各种blocksize不同的flash。

问题:
1,mkfs.jffs2到底做了哪些工作?
2,flash的blocksize不同对jffs2.img的烧写和运行有何影响?
3,jffs2.img烧录到flash以后,上电后kernel是如何让jffs运行的?

论坛徽章:
0
2 [报告]
发表于 2011-07-20 19:55 |只看该作者
本帖最后由 rouchel 于 2011-07-20 20:00 编辑

jffs2是一种文件系统格式,比如你熟悉的fat32、ntfs、ext4等。
在mount的某一个分区的时候该分区的文件类型就已经被确认。
文件系统具体定义了数据存储在该分区的具体方式及物理位置关系,简单的说,如果按照某一种规则去存放数据,仍按该规则去取数据才能得到和原来一样的数据。

现在回答你的问题:
1,mkfs.jffs2到底做了哪些工作?
将数据按照jffs2文件系统规定的格式打包成一个img文件,然后将这个img直接烧录到flash上,这样该img所占用的区域,如果是按照jffs2文件系统格式去读取,就能读取到打包前的完整数据。

2,flash的blocksize不同对jffs2.img的烧写和运行有何影响?
在制作jffs2.img的时候就已经确定了flash的blocksize,即数据格式已经固定,烧录到不同blocksize大小的flash上,系统读取数据的时候是按照flash实际的blocksize大小格式解析jffs2的,这个时候由于两次的blocksize大小不一样,导致了两次jffs2实际数据格式不能完全一样,从而就获取不到你想要的数据。所以你开始的想法就实现不了!无法兼容各种blocksize,否则在制作的时候就不用指定blocksize了。


3,jffs2.img烧录到flash以后,上电后kernel是如何让jffs运行的?
jffs是文件系统,属于OS里的一个重要组成部分,没有所谓单独运行一说。当你访问jffs分区的上的数据的时候,kernel会根据jffs的规则将数据取出,在app层来说这些是透明的,你拿到了你要的数据,具体这些数据是放在物理存储器的哪个位置,怎么样放的,你都不用关心,这些就是文件系统做的,你只要根据文件名就能访问你需要的文件了!

针对你想“兼容各种blocksize不同的flash”,直接在img上想办法是不够的,用一种烧录办法永远不可能兼容。你可以考虑根据flash的blocksize的不同用不同的烧录算法,这样是可以的,不过你做这个之前需要将jffs文件系统本身弄清楚!这样太浪费时间,最简单的办法还是针对不同大小的flash blocksize做几个不同的img,这只要敲几下命令即可!

论坛徽章:
0
3 [报告]
发表于 2011-07-20 20:34 |只看该作者
回复 2# rouchel


    恩,说的有道理,可工作任务是这个,我也无奈的。最近我一直在看mkfs.jffs2的代码,也了解了一些jffs2的知识。由于转换img是不可能的,所以就想能不能先解压然后再压缩,但是要在开发板上用uboot做这些,实在不是件容易的事情,那个mkfs的代码我想移植到uboot中,可需要zlib的库,很是悲剧。 但又想不错有什么别的好方法。

论坛徽章:
0
4 [报告]
发表于 2011-07-22 01:23 |只看该作者
不明白你说的先解压再压缩是什么意思?为何要把mkfs移植到uboot中?你能把你的具体需求再说的详细点吗?
用uboot去访问jffs2的分区数据还是什么意思呢?

论坛徽章:
0
5 [报告]
发表于 2011-07-22 14:16 |只看该作者
回复 4# rouchel


    详细的要求是这样的。希望我的rootfs做成image以后,无需再根据不同blocksize的flash重复制作,而是在uboot烧录的时候将image转换一下,转成板子上flash所对应的blocksize的image,然后烧录到flash上。
   我现在的做法是先把image中的数据读出来,然后再根据板子上flash的blocksize压缩成image,再烧录。读数据貌似不是很难,难的是压缩。看了下mkfs的代码,有点晕。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP