Custom TX2i carrier ECC fails on boot

I have a very simple custom carrier. I have USB0/USBSS0 connected to a peripheral, UART0 going to my PC for debug/console access, and UART1 going to another component. CHARGER_PRSNT# is grounded and VIN_PWR_BAD# is held low until I want to power the Jetson on. Then 12V and GND connected appropriately. That is it. All other pins of the 400p connector are NC.

I have a strange problem where the TX2i fails to boot if the USB peripheral is powered on first. If the USB peripheral is powered on when I try to boot the Jetson, cboot stops with the following message:

[0001.207] I> Welcome to Cboot
[0001.210] I> Cboot Version: t186-00029e71
[0001.214] I> CPU-BL Params @ 0x235800000
[0001.217] I> Dram Scrub in progress
[0001.564] E> cb_vic_scrub: VIC Scrub Failure, error 0x6, cmd = 0x1
[0001.570] E> Bug /dvs/git/dirty/git-master_linux/bootloader/partner/t18x/common/drivers/vic/tegrabl_vic.c:337 (cb_vic_scrub)

If I shut down the USB peripheral, the Jetson boots fine. I also find that if I disable ECC on the Jetson, this problem goes away. This isn’t a good solution for me, as I need ECC and I need the Jetson to be able to boot even if the peripheral is already powered on. Is there a reason that the presence of a USB device causes the ECC scrub to fail?

Full log of a failed boot:

[0000.139] C> I2C command failed
[0000.142] C> block index = (4) and rail_id = (1)
[0000.146] C> Addr: Reg = [0xe8:0x07]: 336166925
[0000.151] C> I2C command failed
[0000.154] C> block index = (5) and rail_id = (1)
[0000.158] C> Addr: Reg = [0xe8:0x07]: 336166925
[0000.342] I> Welcome to MB2(TBoot-BPMP)(version: 01.00.160913-t186-M-00.00-mobile-c368a720)
[0000.351] I> Boot-device: eMMC
[0000.358] I> sdmmc bdev is already initialized
[0000.363] I> pmic: reset reason (nverc)        : 0x40
[0000.396] I> Found 19 partitions in SDMMC_BOOT (instance 3)
[0000.416] I> Found 33 partitions in SDMMC_USER (instance 3)
[0000.422] I> MB2 check ECC error: EMC_INTSTATUS_0: 0x10
[0000.427] I> MB2 check ECC error: EMC_INTSTATUS_0: 0x0
[0000.432] I> MB2 check ECC error: EMC_INTSTATUS_0: 0x10
[0000.437] I> MB2 check ECC error: EMC_INTSTATUS_0: 0x0
[0000.442] I> OEM carveouts init scrub in progress...
[0000.518] I> MB2 check ECC error: EMC_INTSTATUS_0: 0x10
[0000.523] I> MB2 check ECC error: EMC_INTSTATUS_0: 0x0
[0000.528] I> MB2 check ECC error: EMC_INTSTATUS_0: 0x10
[0000.533] I> MB2 check ECC error: EMC_INTSTATUS_0: 0x0
[0000.538] I> Mb2 SDRAM scrub successful
[0000.542] W> No valid slot number is found in scratch register
[0000.548] W> Return default slot: _a
[0000.551] I> A/B: bin_type (16) slot 0
[0000.555] I> Loading partition bpmp-fw at 0xd7800000
[0000.559] I> Reading two headers - addr:0xd7800000 blocks:1
[0000.565] I> Addr: 0xd7800000, start-block: 58777608, num_blocks: 1
[0000.590] I> Binary(16) of size 534416 is loaded @ 0xd7800000
[0000.596] W> No valid slot number is found in scratch register
[0000.601] W> Return default slot: _a
[0000.605] I> A/B: bin_type (17) slot 0
[0000.608] I> Loading partition bpmp-fw-dtb at 0xd79f0000
[0000.613] I> Reading two headers - addr:0xd79f0000 blocks:1
[0000.619] I> Addr: 0xd79f0000, start-block: 58780024, num_blocks: 1
[0000.638] I> Binary(17) of size 75760 is loaded @ 0xd79ed600
[0000.674] I> Loading SCE-FW ...
[0000.678] W> No valid slot number is found in scratch register
[0000.683] W> Return default slot: _a
[0000.687] I> A/B: bin_type (12) slot 0
[0000.690] I> Loading partition sce-fw at 0xd7300000
[0000.695] I> Reading two headers - addr:0xd7300000 blocks:1
[0000.700] I> Addr: 0xd7300000, start-block: 58784120, num_blocks: 1
[0000.720] I> Binary(12) of size 125632 is loaded @ 0xd7300000
[0000.725] I> Init SCE
[0000.728] I> Loading APE-FW ...
[0000.731] W> No valid slot number is found in scratch register
[0000.736] W> Return default slot: _a
[0000.740] I> A/B: bin_type (11) slot 0
[0000.743] I> Loading partition adsp-fw at 0xd7400000
[0000.748] I> Reading two headers - addr:0xd7400000 blocks:1
[0000.754] I> Addr: 0xd7400000, start-block: 58761224, num_blocks: 1
[0000.773] I> Binary(11) of size 77216 is loaded @ 0xd7400000
[0000.779] I> Copy BTCM section
[0000.782] W> No valid slot number is found in scratch register
[0000.787] W> Return default slot: _a
[0000.791] I> A/B: bin_type (13) slot 0
[0000.794] I> Loading partition cpu-bootloader at 0x96000000
[0000.800] I> Reading two headers - addr:0x96000000 blocks:1
[0000.805] I> Addr: 0x96000000, start-block: 58740744, num_blocks: 1
[0000.827] I> Binary(13) of size 308800 is loaded @ 0x96000000
[0000.832] W> No valid slot number is found in scratch register
[0000.838] W> Return default slot: _a
[0000.841] I> A/B: bin_type (20) slot 0
[0000.845] I> Loading partition bootloader-dtb at 0x85205400
[0000.851] I> Reading two headers - addr:0x85205400 blocks:1
[0000.856] I> Addr: 0x85205400, start-block: 58742792, num_blocks: 1
[0000.878] I> Binary(20) of size 366208 is loaded @ 0x85205400
[0000.884] W> No valid slot number is found in scratch register
[0000.890] W> Return default slot: _a
[0000.893] I> A/B: bin_type (14) slot 0
[0000.897] I> Loading partition secure-os at 0x85305600
[0000.902] I> Reading two headers - addr:0x85305600 blocks:1
[0000.907] I> Addr: 0x85305600, start-block: 58744840, num_blocks: 1
[0000.930] I> Binary(14) of size 402864 is loaded @ 0x85305600
[0000.938] I> TOS boot-params @ 0x85000000
[0000.942] I> TOS params prepared
[0000.945] I> Loading EKS ...
[0000.947] I> A/B: bin_type (15) slot 0
[0000.951] I> Loading partition eks at 0x85905800
[0000.955] I> Reading two headers - addr:0x85905800 blocks:1
[0000.961] I> Addr: 0x85905800, start-block: 58757128, num_blocks: 1
[0000.980] I> Binary(15) of size 1040 is loaded @ 0x85905800
[0000.985] I> EKB detected (length: 0x400) @ 0x85905800
[0000.990] I> Copied encrypted keys
[0000.994] I> boot profiler @ 0x235844000
[0000.998] I> boot profiler for TOS @ 0x235844000
[0001.003] I> Unhalting SCE
[0001.005] I> Primary Memory Start:80000000 Size:70000000
[0001.011] I> Extended Memory Start:f0110000 Size:1456f0000
[0001.017] I> MB2(TBoot-BPMP) done

