summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorStephen Warren <swarren@nvidia.com>2016-02-02 17:23:08 -0700
committerStephen Warren <swarren@nvidia.com>2016-02-02 17:28:32 -0700
commita8a89d3aec5f4e65056e1449aee187b3ebf731e9 (patch)
tree8ff272bbe6f7ecfa28c128cb88b4ce19adc1d8c4
parent948b56e9f1858779cebcdbb8639f697e8ada2421 (diff)
downloadtegra-uboot-flasher-scripts-a8a89d3aec5f4e65056e1449aee187b3ebf731e9.tar.gz
Use non-zero address for CRC calculations
Currently, U-Boot's itest command cannot read from address 0. On Tegra20, soc['ram-base'] can be 0, and is the address passed to itest. Modify the code to use an offset from this address, so as not to use address 0. Note that in Tegra30 and later, the RAM base is non-zero, so this issue does not occur. This issue also only affects the "flash" command, and not the "exec" command. A patch is also in progress to fix the itest command in U-Boot. However, fixing tegra-uboot-flasher not to use address 0 seems reasonable too, and will immediately solve the issue irrespective of which U-Boot code-base is in use. Signed-off-by: Stephen Warren <swarren@nvidia.com>
-rwxr-xr-xtegra-uboot-flasher9
1 files changed, 5 insertions, 4 deletions
diff --git a/tegra-uboot-flasher b/tegra-uboot-flasher
index 0fefe21..153db0d 100755
--- a/tegra-uboot-flasher
+++ b/tegra-uboot-flasher
@@ -206,14 +206,15 @@ def func_flash():
cmd = ['fdtput', '-p', '-t', 'x', u_boot_dtb_runflash, '/config', 'bootdelay', '0xfffffffe']
run(workdir, cmd)
+ crc_addr = soc['ram-base'] + 4
bootcmd = ''
bootcmd += 'echo >>> Verifying image in RAM... ; '
- bootcmd += 'crc32 0x%08x 0x%08x 0x%08x ; ' % (flash_image_addr, flash_img_size, soc['ram-base'])
- bootcmd += 'if itest.l *0x%08x != 0x%x; then echo CRC MISMATCH of initial image; exit; fi ; ' % (soc['ram-base'], flash_img_crc32_bs)
+ bootcmd += 'crc32 0x%08x 0x%08x 0x%08x ; ' % (flash_image_addr, flash_img_size, crc_addr)
+ bootcmd += 'if itest.l *0x%08x != 0x%x; then echo CRC MISMATCH of initial image; exit; fi ; ' % (crc_addr, flash_img_crc32_bs)
bootcmd += gen_flashcmd(flash_image_addr, readback_addr, flash_img_size)
bootcmd += 'echo >>> Verifying image from flash... ; '
- bootcmd += 'crc32 0x%08x 0x%08x 0x%08x ; ' % (readback_addr, flash_img_size, soc['ram-base'])
- bootcmd += 'if itest.l *0x%08x != 0x%x; then echo CRC MISMATCH of readback image; exit; fi ; ' % (soc['ram-base'], flash_img_crc32_bs)
+ bootcmd += 'crc32 0x%08x 0x%08x 0x%08x ; ' % (readback_addr, flash_img_size, crc_addr)
+ bootcmd += 'if itest.l *0x%08x != 0x%x; then echo CRC MISMATCH of readback image; exit; fi ; ' % (crc_addr, flash_img_crc32_bs)
bootcmd += 'echo >>> Setting up environment... ; '
bootcmd += 'env default -f -a ; '
# Perhaps U-Boot should set $boardname based on the ID EEPROM; then we wouldn't need this