Como fazer o cartão SD como inicialização padrão no uboot?

4
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>

então eu digitaria run sdboot , e inicializaria do cartão SD, onde coloquei uma imagem para a inicialização em sd.

Isso mostra que, por padrão, o UBoot está inicializando a partir do flash. Que mudanças eu preciso fazer no uboot e onde, para que o dispositivo de boot padrão seja o cartão SD e não o flash?

Existe alguma variável ambiental que eu tenho que definir para isso?

    
por gpuguy 22.03.2014 / 09:25

2 respostas

1

Para saber mais sobre as opções de inicialização, sugiro que você faça

U-Boot-PetaLinux> printenv

e observe o efeito de variáveis de ambiente específicas mencionadas em UBootEnvVariables . Provavelmente a mudança que você faria é

U-Boot-PetaLinux> setenv bootcmd 'run sdboot' ; saveenv ; reboot

Variáveis bootcmd e bootargs são mais importantes para entender. Nada é realmente difícil e as informações estão disponíveis para você.

    
por 22.03.2014 / 19:17
0

Se o seu sistema já estiver configurado, você pode usar o método descrito por @Joe Kul. Com efeito, você define uma variável de ambiente com as opções de inicialização desejadas e salva o arquivo de configuração da inicialização em sua mídia.

Se você ainda está depurando sua instalação, você pode querer definir sua variável de ambiente no código-fonte e então recompilar. Depois que você descobrir seus comandos de inicialização,

O arquivo a ser editado depende de qual placa você está usando. Eu uso o mx23evk, então eu edito o arquivo /include/configs/mx23evk.h . Veja a seção /* Extra Environments */ .

Eu removi tudo o que estava nessa seção e substituí-lo por isso.

/* 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;
ext2load mmc 0:6 0x40600000 /boot/uboot/mfgupdat.zIm
" \ "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;
run my_boot_variable
" \ "boot_rescue=echo Running Rescue...; " \ "bootz 40600000 - 40a00000;
/* 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;
ext2load mmc 0:6 0x40600000 /boot/uboot/mfgupdat.zIm
" \ "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;
run my_boot_variable
" \ "boot_rescue=echo Running Rescue...; " \ "bootz 40600000 - 40a00000;%pre%" \
" \

Na linha de comando da u-boot, posso escolher entre as três configurações predefinidas de inicialização: run boot_mfg OR run boot_pro ...

Isso me permite inicializar rapidamente em três configurações diferentes. Basta definir um como padrão quando terminar sua depuração.

Se bem me lembro, as variáveis CONFIG_BOOTDELAY e CONFIG_BOOTCOMMAND têm algo a ver com a inicialização padrão.

Primeiro, eu inicializo, já que você descobriu quais comandos permitem inicializar na mídia na partição com o kernel e a raiz que você deseja.

%pre%

Depois, altero meu código-fonte para refletir esse comando, não a inicialização automática, executando a variável definida no código-fonte.

%pre%

Se você estiver feliz com isso, altere o código-fonte novamente para a inicialização automática usando essa variável com ou sem um atraso cronometrado. Você pode adicionar várias variáveis de inicialização e selecionar variáveis diferentes pressionando a tecla.

Eu não tenho trabalhado com isso em alguns meses, então eu posso estar deixando de fora informações importantes, mas isso deve fazer você olhar na direção certa.

    
por 07.04.2016 / 15:38