Jetson TX2i recovery and boot hardware

Hello!

I was wondering where each of the bootloaders are stored (mb1, mb2, …). Is it eMMC? Or another internal flash storage? What if it gets corrupted?

Is the only mean of restoring the flash using the USB-device mechanism? What if in my final application I couldn’t count on a USB-Host in order to perform a recovery?

Regards!
Tom

Hi tomas0u4lm,

If usb-host does not work to flash board, it is a hardware issue instead of a software one.

As for your question, what if mb1/mb2 get corrupted? We implemented A/B redundancy as error tolerance mechanism. There will always be two partitions for each bootloader to avoid corrupted case.

The detail of A/B redundancy is in L4T document.

Wayne,

Thank you for your quick answer. My concerns are not about the software itself but about the hardware.

Where are all the copies of mb1/mb2/… located?

About the usb-host issue, I might have not been clear. I wanted to know if there is another way to perform recovery apart from usb-device mode.

Hi! Sorry to insist about this issue but the main concern was not actually addressed by your answer.

I do not personally know much about the backup mechanism (especially for TX2i), but there is documentation on the topic which might have what you want. In general for TX2:
[url]Jetson Download Center | NVIDIA Developer

And for TX2i:
[url]Jetson Download Center | NVIDIA Developer

For TX2 R32.1:
[url]https://developer.nvidia.com/embedded/downloads#?search=32.1&tx=$product,jetson_tx2[/url]

Within R32.1 TX2 docs “L4T Documentation”, there is a boot flow section and partition description. Does this cover what you are looking for?

So far as being able to rewrite or edit partitions on an otherwise non-bootable system goes you need recovery mode and an external host. However, it might be possible using those above listed mechanisms to have alternate partitions available such that getting to the stage of “unbootable” is less likely. However, I have not worked on using that redundancy so I couldn’t tell you what mechanism is used to detect failure and switch to alternate partitions.

Thank you linuxdev!

I’ve been browsing through the documentation. Parker TRM indicates that:

MB stands for MicroBoot, stored on external boot media…

I should guess that it’s eMMC?

In the boot section it states:

Before Memory Subsystem boot can begin, MB1 must read the Boot Configuration Tables (BCTs) from flash memory (slow storage) into on-chip RAM.

Is flash memory the eMMC?

From the same document it seems that:

The Boot ROM on the Parker device begins executing and programs the on-chip I/O controllers to access the secondary boot device.

Is there a way to define the secondary boot device? At least the document describes a UART boot.

What about QSPI as a secondary boot device?

Are UART and QSPI available in TX2i to boot from?

I do not know what is in the very lowest parts of the boot process, but the basic gist is that eMMC does contain many parts of setup related to power rails and clocks (think of things like memory training a BIOS might go through being an eMMC program instead of a BIOS CMOS program), followed by the beginning of MB1. MB1 and later are in eMMC. Certainly some limited information prior to this stage is in the boot ROM, but that seems to me to be fairly limited and only for details which may need to differ between Jetsons (e.g., MAC address). Someone else would need to explain which parts of boot are not in eMMC since I have no knowledge of which specific parts are not in eMMC (and it would be extremely interesting to know more details than I currently know).

As to alternate boot devices, QSPI versus UART, and TX2i differences, that is also something someone else will need to answer. I suspect any kind of serial data could be used for boot if there is a way to access it during those early stages, but once again this is something I have no experience with.

Thank you linuxdev! I’ll wait to see if someone else has an answer and keep looking in the documentation.

Hi,

Currently the emmc is actually using sdmmc/sdio interface. We don’t support to boot on qspi or uart.

Hi all,

It looks there are still unanswered questions from @tomas0u4lm that I’m also very interested in.

  • Is MB located on eMMC or not?
  • Is there a way to define the secondary boot device?

All eMMC models of Jetsons (including TX2, but not necessarily some NX dev kits which boot from SD card) put boot information on the eMMC such that it cannot be offloaded to SD card (or other external device). In such cases with an external device some content is in eMMC even if technically you are booting to an external device.

Setting a secondary boot device might depend on model. If this is a TX2 dev kit, then the answer is different than any smaller form factor NX type dev kit, and also different than a commercial NX non-dev kit (separately sold modules have eMMC, NX dev kits do not). You would need to give very explicit details on which model you are using for any answer to have meaning.

We are talking on TX2i as is in the title…right?

TX2i is an eMMC model. It has some early boot stage content which cannot be put on an external device. I don’t know for the TX2i which boot stage can be put on an external device. I suspect it is no different than the other TX2 kits since they are all eMMC models (except for the NX dev kit).