RS485 Not Working After Upgrading to Jetpack 36.4 on Jetson AGX Orin with jetpack 6.1

Description:
I have been working with the Jetson AGX Orin devkit, specifically using /dev/ttyTHS3 for RS485 communication. My RS485 code was working perfectly fine with Jetpack 6.0 and release 36.3. However, after upgrading to Jetpack release 36.4 and Jetpack 6.1, the code stopped functioning, and I am now encountering the following kernel error logs:

[ 116.735991] arm-smmu 12000000.iommu: Unhandled context fault: fsr=0x402, iova=0x8083f000, fsynr=0x4f0011, cbfrsynra=0xc04, cb=0
[ 116.738935] tegra-mc 2c00000.memory-controller: unknown: secure write @0x00000003ffffff00: VPR violation ((null))
[ 116.738950] tegra-mc 2c00000.memory-controller: unknown: secure write @0x00000003ffffff00: Route Sanity error ((null))

[ 118.768955] arm-smmu 12000000.iommu: Unhandled context fault: fsr=0x402, iova=0x8083f000, fsynr=0x4f0011, cbfrsynra=0xc04, cb=0
[ 118.771886] tegra-mc 2c00000.memory-controller: unknown: secure write @0x00000003ffffff00: VPR violation ((null))
[ 118.771898] tegra-mc 2c00000.memory-controller: unknown: secure write @0x00000003ffffff00: Route Sanity error ((null))

I have not made any hardware changes, and the problem occurred only after the upgrade to 36.4. Could anyone please help me understand what might have caused this issue and provide any guidance on how to resolve it?

System Details:

  • Jetson AGX Orin Devkit

  • Jetpack Version: 36.4 (upgraded from 36.3)

  • UART Port: /dev/ttyTHS3 with RS485

  • RS485 Code was functioning on release 36.3 without issues

Thank you for your support.

Hi flora.vijay,

How did you update from R36.3 to R36.4?

Please share the full dmesg and device tree in these 2 releases.
You can run the following command to extract the device tree configuration on your board.

$ sudo dtc -I fs -O dts -o extracted_proc.dts /proc/device-tree
  • Update Process:

We did not update the system via command. Instead, we built the entire SDK from scratch and flashed the new image for R36.4.

  • dmesg and Device Tree Files:

The full dmesg logs and device tree files for both releases (R36.3 and R36.4) are attached below for your reference.

  • Device Tree Extraction:

As per your request, the output of the following command is included in the attachments for both R36.3 and R36.4
dmesg_output_364.txt (61.6 KB)
extracted_proc_364.zip (50.6 KB)
dmesg_output_36.3.txt (89.2 KB)
extracted_proc_36.3.zip (49.8 KB)

Thanks for sharing the info.
I’ve checked your dmesg and device tree.
It seems /dev/ttyTHS3(serial@3140000) use different mode in serial.

Please remove the following lines in device tree of R36.4.0 to check if it could help in your case.

		serial@3140000 {
			clock-names = "serial";
			resets = <0x03 0x68>;
			interrupts = <0x00 0x74 0x04>;
			clocks = <0x03 0x9f>;
-			dma-names = "rx\0tx";
			compatible = "nvidia,tegra194-hsuart";
			status = "okay";
			reg = <0x00 0x3140000 0x00 0x10000>;
			phandle = <0x229>;
-			dmas = <0xee 0x14 0xee 0x14>;
			reset-names = "serial";
		};

I’ve already applied the changes in the ./source/hardware/nvidia/t23x/nv-public/tegra234.dtsi file and successfully flashed the board again. However, after extracting the updated DTB file using the command you provided earlier, I still see the same configuration for serial@3140000.
Could you please provide:

The exact DTS/DTSI file where the changes should be made? It seems that tegra234.dtsi might not be the only or correct file for modifying the serial@3140000 node.

Instructions to replace the DTB file to ensure the changes are correctly applied after flashing. If there are any specific steps or commands I should follow to ensure the changes are reflected, I would appreciate your guidance on that.

Please check if the FDT has been specified in your /boot/extlinux/extlinux.conf.

If so, you can simply decompile /boot/dtb/kernel_XXXX.dtb on your board and remove the lines I shared and assemble it back to DTB to verify.

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