uboot에서 MMC 비활성화

uboot에서 MMC 비활성화

다음은 Xilinx zynq 플랫폼의 u-boot와 관련된 로그 메시지입니다.

[Fri Apr 04 19:57:50.990 2014] U-Boot 2013.07 (Apr 04 2014 - 19:38:00)
[Fri Apr 04 19:57:50.990 2014] 
[Fri Apr 04 19:57:50.990 2014] Memory: ECC disabled
[Fri Apr 04 19:57:50.990 2014] DRAM:  1 GiB
[Fri Apr 04 19:57:51.007 2014] MMC:   zynq_sdhci: 0
[Fri Apr 04 19:57:51.007 2014] SF: Detected N25Q128A with page size 64 KiB, total 16 MiB
[Fri Apr 04 19:57:51.038 2014] *** Warning - bad CRC, using default environment
[Fri Apr 04 19:57:51.038 2014] 
[Fri Apr 04 19:57:51.038 2014] In:    serial
[Fri Apr 04 19:57:51.038 2014] Out:   serial
[Fri Apr 04 19:57:51.038 2014] Err:   serial
[Fri Apr 04 19:57:51.038 2014] U-BOOT for Xilinx-ZC702-14.7
[Fri Apr 04 19:57:51.038 2014] 
[Fri Apr 04 19:57:51.038 2014] 
[Fri Apr 04 19:57:51.038 2014] SF: Detected N25Q128A with page size 64 KiB, total 16 MiB
[Fri Apr 04 19:57:51.354 2014] SF: 1963200 bytes @ 0x520000 Read: OK
[Fri Apr 04 19:57:51.354 2014] ## Loading kernel from FIT Image at 01000000 ...
[Fri Apr 04 19:57:51.354 2014]    Using 'conf@1' configuration
[Fri Apr 04 19:57:51.354 2014]    Trying 'kernel@1' kernel subimage
[Fri Apr 04 19:57:51.354 2014]      Description:  PetaLinux Kernel
[Fri Apr 04 19:57:51.354 2014]      Type:         Kernel Image
[Fri Apr 04 19:57:51.354 2014]      Compression:  gzip compressed
[Fri Apr 04 19:57:51.354 2014]      Data Start:   0x010000f0
[Fri Apr 04 19:57:51.354 2014]      Data Size:    1630119 Bytes = 1.6 MiB
[Fri Apr 04 19:57:51.354 2014]      Architecture: ARM
[Fri Apr 04 19:57:51.354 2014]      OS:           Linux
[Fri Apr 04 19:57:51.354 2014]      Load Address: 0x00008000
[Fri Apr 04 19:57:51.354 2014]      Entry Point:  0x00008000
[Fri Apr 04 19:57:51.354 2014]      Hash algo:    crc32
[Fri Apr 04 19:57:51.354 2014]      Hash value:   01dece90
[Fri Apr 04 19:57:51.354 2014]    Verifying Hash Integrity ... crc32+ OK

내 목표는 시작 시간을 줄이는 것입니다. 운영 체제와 u-boot는 플래시 메모리에서 부팅되어야 합니다. 하지만 MMC 상단에서 확인할 수 있듯이:

    [Fri Apr 04 19:57:50.990 2014] DRAM:  1 GiB
    [Fri Apr 04 19:57:51.007 2014] MMC:   zynq_sdhci: 0

0.17초가 소요됩니다.

어쨌든 u-boot에서 MMC를 비활성화하여 이 시간을 절약할 수 있습니까? 그렇다면 u-boot에서 MMC를 어떻게 비활성화할 수 있습니까? 일반적인 절차는 무엇입니까?

답변1

MMC가 감지되었습니다. 이는 정상입니다. 변경한다고 해서 상당한 시간을 절약할 수는 없다고 생각합니다.

U-Boot 명령 프롬프트가 표시되면(예: "부팅 지연" 중에 키를 누름) 명령 출력을 확인하여 부팅 순서에 대해 자세히 알아볼 수 있습니다.

printenv bootcmd
printenv bootargs

커널이 플래시 메모리에서 로드되었습니다. 귀하의 파일 시스템은 플래시 또는 MMC에 있을 수 있습니다. 이 플랫폼에 대해서는 잘 모르겠습니다.

귀하의 보드에는 저장된 U-Boot 환경이 없어 빌드 시 설정된 기본 환경을 사용하고 있는 것 같습니다. 환경 변수를 변경할 수 있어야 합니다(명령어환경 변수 설정) 그런 다음 이를 영구 메모리에 넣습니다(saveenv 명령). 일반적으로 이는 부팅 순서를 변경하는 일반적인 절차입니다.

답변2

[Fri Apr 04 19:57:50.990 2014] DRAM:  1 GiB
[Fri Apr 04 19:57:51.007 2014] MMC:   zynq_sdhci: 0

나 역시 mmc 초기화에 시간이 너무 많이 걸린다는 생각에 이런 함정에 빠졌다. 전혀 그렇지 않다. U-boot에서 mmc를 활성화하면 나중에 MMC 초기화가 발생합니다. 이것은 부팅 순서이며, Board_f.c 및 Board_r.c 파일에서 디버그 메시지를 활성화하면 이러한 오해가 해소됩니다.

제 경우에는 여기에서 보낸 대부분의 시간을 플래시에서 RAM으로 u-boot를 복사하는 데 보냈습니다.

관련 정보