Flash 연결 없이 U-Boot 환경 변수 저장

Flash 연결 없이 U-Boot 환경 변수 저장

사람들이 U-Boot CLI에 액세스하기 위해 U-Boot bootdelay 0 환경 변수를 우회한 여러 블로그 게시물을 보았습니다. 예는 다음과 같습니다여기. 제가 아는 한, 일반적인 프로세스는 다음과 같습니다.

  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를 0이 아닌 값으로 변경합니다:

    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 플래시(1개의 칩)에 있는 반면 Linux 커널은 NAND 플래시(두 번째 칩)에 있습니다. 참조 가이드에서는 부팅이 실패하도록 마더보드에서 NAND 칩을 제거해야 합니다. U-Boot 명령줄로 이동한 다음 부팅 지연을 변경하고 저장할 수 있습니다. 이 경우 U-Boot는 NOR 플래시의 환경도 이와 같습니다.

관련 정보