Please provide the following info (tick the boxes after creating this topic):
Software Version
DRIVE OS 6.0.8.1
DRIVE OS 6.0.6
DRIVE OS 6.0.5
DRIVE OS 6.0.4 (rev. 1)
DRIVE OS 6.0.4 SDK
other
Target Operating System
Linux
QNX
other
Hardware Platform
DRIVE AGX Orin Developer Kit (940-63710-0010-300)
DRIVE AGX Orin Developer Kit (940-63710-0010-200)
DRIVE AGX Orin Developer Kit (940-63710-0010-100)
DRIVE AGX Orin Developer Kit (940-63710-0010-D00)
DRIVE AGX Orin Developer Kit (940-63710-0010-C00)
DRIVE AGX Orin Developer Kit (not sure its number)
other
SDK Manager Version
1.9.3.10904
other
Host Machine Version
native Ubuntu Linux 20.04 Host installed with SDK Manager
native Ubuntu Linux 20.04 Host installed with DRIVE OS Docker Containers
native Ubuntu Linux 18.04 Host installed with DRIVE OS Docker Containers
other
Throughout the Drive OS SDK Dev Guide there are references to various header files like for example the IOCTL structure definitions (from this page TSN API)
Data structure heater files are in the drive-linux/include folder.
and then within various forum Topics, moderators post C/C++ snippets like the NVPPS IOCTL functions posted here in this Topic.
I’ve found the original source header files in the correct locations when browsing the SDK source code within the DRIVE OS Docker container before I flash to the Orin, but I am confused on how I am supposed to include these header files within say a cmake project that I am trying to build & run on the already flashed Orin.
For example, I have this program I am trying to run that uses IOCTL to check NVPPS but I don’t know what header files or shared libs I am supposed to be including in my project.
Any help would be greatly appreciated as I am pretty confused and I feel like having to build this cmake project within the Drive OS Docker and then reflashing the Orin everytime I build, just to run the program on the Orin, is not the intended method.
#include <iostream>
#include <fcntl.h>
#include <unistd.h>
#include <sys/ioctl.h>
#include <cstdio>
static int64_t tsc_2_ptp_delta(int64_t tsc, int64_t ptp)
{
static int64_t tsc_prev = 0;
static int64_t ptp_prev = 0;
int64_t ptp_delta, tsc_delta;
ptp_delta = ptp - ptp_prev;
tsc_delta = tsc - tsc_prev;
/* remember the previous value */
tsc_prev = tsc;
ptp_prev = ptp;
return tsc_delta - ptp_delta;
}
int main() {
std::cout << "Hello, C++ Project!" << std::endl;
int fd = open("/dev/nvpps0", O_RDWR);
if (fd < 0) {
fprintf(stderr, "Failed to open nvpps file descriptor");
return 1;
}
if (ioctl(fd, NVPPS_GETEVENT, &ts) != 0) {
fprintf(stderr, "ioctl failed for NVPPS_GETEVENT err %s\n");
return 1;
} else {
fprintf(stdout, "evt, %d, tsc, %llu, phc, %llu, sec_phc %llu, delta, %lld, latency %llu, ptp_offset %lld, tsc_res_ns, %llu, evt_mode, %d, tsc_mode, %d\n", ts.evt_nb, ts.tsc, ts.ptp, ts.secondary_ptp, tsc_2_ptp_delta((int64_t)ts.tsc, (int64_t)ts.ptp), ts.irq_latency, (int64_t)(ts.secondary_ptp - ts.ptp), ts.tsc_res_ns, ts.evt_mode, ts.tsc_mode);
}
close(fd); // close out dev port descriptor
return 0;
}