NOTICE:  BL31: v1.3(release):b5eeb33f7
NOTICE:  BL31: Built : 12:15:17, Jul 26 2021
ipc-unittest-main: 1519: Welcome to IPC unittest!!!
ipc-unittest-main: 1531: waiting forever
ipc-unittest-srv: 329: Init unittest services!!!
hwkey-agent: 41: hwkey-agent is running!!
hwkey-agent: 315: key_mgnt_processing .......
hwkey-agent: 223: Setting EKB key 0 to slot 14
hwkey-agent: 178: Init hweky-agent services!!
luks-srv: 40: luks-srv is running!!
luks-srv: 157: Init luks-srv IPC services!!
platform_bootstrap_epilog: trusty bootstrap complete
[0001.207] I> Welcome to Cboot
[0001.210] I> Cboot Version: t186-00029e71
[0001.214] I> CPU-BL Params @ 0x235800000
[0001.217] I> Dram Scrub in progress
[0001.564] E> cb_vic_scrub: VIC Scrub Failure, error 0x6, cmd = 0x1
[0001.570] E> Bug /dvs/git/dirty/git-master_linux/bootloader/partner/t18x/common/drivers/vic/tegrabl_vic.c:337 (cb_vic_scrub)

Ok figured this one out. UART0_RTS and UART1_TX serve as pin strap for an internal memory configuration. The solution was to make sure these signals were not biased while the TX2i booted.

1 Like

Thanks for the update.

This topic was automatically closed 14 days after the last reply. New replies are no longer allowed.