다음은 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를 복사하는 데 보냈습니다.