前段时间调试3516cv610 emmc升级,由于大部分已经完成了,主要是把app分区制作成ext4文件系统镜像,然后将这个镜像合并到pkg中。这部分工作大部分已经固定了,按照流程做了。升级的时候发现,无法正常载入完整的pkg。最终发现是uboot 内存设置太小,PHYS_SDRAM_1_SIZE 。增大了这个内存之后,升级正常成功。
升级成功之后重启发现无法正常载入ramdisk,查看log发现如下:
发现在uboot中把fdt和ramdsik都转移到高地址了,设备中内存地址为0x40000000-0x43ffffff,由于bootargs中的mem设置的是32M。initrd 的起始位置和大小超出了系统内存范围,所以没有找到对应的文件系统。
根据打印找到复制到高地址的动作:
由于不敢随便修改sdk源码,目前做的策略是将bootargs 中的mem 和 boot中的头文件 PHYS_SDRAM_1_SIZE 宏保持一致。保证系统内存可以包含到initrd。