if itest.s a$uboot_defconfig == a; then echo "Please set uboot_defconfig to the appropriate value" exit fi offset=0x400 a_uImage1=0x12000000 a_uImage2=0x12400000 if itest.s x6SX == "x$cpu" ; then a_uImage1=0x82000000 a_uImage2=0x82400000 fi setenv stdout serial,vga echo "check U-Boot" ; if load ${dtype} ${disk}:1 ${a_uImage1} u-boot.$uboot_defconfig ; then else echo "No U-Boot image found on SD card" ; exit fi echo "read $filesize bytes from SD card" ; if sf probe || sf probe || sf probe 1 27000000 || sf probe 1 27000000 ; then echo "probed SPI ROM" ; else echo "Error initializing EEPROM" ; exit fi ; if sf read ${a_uImage2} $offset $filesize ; then else echo "Error reading boot loader from EEPROM" ; exit fi if cmp.b ${a_uImage1} ${a_uImage2} $filesize ; then echo "------- U-Boot versions match" ; exit fi echo "Need U-Boot upgrade" ; echo "Program in 5 seconds" ; for n in 5 4 3 2 1 ; do echo $n ; sleep 1 ; done echo "erasing" ; sf erase 0 0xC0000 ; # two steps to prevent bricking echo "programming" ; setexpr a1 ${a_uImage1} + 0x400 setexpr o1 ${offset} + 0x400 setexpr s1 ${filesize} - 0x400 sf write ${a1} ${o1} ${s1} ; sf write ${a_uImage1} $offset 0x400 ; echo "verifying" ; if sf read ${a_uImage2} $offset $filesize ; then else echo "Error re-reading EEPROM" ; exit fi if cmp.b ${a_uImage1} ${a_uImage2} $filesize ; then else echo "Read verification error" ; exit fi while echo "---- U-Boot upgraded. reset" ; do sleep 120 done