现有的uboot参数:
hisilicon # printenv
baudrate=115200
bootfile="uImage"
jpeg_addr=0x80000000
jpeg_size=0x20000
vobuf=0x8f000000
bootargs=mem=128M console=ttyAMA0,115200root=1f04 rootfstype=jffs2mtdparts=hi_sfc:384K(uboot),128K(uboot_logo),256K(config),4736K(kernel),9856K(rootfs),1024K(custom)
bootcmd=showlogo;sf probe 0; sf read0x82000000 0xc0000 0x4a0000; bootm 0x82000000
ethaddr=00:16:17:30:C9:17
bootdelay=3
stdin=serial
stdout=serial
stderr=serial
verify=n
ver=U-Boot 2010.06 (Mar 14 2014 - 17:29:20)
gatewayip=192.168.0.1
netmask=255.255.255.0
ipaddr=192.168.0.133
serverip=192.168.0.233
Environment size: 561/262140 bytes
原有16M flash 分配
起始 ,0 ,384k ,512k ,768k ,5504k ,15460k,
大小 ,384k , 128k , 256k ,4736k ,9856k ,1024k
|---------------|-------------------------|-----------------|-----------------|-----------------|-----------------|
分区 , uboot , uboot_logo,config,kernel , rootfs ,custom,
32M SPI flash 分配
起始 ,0 , 384k , 512k , 768k , 5504k , 30720k,
,0 , 0x60000 ,0x80000 , 0xc0000 , 0x560000 , 0x1E00000
大小 ,384k , 128k , 256k ,4736k ,25216k ,2048k
, 0x60000 , 0x20000 , 0x40000 , 0x4a0000 ,0x18a0000 , 0x200000
|---------------|-------------------------|-----------------|-----------------|-----------------|-----------------|
分区 , uboot , uboot_logo,config,kernel , rootfs ,custom,
设置uboot参数
setenv bootargs ‘mem=128Mconsole=ttyAMA0,115200 root=1f04 rootfstype=jffs2mtdparts=hi_sfc:384K(uboot),128K(uboot_logo),256K(config),4736K(kernel),9856K(rootfs),1024K(custom)’
setenv bootargs ‘mem=128Mconsole=ttyAMA0,115200 root=1f04 rootfstype=jffs2mtdparts=hi_sfc:384K(uboot),128K(uboot_logo),256K(config),4736K(kernel),25216K(rootfs),2048K(custom)’
2. 挂载、制作jffs2文件系统
在这里,为了避免重新制作文件系统,我采用了备份的jffs2文件系统hi3531_rootfs_9856k.jffs2。在整个制作jffs2文件系统的过程中,我们采用root权限。
2.1. 挂载文件系统镜像
jffs2文件系统不是块设备,不能直接mount,需要做一些中间步骤。首先,内核必须支持MTD,并且编译了mtdram、mtdblock这两个模块。先先建立一个大于等于要挂载的文件系统的虚拟mtd设备。hi3531_rootfs_9856k.jffs2文件系统为9856k,那么我先建立一个大于等于9856k的虚拟mtd设备。(为了避免制作过程当中向文件系统里边添加大文件,我将mtd大小设置为9856K)
$ sudo modprobe mtdram total_size=9856
其中,total_size的单位是KB,指定mtd的大小。
加载mtdblock产生虚拟块设备并把sdkfs9856k3.17的内容写入生成的虚拟设备中:
$ sudo modprobe mtdblock
$ sudo dd if=/slq/tftpboot/sdkfs9856k3.17of=/dev/mtdblock0
(注:dd命令是指定大小的块拷贝文件,并在拷贝的同时进行指定的转换。if=file:输入文件名,缺省为标准输入。of=file:输出文件名,缺省为标准输出。)
创建挂载点:
$mkdir /mnt/mtd
现在就可以mount了:
$ sudo mount -t jffs2 /dev/mtdblock0/mnt/mtd
进入/mnt/mtd之后即可对文件系统进行修改!但是我发现挂载上去的内容和我实际的jffs2文件系统内容不同,不知道是怎么回事。
制作25216k 大小的文件系统
sudo mkfs.jffs2 -r /mnt/mtd -o fsslq25216k.3.17 -e 0x10000 --pad=0x18A0000 -s 0x800 –l
mw.b 0x82000000 0xff 0x18A0000; tftp0x82000000 fsslq25216k.3.17; sf probe 0; sf erase 0x560000 0x18A0000;
sf write 0x82000000 0x560000 $(filesize);save;reset
exportLD_LIBRARY_PATH="/mnt/ls/qt/lib:/usr/local/lib:/usr/lib:/mnt/ls/mpp/sam
ple/hifb_bak/lib"