海思3536开发板默认是256M的nand,在实际的产品中容量远远不能满足需求。根据上层软件的需要,硬件工程师把nand扩容到1G的存储空间。想要系统正常运行,需要以下操作:
1.修改Hitool的分区表
海思3536 使用Linux双系统:主系统和从系统。主系统主要控制4个A17核心。从系统主要控制A7和多媒体单元。我使用的事主系统来引导 从系统。把所有的应用程序放到了mashter_fs中。修改nand之前住文件系统只有235M
硬件扩容到1G后,增加主文件系统到900M
2.修改uboot加载的分区表
修改完烧写工具分区只能完成把对应的分区文件烧写到对应分区,烧写完后还要对uboot的引导参数进行修改。
setenv bootargs 'mem=512M console=ttyAMA0,115200 root=/dev/mtdblock2 rootfstype=yaffs2 mtdparts=hinand:1M(boot),4M(kernel),235M(rootfs)'
setenv bootcmd 'nand read 0x42000000 0x100000 0x400000;bootm 0x42000000'
setenv slave_autostart 1
setenv slave_bootcmd 'nand read 0x81000000 0xF000000 0x80000;nand read 0x82000000 0xF100000 0x400000;nand read 0x83000000 0xF500000 0x600000;bootm 0x81000000 0x82000000 0x83000000'
setenv slave_bootargs 'mem=96M console=ttyAMA0,115200'
saveenv
解释:
引导参数的第一句意思是我的内存是512M的,使用了串口0作为控制台,文件系统位置在/dev/mtdblock2 这个分区,系统类型是yaffs2的。主系统的分区表分别对应1M 4M 和235M。第一句是大部分uboot系统必须有的引导参数
第二行意思是uboot启动后将nand的0x100000(1M)位置往后4M的空间到内存的 0x42000000 这个位置,然后跳转到0x42000000 执行。总结,uboot把kernel从nand加载到ddr,并开始由uboot进入kernel
第三行是海思双系统独有的,设置让从系统自动加载,不需要主系统手动执行
第四行是uboot把从系统的uboot kernel 和文件系统读到内存中。起始地址分别是240M 241M 245M 转成十六进制后就是 0xF000000 ,0xF100000 0xF500000 。读取的大小分别是0x80000(1M) 0x400000(4M) 和0x600000(6M)
修改后的uboot引导参数:
setenv bootargs 'mem=512M console=ttyAMA0,115200 root=/dev/mtdblock2 rootfstype=yaffs2 mtdparts=hinand:1M(boot),4M(kernel),900M(rootfs)'
setenv bootcmd 'nand read 0x42000000 0x100000 0x400000;bootm 0x42000000'
setenv slave_autostart 1
setenv slave_bootcmd 'nand read 0x81000000 0x38900000 0x80000;nand read 0x82000000 0x38A00000 0x400000;nand read 0x83000000 0x38E00000 0x600000;bootm 0x81000000 0x82000000 0x83000000'
setenv slave_bootargs 'mem=96M console=ttyAMA0,115200'
saveenv
在这里我遇到一个yaffs文件系统的问题
[点击并拖拽以移动]
Current hardware config, pagesize:4096, ecctype:24bits/1K
1.请检查当前单板Flash与烧写分区中的Flash类型是否一致;
2.当前fastboot不支持该命令;
这个问题是之前的nand pagesize和ecctype不一样,只需要重新制作yaffs2文件系统即可。指令是:./mkyaffs2image610 rootfs_glibc_master rootfs_glibc_2k_4bit_zmj_1g.yaffs2 2 4
[点击并拖拽以移动]
[点击并拖拽以移动]
我只是增大了主操作系统的大小,由235M到900M,其他分区大小没有变化,但是从系统的起始地址发生了变化。从240M 241M 245M到905M 906M 910M。对应的uboot参数计算方法如下
[点击并拖拽以移动]
[点击并拖拽以移动]
[点击并拖拽以移动]
最后进入Linux 主系统系统验证是否成功
[点击并拖拽以移动]