又见高通板子flash分区问题。

时间:2021-10-09 23:37:49

高通的4028芯片。

板子是:IPQ40xx/AP-DK01.1-C2

Uboot可能见到128Mflash

又见高通板子flash分区问题。

linux系统只看到64M ,见下图的mtd8

又见高通板子flash分区问题。


看到uboot代码,bootipq命令的过程

先配置一些环境变量

setenv bootargs 'ubi.mtd=rootfs root=mtd:ubi_rootfs rootfstype=squashfs rootwait'
setenv fsbootargs 'ubi.mtd=rootfs root=mtd:ubi_rootfs rootfstype=squashfs'

setenv mtddevname fs
setenv mtddevnum 0
setenv mtdids 'nand1=nand1'
setenv mtdparts 'mtdparts=nand1:0x4000000@0x0(fs),'

setenv partition 'nand1,0'

然后更新设备树。

最后把kernel读到84000000,再使用bootm启动它。

nand device 1

ubi part fs && ubi read 0x84000000 kernel
bootm 0x84000000#config@ap.dk01.1-c2

手动启动以上操作,并修改其中的一些参数,不起作用。

而后想到一个老办法,使用bootargs从uboot给linux传入mtdparts=的参数。

 在uboot命令此参数,setenv bootargs 'mtdparts=spi0.0:256k(SBL1),128k(MIBIB),384k(QSEE),64k(CDT),64k(DDRPARAMS),64k(APPSBLENV),512k(APPSBL),64k(ART);spi0.1:64m@0x0(rootfs),64m(ext) ubi.mtd=rootfs ubi.mtd=ext'

然后bootipq.

这样linux系统就可以识别出后64M nand flash了。

还有一种方式:

setenv bootargs  'mtdparts=spi0.0:256k(SBL1),128k(MIBIB),384k(QSEE),64k(CDT),64k(DDRPARAMS),64k(APPSBLENV),512k(APPSBL),64k(ART);spi0.1:128m@0x0(rootfs)'

在linux系统如下:

root@OpenWrt:/# cat /proc/mtd
dev:    size   erasesize  name
mtd0: 00040000 00010000 "SBL1"
mtd1: 00020000 00010000 "MIBIB"
mtd2: 00060000 00010000 "QSEE"
mtd3: 00010000 00010000 "CDT"
mtd4: 00010000 00010000 "DDRPARAMS"
mtd5: 00010000 00010000 "APPSBLENV"
mtd6: 00080000 00010000 "APPSBL"
mtd7: 00010000 00010000 "ART"
mtd8: 08000000 00020000 "rootfs"

mtd9: 003ff000 0001f000 "kernel"

然后使用命令:

ubimkvol /dev/ubi0 --maxavsize -N rootfs_ext

    mount -t ubifs ubi0_3 /mnt

这样用户就可以以ubi文件系统的方式使用后面的64M了。