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

高通的4028芯片。

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

Uboot可能见到128Mflash

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


看到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了。




  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值