移植Mer-qtmediahub到hi3716m(4):确定可写入hi3716m的文件系统镜像

本文档记录了将Mer-qtmediahub移植到hi3716m的过程中,为解决256MB/128MB FLASH容量限制,尝试使用cramfs和最终采用jffs2文件系统的过程。cramfs尝试失败,出现了bad compressed blocksize错误,而jffs2通过指定little-endian、eraseblock和pad参数成功创建并适配了hi3716m。

手头的hi3716m板子,FLASH容量有256MB的,也有128MB的。上面制作的mer-qtmediahubrootfs尺寸有200MB。后面还要加别的东西,比如浏览器等,因此,必须进行压缩。

按理说NANDFLASHyaffs文件系统比较理想,但是yaffs文件系统不是压缩的,因此即使做成yaffs文件系统,也会受到FLASH容量的限制。


首先尝试的是cramfs文件系统,用mkfs.cramfs可完成该文件系统的制作。

写入cramfs文件系统到FLASH后,启动板子,打印信息:

VFS:Mounted root (cramfs filesystem) readonly on device 31:9.

Freeinginit memory: 120K

cramfs:bad compressed blocksize 417793690

cramfs:bad compressed blocksize 417793690

cramfs:bad compressed blocksize 3329639899

cramfs:bad compressed blocksize 3329639899

cramfs:bad compressed blocksize 3329639899

/bin/sh:error while loading shared libraries: libtinfo.so.5: cannot openshared object file: Input/output error

Kernelpanic - not syncing: Attempted to kill init!


Stskeeps分析,可能是Merboot时需要写rootfs,或者其他原因。

于是尝试jffs2,最终的命令是:

mkfs.jffs2-d=meego-mer-qtmediahub-armv7l-UNKNOWN.20120127.1445/ --ohi3716m_rootfs.jffs2 -l -e 0x20000 -p –n

说明:

-l:即—little-endian.(如果不指定little-endian,那么jffs2镜像就会和HOSTendian一致!)

-e0x20000: –eraseblock=0x20000。这个值和hi3716m的某FLASH配置相同。

上面两个参数可以参考hi3716m的文档。

-p:及--pad。在mkfs.jffs2时,需要指定pad,否则在nandwrite.jffs2时会出错(即5127072不能整除0x20000:

NAND write: device 0 offset 0x1500000, size 0x30e5280
Attempt to write non page aligned data
 51270272 bytes written: ERROR

也可以指定-n”,这样在启动时就不会打印一堆CLEANMARKER信息;


评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值