max-chen 发表于 2018-8-1 14:23:16

擦除uboot的参数

试用的是IM6UL的设备,我看烧写工具里的擦除UBOOT的参数是
执行该指令,但是好像没有擦除参数。
dd if=/dev/zero of=/dev/mmcblk1 bs=1k seek=384 conv=fsync count=129

请问uboot的参数分区放在哪里。如何擦除。参数设置错误后直接用TF卡是升级也不行,感觉从TF卡启动去升级固件,没有擦除之前写错的UBOOT的参数。



Marss 发表于 2018-8-1 15:07:45

因为uboot在mmc的第一boot分区内,而此分区是被设置为只读模式的,所以您无法通过uboot擦除boot分区内的内容

    您可以通过修改mfgtools烧写工具里面的文件来实现,

    文件为OKMX6UL-C(eMMC&Nand版)用户资料-2018.04\Linux\tools\OTG\mfgtools\Profiles\Linux\OS Firmware\ucl2.xml文件的444行

    所涉及的部分如下:




<!-- burn uboot -->
<CMD state="Updater" type="push" body="$ dd if=/dev/zero of=/dev/mmcblk%mmc% bs=1k seek=384 conv=fsync count=129">clear u-boot arg</CMD>
<!-- access boot partition -->
<CMD state="Updater" type="push" body="$ echo 0 > /sys/block/mmcblk%mmc%boot0/force_ro">access boot partition 1</CMD>
<CMD state="Updater" type="push" body="send" file="files/linux/u-boot-emmc-256.imx" ifdev="MX6UL">Sending u-boot.bin</CMD>
<CMD state="Updater" type="push" body="$ dd if=$FILE of=/dev/mmcblk%mmc%boot0 bs=512 seek=2">write U-Boot to sd card</CMD>
<CMD state="Updater" type="push" body="$ echo 1 > /sys/block/mmcblk%mmc%boot0/force_ro"> re-enable read-only access </CMD>
<CMD state="Updater" type="push" body="$ echo 8 > /sys/block/mmcblk%mmc%/device/boot_config">enable boot partion 1 to boot</CMD>




    请问您为什么要擦除uboot呢?

max-chen 发表于 2018-8-1 15:13:28

Marss 发表于 2018-8-1 15:07
因为uboot在mmc的第一boot分区内,而此分区是被设置为只读模式的,所以您无法通过uboot擦除boot分区内的内 ...

我在系统起来之后去擦除UBOOT参数好像也不行的。
dd if=/dev/zero of=/dev/mmcblk%mmc% bs=1k seek=384 conv=fsync count=129
我们UBOOT进入命令模式,可以通过setenv设置参数,设置错误之后,启动不了,这时候线刷重新刷或者用SD卡启动去升级,都无法启动,也就是UBOOT的参数一直都没有被清除。如果被清除应该是试用默认的参数才对。

max-chen 发表于 2018-8-1 15:14:51

Marss 发表于 2018-8-1 15:07
因为uboot在mmc的第一boot分区内,而此分区是被设置为只读模式的,所以您无法通过uboot擦除boot分区内的内 ...

我多做了一个分区,用UBOOT的mmcroot去指定文件系统挂载的哪个,不小心输错了,后面就没办法直接通过线刷或者SD开启动升级来恢复。

Marss 发表于 2018-8-1 15:23:14

不知道你的怎么分布的,你的多做的分区放在了那里?uboot分区对应的是mtd0,擦除命令直接是flash_erase /dev/mtd0 0 0

max-chen 发表于 2018-8-1 15:43:55

Marss 发表于 2018-8-1 15:23
不知道你的怎么分布的,你的多做的分区放在了那里?uboot分区对应的是mtd0,擦除命令直接是flash_erase /de ...

dd if=/dev/zero of=/dev/mmcblk1 bs=1k seek=384 conv=fsync count=129
这个的意思是吧mmcblk1的384K开始到(384+129)K的区域擦除掉把,我们UBOOT的参数也没有分这么大吧

max-chen 发表于 2018-8-1 15:46:44

Marss 发表于 2018-8-1 15:23
不知道你的怎么分布的,你的多做的分区放在了那里?uboot分区对应的是mtd0,擦除命令直接是flash_erase /de ...

我们UBOOT是写在mmblk1boot0的位置,这个区域是2M.参数是不是也在这里面呢。

Marss 发表于 2018-8-1 16:05:08

额您用的是emmc的核心板吧?

max-chen 发表于 2018-8-1 17:22:44

Marss 发表于 2018-8-1 16:05
额您用的是emmc的核心板吧?

是的,用的EMMC的

max-chen 发表于 2018-8-1 17:29:37

Marss 发表于 2018-8-1 16:05
额您用的是emmc的核心板吧?

是的,用的EMMC的

Marss 发表于 2018-8-2 09:07:25

您可以看OTG烧写脚本里面,关于EMMC烧写uboot的参数,文件是在OKMX6UL-C(eMMC&Nand版)用户资料-2018.04\Linux\工具\OTG\mfgtools\Profiles\Linux\OS Firmware里面的ucl2-xml.xml文件,emmc的uboot烧写部分
<!-- burn uboot -->


<CMD body="$ dd if=/dev/zero of=/dev/mmcblk%mmc% bs=1k seek=384 conv=fsync count=129" type="push" state="Updater">clear u-boot arg</CMD>

<!-- access boot partition -->


<CMD body="$ echo 0 > /sys/block/mmcblk%mmc%boot0/force_ro" type="push" state="Updater">access boot partition 1</CMD>

<CMD ifdev="MX6UL" file="files/linux/u-boot-emmc.imx" body="send" type="push" state="Updater">Sending u-boot.bin</CMD>

<CMD body="$ dd if=$FILE of=/dev/mmcblk%mmc%boot0 bs=512 seek=2" type="push" state="Updater">write U-Boot to sd card</CMD>

<CMD body="$ echo 1 > /sys/block/mmcblk%mmc%boot0/force_ro" type="push" state="Updater"> re-enable read-only access </CMD>

<CMD body="$ echo 8 > /sys/block/mmcblk%mmc%/device/boot_config" type="push" state="Updater">enable boot partion 1 to boot</CMD>

按照此参数试一下
页: [1]
查看完整版本: 擦除uboot的参数