Trouble flashing custom board.

We’re trying to flash our own custom board with flash.sh, and get this output:

[0000.000] [TegraBoot] (version UNDEF_BUILD)
[0000.004] Reset reason: power on reset
[0000.008] Processing in recovery mode
[0000.011] Established communication link with host
[0001.041] Downloaded bct successfully 
[0001.045] No Battery Present
[0001.048] Sdram initialization is successful 
[0001.057] Downloaded DTB successfully 
[0001.061] Unsupported Platform 0x42
[0001.065] populate platform details failed with error 0x2 in DownloadBootloader func at 887 line 
[0001.073] Downloading Bootloader failed with 0x2

Where does fastboot/nvtboot look for supported platforms? If I fake a valid platform ID (like 0x177 for Jetson), it moves on, but says that the PMU Board ID is not valid.

Either we are doing something way wrong, or we have missed a step in the platform adaption.

When faking a valid board id:

[0000.000] [TegraBoot] (version UNDEF_BUILD)
[0000.004] Reset reason: power on reset
[0000.007] Processing in recovery mode
[0000.011] Established communication link with host
[0001.032] Downloaded bct successfully 
[0001.036] No Battery Present
[0001.039] Sdram initialization is successful 
[0001.048] Downloaded DTB successfully 
[0001.249] NvTbootI2cClearBus(): error code 0x00000005 Bus clear timeout
[0001.255] NvTbootI2cDeviceRead(): error code 0x00000005 I2c Open Failed
[0001.262] NvTbootI2c: Read failed for slave 0xaa, offset 0x00 with error code 0x00000005
[0001.269] Reading Board-Id-Type-2 failed
[0001.297] No Battery Present
[0001.369] Downloaded bootloader successfully 
[0001.373] CPU-bootloader entry address: 0x83d88000 
[0001.378] BoardId: 1761
[0001.380] Vpr Carveout Base=0x0f4600000 Size=0x00ba00000
[0001.385] Tsec Carveout Base=0x0f2600000 Size=0x002000000
[0001.390] Lp0 Carveout Base=0x0f25ff000 Size=0x000001000
[0001.396] Xusb Carveout Base=0x0f2300000 Size=0x000200000
[0001.401] Platform-DebugCarveout: 0
[0001.404] PMU BoardId: 0
[0001.406] ERROR: Unsupported PmuBoard 0
[0001.410] FAILURE in NvTbootConfigureCpu
[0001.413] Error is 2

The Board ID is held in the I2C EEPROM.

The easiest thing to do is to just copy the contents out of the EEPROM and copy it into your board/design.

Your board will think it is a Jetson then.

We do not have an I2C EEPROM, and the .conf file has a line you should comment out if that is the case. We have input the following:

BOARDID="0x42 0x00 0x00";

When we try to flash this it says “Unsupported Platform 0x42”, and it seems to me that message comes from nvflash, though it is printed on the uart. And, like mentioned above, if we use a valid platform id, it starts assuming things about PMU that we have noe idea about.

“We’re trying to flash our own custom board”
Just how much of the design did you change?

The logs suggest that the PMIC (PMU) is not talking over I2C.
It could be that because there is no board id, the code thinks it is another board and it trying to behave like another board and talk to a PMU that is not on the Jetson.
Look in board-ardbeg.c, there are multiple options for supported boards.

“When we try to flash this it says “Unsupported Platform 0x42”, and it seems to me that message comes from nvflash, though it is printed on the uart.”
As far as I have worked out, nvflash loads fastboot into RAM and it is fastboot that actually does the flashing, and nvflash communicates with fastboot during the flashing process.
The fastboot must be doing some check for the board id. You could try looking through the fastboot code and work out what needs modifying.

Honestly, it is just easier to add the I2C EEPROM to the design.

Thanks for the reply. Is the fastboot code available?

It does not look like it ;-(

https://developer.nvidia.com/linux-tegra-r214

Only u-boot.

Hi tasslehoff,

Have you tried flashing with the exact board id as the Jetson (e.g. BOARDID=“0x177 0x00 0x03” )?
What BCT configuration are you using?

BR,
Michael

Managed to flash using the tegra-uboot-flasher-scripts. Flashed BCT and u-boot with that. From u-boot I started ums, mounted the flash on my host pc, and just copied over the kernel and rootfs.