None-boot Colibri iMX7S

A customer is using Linux BSP v2.6.1 on iMX7S module as development and production progress are already finished, so they would like to stay with this version BSP. Since v2.7, the flash layout have been changed and current module are shipped with v2.7 BSP. We suggested customer use following script to downgrade v2.7 to v2.6.1 in recovery mode.

Colibri iMX7 # mmc rescan && setenv interface mmc
Colibri iMX7 # mtdparts default
Colibri iMX7 # setenv update_uboot_tmp 'mtdparts default && fatload ${interface} 0:1 ${loadaddr} ${board_name}/u-boot-nand.imx && nand erase.part u-boot1 && nand erase.part u-boot2 && nand write ${loadaddr} u-boot1 ${filesize} && nand write ${loadaddr} u-boot2 ${filesize}'
Colibri iMX7 # run update_uboot_tmp

reboot

Colibri iMX7 # nand erase.chip
Colibri iMX7 # run setupdate
Colibri iMX7 # run create_bcb
Colibri iMX7 # cfgblock create
Is the module an IT version? [y/N] N
Enter the module version (e.g. V1.1B): V1.1B
Enter module serial number: XXXXXX
Toradex config block successfully written
Colibri iMX7 # run update

Hundreds module are successful but with one fails. It enters into recovery module after flashing. I have tried Toradex Easy Installer with v2.7b4 stable BSP and erased whole flash, it is still the same. Flashed with v2.7b4 BSP, this module can boot up only if u-boot is loaded via recovery mode and boot Linux with this u-boot. The flashed u-boot on nand doesn’t seem to work at all. Is it possible that there are bad blocks at u-boot1 area? Any way I can recovery it?
Thanks very much!

I also tried to manually download u-boot-nand.imx and flash it into Nand, then read it out to check CRC checksum. The checksum on imx7s is the same as the one calculated on PC. Here is the logs. So the Nandflash should be safe to sotre u-boot.
PC:

ben@LinuxDev:~/Toradex/tftp/colibri_imx7$ crc32 u-boot-nand.imx 
142709f5

iMX7:

Colibri iMX7 # tftpboot ${fdt_addr_r} ${board_name}/u-boot-nand.imx
Using FEC0 device
TFTP from server 10.20.1.105; our IP address is 10.20.1.116
Filename 'colibri_imx7/u-boot-nand.imx'.
Load address: 0x82000000
Loading: ##################################################  588 KiB
         8.6 MiB/s
done
Bytes transferred = 602112 (93000 hex)
Colibri iMX7 # crc32 ${fdt_addr_r} ${filesize}                     
crc32 for 82000000 ... 82092fff ==> 142709f5

Colibri iMX7 #  nand erase.part mx7-bcb

NAND erase.part: device 0 offset 0x0, size 0x80000
Erasing at 0x60000 -- 100% complete.

Colibri iMX7 # nand erase.part u-boot1

NAND erase.part: device 0 offset 0x80000, size 0x180000
Erasing at 0x1e0000 -- 100% complete.
OK
Colibri iMX7 # nand write ${fdt_addr_r} u-boot1 ${filesize}

NAND write: device 0 offset 0x80000, size 0x93000
 602112 bytes written: OK
Colibri iMX7 # nand erase.part u-boot2

NAND erase.part: device 0 offset 0x200000, size 0x180000
Erasing at 0x360000 -- 100% complete.
OK
Colibri iMX7 # nand write ${fdt_addr_r} u-boot2 ${filesize}

NAND write: device 0 offset 0x200000, size 0x93000
 602112 bytes written: OK



Colibri iMX7 # cfgblock create
Is the module an IT version? [y/N] N
Enter the module version (e.g. V1.1B): V1.1B
Enter module serial number: XXXXXXXX
Toradex config block successfully written


Colibri iMX7 # nand read ${fdt_addr_r} 0x80000 ${filesize}

NAND read: device 0 offset 0x80000, size 0x93000
 602112 bytes read: OK
Colibri iMX7 # crc32 ${fdt_addr_r} ${filesize}            
crc32 for 82000000 ... 82092fff ==> 142709f5

Colibri iMX7 # nand read ${fdt_addr_r} 0x200000 ${filesize}

NAND read: device 0 offset 0x200000, size 0x93000
 602112 bytes read: OK
Colibri iMX7 # crc32 ${fdt_addr_r} ${filesize}             
crc32 for 82000000 ... 82092fff ==> 142709f5

Hi Team, could you please provide suggestion about this issue? Thanks very much!