Unable to flash kernel/dtb from command line

Hello,

I am working with the Jetson TX2 platform using an Auvidea J140 daughter board and JetPack 3.3.

For our project I have modified and rebuild the kernel and device tree using instructions from RidgeRun (https://developer.ridgerun.com/wiki/index.php?title=Compiling_Jetson_TX1/TX2_source_code)

When I use the JetPack UI I can properly flash the board and install software.

However, for testing I need to make changes to the device tree so I need to be able to flash the DTB only.

Again using the instructions from RidgeRun I have been able to do so but now I have an issue.

Putting the board in recovery mode and running

sudo ./flash.sh -r -k kernel-dtb jetson-tx2 mmcblk1p1

I get the following error :

###############################################################################
# L4T BSP Information:
# R28 (release), REVISION: 2.1, GCID: 11272647, BOARD: t186ref, EABI: aarch64, 
# DATE: Thu May 17 07:29:06 UTC 2018
###############################################################################
Error: probing the target board failed.
       Make sure the target board is connected through 
       micro-B USB port and is in recovery mode.
augmenta@augmenta-ThinkPad-T460:/media/augmenta/JetPack/JetPack3.3/64_TX2/Linux_for_Tegra$ sudo ./flash.sh -r -k kernel-dtb jetson-tx2 mmcblk1p1
###############################################################################
# L4T BSP Information:
# R28 (release), REVISION: 2.1, GCID: 11272647, BOARD: t186ref, EABI: aarch64, 
# DATE: Thu May 17 07:29:06 UTC 2018
###############################################################################
# Target Board Information:
# Name: jetson-tx2, Board Family: t186ref, SoC: Tegra 186, 
# OpMode: production, Boot Authentication: , 
###############################################################################
./tegraflash.py --chip 0x18 --applet "/media/augmenta/JetPack/JetPack3.3/64_TX2/Linux_for_Tegra/bootloader/mb1_recovery_prod.bin" --cmd "dump eeprom boardinfo cvm.bin" --skipuid 
Welcome to Tegra Flash
version 1.0.0
Type ? or help for help and q or quit to exit
Use ! to execute system commands
 
[   0.0025 ] Generating RCM messages
[   0.0035 ] tegrarcm_v2 --listrcm rcm_list.xml --chip 0x18 --download rcm /media/augmenta/JetPack/JetPack3.3/64_TX2/Linux_for_Tegra/bootloader/mb1_recovery_prod.bin 0 0
[   0.0044 ] RCM 0 is saved as rcm_0.rcm
[   0.0049 ] RCM 1 is saved as rcm_1.rcm
[   0.0049 ] List of rcm files are saved in rcm_list.xml
[   0.0049 ] 
[   0.0050 ] Signing RCM messages
[   0.0059 ] tegrasign_v2 --key None --list rcm_list.xml --pubkeyhash pub_key.key
[   0.0067 ] Assuming zero filled SBK key
[   0.0103 ] 
[   0.0103 ] Copying signature to RCM mesages
[   0.0112 ] tegrarcm_v2 --chip 0x18 --updatesig rcm_list_signed.xml
[   0.0124 ] 
[   0.0125 ] Boot Rom communication
[   0.0133 ] tegrarcm_v2 --chip 0x18 --rcm rcm_list_signed.xml --skipuid
[   0.0142 ] RCM version 0X180001
[   0.0153 ] Boot Rom communication completed
[   1.0237 ] 
[   1.0280 ] tegrarcm_v2 --isapplet
[   1.0320 ] Applet version 01.00.0000
[   1.0531 ] 
[   1.0579 ] Retrieving EEPROM data
[   1.0586 ] tegrarcm_v2 --oem platformdetails eeprom cvm /media/augmenta/JetPack/JetPack3.3/64_TX2/Linux_for_Tegra/bootloader/cvm.bin
[   1.0634 ] Applet version 01.00.0000
[   1.0819 ] Saved platform info in /media/augmenta/JetPack/JetPack3.3/64_TX2/Linux_for_Tegra/bootloader/cvm.bin
[   1.1599 ] 
Parsing board information failed.

However, if I run JetPack UI it works.

Any ideas on what could be the issue ?

I really don’t want to have to re-flash the entire TX2 image and s/w every time I need to test a change in the device tree

Thank you in advance for your assistance.

There are some cases that would cause read board information failure.

  1. This is your first time flashing this board and there is no “cvm.bin”
    But I saw your have this line “/media/augmenta/JetPack/JetPack3.3/64_TX2/Linux_for_Tegra/bootloader/cvm.bin” so I think it may not be the case.

  2. You have once modified your EEPROM content but forgot to put the correct checksum, so bootloader finds something wrong.

Have you ever used i2c tool to write eeprom value?

For this particular board I have only flashed once when it came out of the box and then attempted to flash the DTB and had this error.

I have not worked with the EEPROM at all. Could it be that the eeprom is damaged somehow ? Are there any processes during boot that write data to the eeprom ?

Are you still able to boot into ubuntu? We should check the eeprom content.
Please refer to the eeprom layout on download center.

I am able to boot but I see no ethernet interface ! When I first flashed the board it correctly brought up the 2 Ethernet interfaces of the Auvidea J140 board.

I am starting to suspect that the daughterboard is damaged…

Could you use i2c tool to dump the eeprom and please dump your dmesg with us.

Ethernet needs the mac addr value and this value is stored inside eeprom. I mean the on-board ethernet. I am not sure what does Auvidea add on their board. They are our partners but we don’t know their design.

Hi

When flashing the TX2 using “JetPack UI”, by default the filesystem will be flashed in the EMMC.

The command that you are using to update the device-tree is to flash the filesystem into the SDcard:

sudo ./flash.sh -r -k kernel-dtb jetson-tx2 <b>mmcblk1p1</b>

As you are only updating the device-tree this should not be a problem, but maybe memory partitions change when flashing the filesystem into the EMMC or into the SDcard.

I think you should try this command:

sudo ./flash.sh -r -k kernel-dtb jetson-tx2 <b>mmcblk0p1</b>

Also, yo can try selecting the correct device-tree:

sudo ./flash.sh -r -k kernel-dtb -d kernel/dtb/tegra186-quill-p3310-1000-a00-00-base.dtb jetson-tx2 <b>mmcblk0p1</b>

You can also try flashing the DTB from the Jetson device itself, following this wiki:
https://developer.ridgerun.com/wiki/index.php?title=Compiling_Jetson_TX1/TX2_source_code#Flash_DTB_from_the_Jetson_device_itself

Regards,
-Enrique

Hello,

Aplogies for the late reply.

I finally figured out the issue.

Using the J140 daugterboard from Auvidea I am trying to interface 3 IMX214 sensors using the provided 3 CSI ports. For some reason when the sensor on the CSI E-F port is connected the TX2 fails to probe some I2C devices and it doesn’t read the EEPROM.

I am trying to get into more detail to determine if there is an issue in the device tree. So far I have used the kernel patches for JetPack 3.3 from Auvidea and modified them to add the IMX214 driver and sensor setup.

I will post again once I find a solution.

Hello again,

After some debugging I found out that the IMX214 sensor we are using has its own EEPROM at address 0x50 which conflicts with the Jetson EEPROM and that is the reason why the system does not boot properly.

The strange thing is that simply by switching the TX2 for the TX1 the problem does not appear and the EEPROM setup is the same.

Do the TX1 and TX2 have different boot sequences with respect to the information that is read from the EEPROM ?

Do you mean the eeprom on IMX214 is also using i2c bus7 addr 0x50?

Exactly