在未連線 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 中閃光也是如此。

相關內容