用已有16M文件系统制作32M文件系统,修改 uboot 参数

 

现有的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"


你可能感兴趣的:(hi3531,uboot,嵌入式,linux)