Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1335863
  • 博文数量: 177
  • 博客积分: 3640
  • 博客等级: 中校
  • 技术积分: 1778
  • 用 户 组: 普通用户
  • 注册时间: 2011-04-27 16:51
文章分类

全部博文(177)

文章存档

2014年(1)

2013年(10)

2012年(3)

2011年(163)

分类:

2012-04-21 18:16:45

在小i中, root分区的文件系统是cramfs, 使用flashkit刷root分区时, 对映的mtd设备为/dev/mtd5或/dev/mtdblock5, 刷新root分区的具体步骤请参考flashkit的README.

使用mkfs.cramfs生成的root cramfs镜像文件, 如果大小超出了/dev/mtdblock5允许的最大大小, 将导致刷机失败. 那么root cramfs镜像最大可以是多大呢? 用flashkit刷机前, 或者刷机后, 使用命令dd if=/dev/mtdblock5 of=filename bs=4096可将当前系统使用的root文件系统. 使用ls查看备份到的root文件系统有如下输出

blueice:~# ls -al *.smg
-rwxr-xr-x 1 root root 26083328 2006-08-10 20:48 33f.smg
-rwxr-xr-x 1 root root 25399296 2006-08-10 20:26 33.smg
-rwxr-xr-x 1 root root 25878528 2006-08-10 22:56 bs.smg
-rwxr-xr-x 1 root root 26083328 2006-08-10 20:33 orig.smg

其中orig.smg是刷机前对root文件系统做的备份(abp版本的firmware), 33.smg是刷机包, 33f.smg是刷机后对root文件系统做的备份. bs.smg是另外一次刷机使用的刷机包. 可以看出使用dd做的mtdblock5的备份大小是一致的, 为26083328字节, 25472kb,  24.875mb, 备份的大小和刷机时使用的刷机报大小没有关系. 两个刷机包, abp的cg33(对映orig.smg)大小为25018368, 33.smg(对映33f.smg)大小为25399296.

根据上面的信息, 我认为mtdblock5的大小为26083328字节(24.875mb), 从ezxflash带的parseheader程序也得到了证实, parseheader输出如下:

blueice:~/ezxflash# ./parseheader/parseheader firmware.shx
Codegroups: 15

T    N R  PR Start    End            Size Jump     ???      ?  C1 A  C2 ?  Ver    CRC  ??
00   0 03 23 a0200000 a023c0a3     245924 00000000 00000000 00 0d 02 02 03 00ff00 02c1 0000
00   0 00 25 03fd0000 03fefff7     131064 00f8fe03 b17219e9 00 0c 02 02 03 00ff00 0211 0000
00   0 01 25 10080000 100800c7        200 fb501810 000000b1 00 0c 02 02 06 ffff0d b360 0000
00   1 01 25 100800c8 102deeff    2485816 fb501810 000000b1 01 0c 02 02 06 ffff0d b3d8 0000
00   3 01 25 10040000 10046aaf      27312 fb501810 000000b1 01 0c 02 02 06 ffff0d b356 0000
00   2 01 25 10390000 103fffff     458752 00002800 4ca494ba 00 0c 02 02 02 00ff00 0214 0800
00  18 01 25 10310000 103107ff       2048 10003110 000000b1 00 0c 02 02 02 00ff00 02ed 0000
00  38 03 23 08c00000 09ee6447   19817544 00000000 00000000 00 0d 02 02 02 00ff00 0236 0000
00  32 03 23 00020000 000f5f6f     876400 00000000 00000000 00 0d 02 02 02 00ff00 0270 0000
00  33 03 23 00120000 018fbfff   25018368 00000000 00000000 00 0d 02 02 02 00ff00 0287 0000
00  34 03 23 01a00000 01f7ffff    5767168 00000000 00000000 00 0d 02 02 02 00ff00 0268 0000
00  35 03 23 08000000 08b5784f   11892816 00000000 00000000 00 0d 02 02 02 00ff00 02e2 0000
00  37 03 23 01fc0000 01fdffff     131072 00000000 00000000 00 0d 02 02 02 00ff00 02e8 0000
00  36 03 23 01fa0000 01fa6fff      28672 00000000 00000000 00 0d 02 02 02 00ff00 0271 0000
00  39 03 23 01fe0000 01fe00c3        196 00000000 00000000 00 0d 02 02 02 00ff00 023d 0000

其中N是代码段start是该段的开始地址, end是该段的结束地址, 开始地址和结束地址使用16进制数表示. 33段的开始地址(0x00120000)和与其最临近的开始地址34段的开始地址(0x01a00000)的差值是26083328,  和dd备份生成的文件的大小相同. 


阅读(1267) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~