Xavier NX random and period UART delays. Question on enabling UART on the CBB


I’m using UART0 (/dev/ttyTHS0) on the Xavier NX. I have a userspace control class that constantly polls the Serial RX buffer, and runs a callback if the buffer is of non-zero size.

Nominally, this code is very quick, often taking less than 50 ms. However, under unknown and inconsistent conditions, this code is very slow, one iteration taking sometimes up to 10 seconds.

There are some things I’ve noticed about this phenomenon. There has never been an instance where this bug persists longer than one iteration of the loop. The following iteration then “cleans up” the bottleneck by performing the callback on all the bytes that were buffered due to this weird hangup. Additionally, this bottleneck does not always repeat itself, but I’ve noticed that it seems to happen in 5 second intervals when it does.

Attach is an image of a profile I did showing the behaviours I described; one being the inconsistent hangup, the other being the occassional 5 second periodic repeat.

I also have a hunch what this might be too, but can’t confirm it. UART0 I believe is tied directly to CPU core 0, which is the main interrupt servicing core. In the Xavier NX documentation, I see there is another UART nested in what’s called the CBB, but I imagine that’s a hardware interrupt fabric accessible by any core. My primary thought is a hardware interrupt kicks my receive callback off CORE0 sometimes, and no other core can take over that load because only CORE0 can access that UART. If I can figure out what the pins are for the UART embedded in the CBB, as well as how to enable it (if not already enabled), I could use that to test my theory.

All I want to gain from this topic is a fix to the problem. Whether you know why I might see sparadic delays in my callback, or you know how to use the UART embedded in the CBB, either would be greatly appreciated.

Hi tyler.aubin1,

Are you using the devkit or custom board for Xavier NX?

Could you help to provide which documentation includes more info about CBB?

Hey Kevin,

I am using what I believe is known as the “eval kit”.


As for the documentation, it’s specified in the Xavier TRM. This should be a link to the download.

What’s the current Jetpack version in use?

Could you help to provide the full serial console log?

and also the result of the following command on your board:

$cat /sys/kernel/debug/pinctrl/2430000.pinmux/pinconf-groups |grep uart

Hey Kevin,

Can you elaborate on what you mean by full serial console log? My intuition tells me that implies using UART0 with nvgetty, which I’ve disabled. Instead, this is a messaging protocol I wrote, and I’m communicating with another board of mine.

As for the version, I’m not with my board right now, I will send another reply when I can confirm the version. Sorry for the delay.

Yes, it is. I just want to check what messages still output from serial console from power on or it disabled completely?

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