在未连接 Flash 的情况下保存 U-Boot 环境变量

在未连接 Flash 的情况下保存 U-Boot 环境变量

我看过多篇博客文章,其中有人绕过 U-Boot bootdelay 0 环境变量来访问 U-Boot CLI。一个例子是这里。据我了解,一般流程是:

  1. 拆焊/短接闪存芯片,使 U-Boot 无法访问它
  2. 打开设备电源
  3. U-Boot 无法找到闪存芯片并转到 CLI

    eth1 up
    eth0, eth1
    Qualcomm Atheros SPI NAND Driver, Version 0.1 (c) 2014  Qualcomm Atheros Inc.
    ath_spi_nand_ecc: Couldn't enable internal ECC
    Setting 0x181162c0 to 0x3061a100
    Hit any key to stop autoboot:  0 
    ** Device 0 not available
    ath>
    
  4. 将 bootdelay 更改为非零值:

    ath> setenv bootdelay 3
    ath> saveenv
    Saving Environment to Flash...
    Protect off 9F040000 ... 9F04FFFF
    Un-Protecting sectors 4..4 in bank 1
    Un-Protected 1 sectors
    Protect off 9F050000 ... 9F05FFFF
    Un-Protecting sectors 5..5 in bank 1
    Un-Protected 1 sectors
    Erasing Flash... 9F050000 ... 9F05FFFF ...Erasing flash... 
    First 0x5 last 0x5 sector size 0x10000 5
    Erased 1 sectors
    Writing to Flash...  9F050005 ... 9F060000 ...write addr: 9f050000
    write addr: 9f040004
    done
    Protecting sectors 5..5 in bank 1
    Protected 1 sectors
    Protecting sectors 4..4 in bank 1
    Protected 1 sectors
    ath>
    
  5. 关闭设备电源并重新连接闪存芯片。

据我所知,U-Boot及其环境变量驻留在闪存中。如果闪存芯片与CPU断开连接,U-Boot如何加载,以及如何将bootdelay变量保存在持久存储中?

答案1

这是一个非常具体的例子。在这个具体示例中,U-Boot 驻留在 NOR 闪存(一个芯片)中,而 Linux 内核驻留在 NAND 闪存(第二个芯片)中。参考指南要求您从主板上移除 NAND 芯片,从而启动失败,我们进入 U-Boot 命令行,然后您可以更改并保存启动延迟,因为在本例中 U-Boot 配置为将环境保存在 NOR 中闪光也是如此。

相关内容