I'm setting up Mfgtool re-flashing of my Hummingboard i.MX6Q system. I've built a mfgtool U-boot, kernel and rootfs using Yocto.
When I boot over OTG USB using Mfgtool my target sometimes successfully boots into the linux kernel. Most attempts fail with:
## Loading init Ramdisk from Legacy Image at 12c00000 ...
Image Name: fsl-image-mfgtool-initramfs-soli
Image Type: ARM Linux RAMDisk Image (gzip compressed)
Data Size: 88443107 Bytes = 84.3 MiB
Load Address: 00000000
Entry Point: 00000000
Verifying Checksum ... Bad Data CRC
Ramdisk image is corrupt or invalid
Because of the intermittent nature of the failure I suspected DDR calibration problems. So I've run the DDR Stress Tester with the settings used by my Mfgtool U-boot. The stress test passed without needing calibration data changes.
If I modify my ucl2.xml to load the initramfs file into memory twice in different locations, and then run cmp in U-boot, the data is different. Run cmp again and I get the same difference. So the error occurred during the write to RAM, not the read.
If I do a cp in u-boot to copy a large block of data and then a cmp to compare the memory areas, they are the same.
Can I then conclude that my errors occur during USB data transfer?
Can anyone suggest how to diagnose further, or what could be the problem?