i.MX7 bricked during flashing, no serial

I have a Colibri iMX.7 on an Iris eval board. My host computer is an up-to-date Ubuntu Linux laptop. I am trying to follow the flashing procedure at:

http://developer.toradex.com/knowledge-base/flashing-embedded-linux-to-imx7-modules

  1. Created bootable USB flash drive. Inserted and attempted to boot. Did not recognize.
  2. Created bootable SD card. Inserted and attempted to boot. Did not recognize.
  3. Followed procedure on the above page for “Flashing from scratch”. Steps 1 through 3 successful. Step 4 says, “On the target…” – unsure what that means since by definition if I am going from scratch, I don’t have access to the target.
  4. Connected Toradex-supplied USB to serial adapter. Verified /dev/ttyUSB0 present, 115200 baud. Attempted to reboot. No visible output.
  5. Connected a 3rd party USB to serial adapter (AdaFruit part). Saw garbage characters during bootup.
  6. Meanwhile, the target system no longer boots – successfully. When connected to a display, the stack trace shows an error in mount_block_root originating in kernel_init.
  7. Still unable to boot from SD card or USB flash drive. When SD card or USB flash installed, the boot kernel panic error message is slightly different, saying something about VFS: Unable to mount root fs unknown-block(0,0).

Thanks and kind regards,

Ihab Awad

1 & 2: What do you mean by bootable USB flash drive resp. SD card? All our modules exclusively boot off their on-module none volatile storage which is raw NAND flash in the Colibri iMX7 case.

3: That is not true as all our recent modules do have a built in recovery mode which in the Colibri iMX7 case is the SoC’s resp. it’s boot ROM’s serial downloader accessible via USB device connection.

4 & 5: unfortunately the recovery mode won’t print anything on the serial console.

6: Looks like you corrupted your rootfs but without full serial debug output it’s hard to tell.

7: As mentioned above one can not boot from external secondary storage like that. However once U-Boot is running one could either use distro boot or our former specific boot targets as explained in the following article on our developer website.

There is a bug in the current version of U-Boot (V2.7 Beta 1 release) that does not allow to use a USB flash drive with the current release (it should appear on our bug tracker with the issue number #23492 soon).

However, the described process using a SD-card should work fine. As @marcel.tx pointed out, the SD card is not actually bootable. You need to have a U-Boot on the target to use the U-Boot prompt over the serial console to flash the image from the SD-card.

My guess is due to the bug above and your first try using the USB flash drive you ended up with a “half-way flashed” module now…

If you have still access to a U-Boot prompt, I recommend to retry the regular flashing procedure. If this is not the case, I recommend following the Flashing from Scratch procedure.

Thank you for your help.

It turns out problem #1 was that I had the UART cable on backwards – see attached images:

I swear I aligned “pin 9” on the connector with the correct pin on the circuit board header, but I guess something was wrong either in how I read the alignment or how the connector was assembled. In any case, after fixing that, I can now actually get a U-Boot prompt.

With that taken care of, I am following the “Flashing from Scratch” procedure as you suggest above, and I am still having trouble in the run setupdate step. It seems to be trying to load an image from somewhere but not getting there. I do not have my board with me at the moment so I cannot paste in the exact error message, but I will do so ASAP.

I notice though that “Flashing from Scratch” refers to “Flashing Embedded Linux over Ethernet”. I wonder if having the Ethernet set up is a prerequisite to getting run setupdate to work…

Thank you again; I’ll be in touch.

Ihab Awad

The “See also” section refers to the whole page and not particular to the Flashing from Scratch section.

run setupdate should really work with just the prepared SD card plugged in.