第一步:首先看好flash分区
# cat /proc/mtd
dev: size erasesize name
mtd0: 000c0000 00020000 "boot1"
mtd1: 00040000 00020000 "boot2"
mtd2: 00100000 00020000 "os"
mtd3: 00600000 00020000 "jffs2"
flash总共 8M
0.5M "boot1",0.5M "boot2",1M "os"(内核),6M "jffs2"(文件系统)
第二步:进入armboot烧写内核
# setenv serverip 192.168.1.98 //设置服务IP,就是PC的IP
# erase 1:8-15 //擦除flash
# tftp 400000 zImage //先把内核下载到SDRAM中
# cp 400000 80100000 $(filesize) //然后从SDRAM中把内核拷贝到flash中,$(filesize)为文件大小
内核其实没有这么大,我是把这些放在脚本中的,所以指定了大小,也可以用实际内核大小把ffff0替换掉
这样内核就烧好了
第三步:制作jffs2文件系统(这些参数就不用我介绍了吧!)
一开始我用的是:
mkfs.jffs2 -r IPC-3G -o fs.image -p 0x600000 -e 0x4000 -s 0x200 -n
烧进去后发现有很多空块提示,然后稍微修改了下:
mkfs.jffs2 -r IPC-3G -o fs.image -p 0x600000 -e 0x20000 -s 0x800 -n
就发现空块少多了,制作出来的jffs2文件系统大小也较上者有所减小
-e 选项最好跟先前的擦除块大小一样,要不然会出现空块
-s 选项决定了生成的文件系统的大小
第四步:进入armboot烧写jffs2文件系统(原理和烧写内核是一样的)
# setenv serverip 192.168.1.98
# erase 1:16-63
# tftp 400000 fs.image
# cp 400000 80200000 $(filesize)
这样,内核跟文件系统就烧写好了
哈哈,问题终于解决了!刚开始制作的文件系统老是比较大,最后通过设置 -s 选项的参数大小,就顺里的解决了问题。
阅读(1401) | 评论(0) | 转发(0) |