1setenv stdout serial,vga 2echo "check U-Boot" ; 3setenv offset 0x400 4if ${fs}load ${dtype} ${disk}:1 12000000 u-boot.imx || ${fs}load ${dtype} ${disk}:1 12000000 u-boot.nopadding ; then 5 echo "read $filesize bytes from SD card" ; 6 if sf probe || sf probe || \ 7 sf probe 1 27000000 || sf probe 1 27000000 ; then 8 echo "probed SPI ROM" ; 9 if sf read 0x12400000 $offset $filesize ; then 10 if cmp.b 0x12000000 0x12400000 $filesize ; then 11 echo "------- U-Boot versions match" ; 12 else 13 echo "Need U-Boot upgrade" ; 14 echo "Program in 5 seconds" ; 15 for n in 5 4 3 2 1 ; do 16 echo $n ; 17 sleep 1 ; 18 done 19 echo "erasing" ; 20 sf erase 0 0x50000 ; 21 # two steps to prevent bricking 22 echo "programming" ; 23 sf write 0x12000000 $offset $filesize ; 24 echo "verifying" ; 25 if sf read 0x12400000 $offset $filesize ; then 26 if cmp.b 0x12000000 0x12400000 $filesize ; then 27 while echo "---- U-Boot upgraded. reset" ; do 28 sleep 120 29 done 30 else 31 echo "Read verification error" ; 32 fi 33 else 34 echo "Error re-reading EEPROM" ; 35 fi 36 fi 37 else 38 echo "Error reading boot loader from EEPROM" ; 39 fi 40 else 41 echo "Error initializing EEPROM" ; 42 fi ; 43else 44 echo "No U-Boot image found on SD card" ; 45fi 46