kumquat-buildroot/board/boundarydevices/common/upgrade.cmd
Gary Bisson 505ae63b60 configs: nitrogen*: bump u-boot version to 2017.07
Also include new boot scripts to match standard distro uboot commands.

Our previous 6x_bootscript and 6x_upgrade used custom variables and
their naming don't make sense now that we target more than i.MX6 CPU.

Therefore those old scripts are marked as legacy and kept for now but
the goal is to deprecate and remove them later.

Signed-off-by: Gary Bisson <gary.bisson@boundarydevices.com>
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
2018-01-07 15:48:56 +01:00

155 lines
3.5 KiB
Batchfile

if itest.s a$uboot_defconfig == a; then
echo "Please set uboot_defconfig to the appropriate value"
exit
fi
offset=0x400
erase_size=0xC0000
qspi_offset=0x0
a_base=0x12000000
if itest.s x51 == "x${imx_cpu}"; then
a_base=0x92000000
elif itest.s x53 == "x${imx_cpu}"; then
a_base=0x72000000
elif itest.s x6SX == "x${imx_cpu}" || itest.s x7D == "x${imx_cpu}"; then
a_base=0x82000000
fi
qspi_match=1
setexpr a_qspi1 ${a_base}
setexpr a_qspi2 ${a_qspi1} + 0x400000
setexpr a_uImage1 ${a_qspi1} + 0x400
setexpr a_uImage2 ${a_qspi2} + 0x400
setexpr a_script ${a_base}
setenv stdout serial,vga
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 itest.s x7D == "x${imx_cpu}"; then
echo "check qspi parameter block" ;
if ${fs}load ${devtype} ${devnum}:1 ${a_qspi1} qspi-${sfname}.${uboot_defconfig} ; then
else
echo "parameter file qspi-${sfname}.${uboot_defconfig} not found on SD card"
exit
fi
if itest ${filesize} != 0x200 ; then
echo "------- qspi-${sfname}.${uboot_defconfig} 0x${filesize} != 0x200 bytes" ;
exit
fi
setexpr a_marker ${a_qspi1} + 0x1fc
if itest *${a_marker} != c0ffee01 ; then
echo "------- qspi-${sfname}.${uboot_defconfig} c0ffee01 marker missing" ;
exit
fi
if sf read ${a_qspi2} ${qspi_offset} 0x200 ; then
else
echo "Error reading qspi parameter from EEPROM"
exit
fi
if cmp.b ${a_qspi1} ${a_qspi2} 0x200 ; then
echo "------- qspi parameters match"
else
echo "------- qspi parameters mismatch"
qspi_match=0
fi
fi
echo "check U-Boot" ;
if ${fs}load ${devtype} ${devnum}:1 ${a_uImage1} u-boot.$uboot_defconfig ; then
else
echo "File u-boot.$uboot_defconfig not found on SD card" ;
exit
fi
echo "read $filesize bytes from SD card" ;
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" ;
if itest.s "${qspi_match}" == "1" ; then
echo "------- upgrade not needed" ;
if itest.s "x" != "x${next}" ; then
if ${fs}load ${devtype} ${devnum}:1 ${a_script} ${next} ; then
source ${a_script}
else
echo "${next} not found on SD card"
fi
fi
exit
fi
erase_size=0x1000
if itest.s xMX25L6405D == "x${sfname}"; then
erase_size=0x10000
fi
setexpr filesize ${erase_size} - ${offset}
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 ${erase_size} ;
# 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 ;
if itest.s x7D == "x${imx_cpu}"; then
sf write ${a_qspi1} ${qspi_offset} 0x200
fi
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
if itest.s x7D == "x${imx_cpu}"; then
if sf read ${a_qspi2} ${qspi_offset} 0x200 ; then
else
echo "Error re-reading qspi" ;
exit
fi
if cmp.b ${a_qspi1} ${a_qspi2} 0x200 ; then
else
echo "qspi parameter block verification error" ;
exit
fi
fi
if itest.s "x" != "x${next}" ; then
if ${fs}load ${devtype} ${devnum}:1 ${a_script} ${next} ; then
source ${a_script}
else
echo "${next} not found on ${devtype} ${devnum}"
fi
fi
while echo "---- U-Boot upgraded. reset" ; do
sleep 120
done