Для U-Boot? Там же все очевидно. Ну вот от текущего проекта (там
SPI флешка совсем мелкая, ядро не влазит). Два ядра, старое .bak, новое .ub. Грузим новое и пытаемся запустить, если не вышло загрузить или ядро битое - грузим старый вариант. Можно добавить по вкусу загрузку ядра с SPI и загрузку по TFTP.
#define CONFIG_EXTRA_ENV_SETTINGS \
"uimage=kernel.ub\0" \
"oimage=kernel.bak\0" \
"ethact=emac\0" \
"bootdelay=1\0" \
"addmac=setenv bootargs ${bootargs} ethaddr0=${ethaddr}\0" \
"bootargs=root=/dev/ram0 console=ttyS0,115200n8 rdinit=/sbin/init mem=64M\0" \
"bootcmd=run addmac; fatload mmc 0 0x7fc0 ${uimage}; bootm 0x7fc0; fatload mmc 0 0x7fc0 ${oimage}; bootm 0x7fc0\0"