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