This is a guide for flashing your AGX Xavier module when it produces errors during the flashing process.
Some things to note:
- First, you must be able to boot the system up, as is.
- Second, you must have a working username and password for the system.
- Third, you must have a way to serial into the device, or log into it.
If you cannot meet any of these requirements you will be unable to proceed further.
EEPROM Table
The Xavier has an EEPROM table, which is mapped to i2c bus 0, address 0x50.
The EEPROM table can be dumped with the following command: i2cdump -y -f 0 0x50
The result you should see is something akin to this example:
0 1 2 3 4 5 6 7 8 9 a b c d e f 0123456789abcdef 00: 01 00 ff 00 48 0b 01 00 04 4a 00 00 00 00 00 00 ?...H??.?J...... 10: 00 00 00 00 36 39 39 2d 38 32 38 38 38 2d 30 30 ....699-82888-00 20: 30 31 2d 34 30 30 20 4a 2e 30 00 00 00 00 00 00 01-400 J.0...... 30: 00 00 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ................ 40: ff ff ff ff e8 e5 cb 4b 04 00 30 34 32 34 32 31 ....???K?.042421 50: 38 30 33 30 39 31 30 00 00 00 00 00 00 00 00 00 8030910......... 60: 00 00 00 00 00 00 00 00 00 00 00 80 00 00 00 00 ...........?.... 70: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 80: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 90: 00 00 00 00 00 00 4e 56 43 42 1c 00 4d 31 00 00 ......NVCB?.M1.. a0: ff ff ff ff ff ff ff ff ff ff ff ff e8 e5 cb 4b ............???K b0: 04 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ?............... c0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ d0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ e0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ f0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ff ................
Something you may notice are the ascii strings encoded in the ROM, these are the PN (Product part Number) and the SN (Serial Number).
In this case, the PN is 699-82888-0001-400 J.0
and the SN is 0424218030910
Checking the EEPROM
First, check bytes 0 &1. Make sure that byte 0 is 0x01 and that byte 1 is 0x00.
If bytes 0 & 1 are not what they should be ski ahead to the "Modifying The EEPROM" section.
If bytes 0 & 1 are what they should be, check the CRC at byte 255.
- To ensure that the CRC is valid; put your board into Forced-Recovery, connect to your host machine, on your host machine run the command
./bootloader/chkbdinfo -i bootloader/cvm.bin
in the Linux_for_Tegra/ directory. - The aforementioned command will spit out an error if the CRCs do not match. It will also tell you which is the correct CRC. Once you have this, proceed to the Modifying the EEPROM Section.
Modifying the EEPROM
To modify a byte in the EEPROM simply execute the following command template: i2cset 0 0x50 [byte] [value]
For example to update the CRC: i2cset 0 0x50 255 <CRC>
or, to ensure byte 1 is 0: i2cset 0 0x50 1 0x0
Flashing
Once you have successfully made your changes to the EEPROM via i2c, power off your system and subsequently flash it from your host flashing computer.