Using Nvidia AGX Orin GPIO pins to recieve a PPS signal

Hello,
I am currently trying to configure an AGX Orin to receive a PPS signal from GPS. I have found lots of topics asking about specific errors, but I am very new to this subject and am in need of a more ‘high level’ overview of this process. Any help would be much appreciated. Thanks!

Hi,

Two things for you to do:

  1. Enable PPS support in kernel config.
  2. Set the pin you want to use for PPS in device tree.

Similar to what this guy did:

Also, if you need GUI for your work, remember to re-build display drivers when you re-build the kernel image.

Thanks! Is there any information on which specific file to change to enable the PPS on?

Did you ever read the topic I posted earlier?
Or you don’t know how to work with device tree and kernel config?

Apologies, I should have been much more specific in the question.
I read the topic you posted, but that topic deals with working with a Xavier and an older version of Jetpack. I was just curious what the file would be for the Orin. The only information in the topic on that is ‘t234’.
I am not familiar with rebuilding the kernel with nvidia devices, but am planning to follow the guide that is references in the above posted topic

My Jetpack version installed is 5.1.2

T234 means Orin series. If you read it, then you will know that guy used Xavier, but he mixed Xavier (T194) and Orin (T234), and that’s why I said you should follow him.
/Linux_for_Tegra/sources/hardware/nvidia/soc/t23x/kernel-dts/tegra234-soc/tegra234-soc-base.dtsi.

Again, yes I read the topic. And I understand what the t234 means, however the file he is accessing(the same one you added but swapped T194 for T234) does not exist in my nvidia_sdk/JetPack_5.1.2_Linux_JETSON_AGX_ORIN_TARGETS/Linux_for_Tegra directory. I have a directory that says “source” but not “sources”.

It’s a typo though.
I checked again, and it should be Linux_for_Tegra/source/public/hardware/nvidia/soc/t23x/kernel-dts/tegra234-soc/tegra234-soc-base.dtsi.

Unfortunately its not there. My path is /nvidia/nvidia_sdk/JetPack_5.1_Linux_JETSON_AGX_ORIN_TARGETS/Linux_for_Tegra/source but the only file in there is a shell script “nv_src_build.sh”, which when ran doesn’t help the issue. I even rolled back the Jetpack version to 5.1 and reflashed to be on the same version as the poster in the topic you referenced

My other main note is that I am using these file(s) with the --extra-config flag on the sdkmanager when I flash the hardware. The orin is bought from forecr

Dude, of course you need to download the kernel source code, or they won’t be there…
https://developer.nvidia.com/downloads/embedded/l4t/r35_release_v4.1/sources/public_sources.tbz2

Kernel images are the same across different custom boards.
For device tree, ask the vendor how to modify it.

Hi @esmit502,

You can access the kernel source files from here (for JetPack-5.1.2):

You can find the dtsi file as @DaveYYY said, it located in forecr_xavier_kernel/hardware/nvidia/soc/t23x/kernel-dts/tegra234-soc/tegra234-soc-base.dtsi

1 Like

Thank you! This helps immensely. I will rebuild with this kernel.
As another question, I am looking at editing the .dtsi file, and inserting something similar to this:

pps: pps_gpio {
	compatible = "pps-gpio";
	gpios = <&tegra_main_gpio 206 1>;
	assert-falling-edge;
	status = "okay";
};

My main question is in the selection of the pin I will use to receive PPS signal. Most other tutorials are using the standard GPIO pins, but the Forecr model that I have uses an IO port as can be seen here. What adjustments, if any, should I make so that I can correctly use on of the pins on this carrier board to receive the PPS signal. Is it any more complicated than just using a different pin number in the device tree file? Thanks!

This has to be answered by a forecr guy.
They should provide some documents about the hardware layout of their boards, so you know the correct pin numbering.

Yes! I had replied to the message from @mehmetdeniz in hopes that they would have the answer since they deal with Forecr.