U-Boot 2013.07 (Nov 21 2013 - 18:12:40)
Memory: ECC disabled
DRAM: 1 GiB
MMC: zynq_sdhci: 0
SF: Detected N25Q128A with page size 64 KiB, total 16 MiB
In: serial
Out: serial
Err: serial
Net: Gem.e000b000
Hit any key to stop autoboot: 0
SF: Detected N25Q128A with page size 64 KiB, total 16 MiB
SF: 11010048 bytes @ 0x520000 Read: OK
Wrong Image Format for bootm command
ERROR: can't get kernel image!
U-Boot-PetaLinux>
그런 다음 들어가서 run sdboot
SD 카드에서 부팅하고, 여기에 SD 부팅용 이미지를 넣습니다.
이는 UBoot가 기본적으로 플래시 메모리에서 부팅됨을 보여줍니다. 기본 부팅 장치가 플래시 드라이브 대신 SD 카드가 되도록 하려면 uboot에서 어떤 변경을 해야 합니까?
이를 위해 환경 변수를 설정해야 합니까?
답변1
u-boot 옵션에 대해 더 자세히 알아보려면 다음을 수행하는 것이 좋습니다.
U-Boot-PetaLinux> printenv
언급된 특정 환경 변수의 영향을 확인하세요.UBootEnv 변수. 아마도 당신이 할 변화는
U-Boot-PetaLinux> setenv bootcmd 'run sdboot' ; saveenv ; reboot
bootcmd 및 bootargs 변수를 이해하는 것이 가장 중요합니다. 정말 어려운 것은 없습니다. 정보가 바로 거기에 있습니다.
답변2
시스템이 이미 설정된 경우 @Joe Kul이 설명한 방법을 사용할 수 있습니다. 실제로 원하는 부팅 옵션으로 환경 변수를 설정하고 u-boot 구성 파일을 미디어에 저장할 수 있습니다.
아직 설치를 디버깅하는 중이라면 소스 코드에 환경 변수를 설정한 다음 다시 컴파일해야 할 수도 있습니다. u-boot 명령을 알아낸 후.
편집할 파일은 사용 중인 보드에 따라 다릅니다. mx23evk를 사용하므로 /include/configs/mx23evk.h
파일을 편집합니다. /* Extra Environments */
섹션을 살펴보세요 .
해당 부분을 모두 삭제하고 이것으로 대체했습니다.
/* Extra Environments */
#define CONFIG_EXTRA_ENV_SETTINGS \
"boot_mfg=echo Running mfgtools...; " \
"ext2load mmc 0:6 0x40600000 /boot/uboot/mfgupdat.zIm; " \
"ext2load mmc 0:6 0x40a00000 /boot/uboot/mfgupdat.dtb; " \
"bootz 40600000 - 40a00000;\0" \
"boot_pro=echo Running Production...; " \
"ext2load mmc 0:6 0x40600000 /boot/uboot/pro_1.zIm; " \
"ext2load mmc 0:6 0x40a00000 /boot/uboot/pro_1.dtb; " \
"bootz 40600000 - 40a00000;\0" \
"boot_rescue=echo Running Rescue...; " \
"bootz 40600000 - 40a00000;\0" \
u-boot 명령줄에서는 미리 정의된 3가지 부팅 설정 중 하나를 선택할 수 있습니다. run boot_mfg
또는 run boot_pro
...
이를 통해 3가지 다른 구성으로 빠르게 부팅할 수 있습니다. 디버깅이 완료되면 기본값으로 설정하세요.
내 기억이 정확하다면 변수 및 기본 시작 CONFIG_BOOTDELAY
과 관련이 있는 것 같습니다.CONFIG_BOOTCOMMAND
필요한 커널과 루트가 있는 파티션의 미디어에서 부팅할 수 있는 명령을 이미 파악했으므로 먼저 부팅하겠습니다.
ext2load mmc 0:6 0x40600000 /boot/uboot/mfgupdat.zIm
그런 다음 자동으로 시작하는 대신 소스 코드에 설정한 변수를 실행하여 이 명령을 반영하도록 소스 코드를 변경합니다.
run my_boot_variable
이에 만족한다면 시간 지연 유무에 관계없이 해당 변수를 사용하여 자동으로 시작되도록 소스 코드를 다시 변경하세요. 여러 부팅 변수를 추가하고 키 입력으로 다른 변수를 선택할 수 있습니다.
몇 달 동안 이 문제를 다루지 않았기 때문에 중요한 정보가 누락되었을 수도 있지만, 이를 통해 올바른 방향을 잡을 수 있을 것입니다.