I was able to compile peak-linux-driver on Jetson Orin 5.10.104-tegra, and the PCAN driver works as expected.
I was also able to compile peak-linux-driver on Jetson Orin 5.10.104-rt-tegra with kernel_out built from source (as the server for r35.1 does not contain rt-header). But the PCAN driver did not work as expected, and output when sudo dmesg | grep pcan:
We (Our academic research group) need to use Jetson Orin to talk to Barrett WAM Arm via SocketCAN, to form a low latency vision control loop with the controller. Motivation:
The simplest way that we always did was to plug-in the peak-usb-can dongle with our old intel PCs with RT kernel.
With non-RT kernel on Jetson, we were able to compile and use linux driver with NETDEV. But soon we noticed some jittering motion, since the hardware is running control loop on the PC through direct socket CAN comm. (Their documentation mentioned the interrupt happened during the driver time may cause jittering.)
To note, ROS node (wrapper) was used, and jittering motion was noticed.
Specs:
Jetpack: r35.1 GA
OS: 20.04
ROS: Noetic
Platform: Jetson Orin 32Gb 12-core
Procedure I did:
I did cross-compile off the Jetson board as well
Here, I will show direct compile on the Jetson board for simplicity:
# download driver:
$ wget https://www.peak-system.com/fileadmin/media/linux/files/peak-linux-driver-8.15.2.tar.gz
# unzip:
$ tar -xzf peak-linux-driver-8.15.2.tar.gz
# define sth:
$ export kernel_out=/home/uwarl-orin/JX_Linux/kernel_out
# build driver with netdev and specified kernel:
# doesnt work: $ make -C driver NET=NETDEV_SUPPORT KERNEL_LOCATION=$kernel_out
$ make NET=NETDEV_SUPPORT KERNEL_LOCATION=$kernel_out
# install:
$ make install KERNEL_LOCATION=$kernel_out
# Reboot and test:
$ sudo dmesg | grep pcan
:warning: NETDEV support is needed for WAM
:warning: Kernel location should be the compiled kernel output with RT-kernel, the /usr/src does not contain rt-kernel with custom build
My Questions:
Is there possibly a solution to this issue?
Meanwhile, I am planning to try the CAN directly from the Jetson Orin with the RT kernel, and possibly follow-up here. If this method works, then we can ditch the pcan driver, if it is not supported.
(A minor question:) With SDK flashing tool, I only saw Desktop under the /usr/home/ directory.
With RT-Kernel, my screen appears to have no output on the display. But I was able to ssh and use with xfce through xrdp.
Just a general comment: I don’t know your particular software, but whenever there is an “Unknown symbol” it means there is a driver or feature missing. You need to find out which feature provides the symbols, and add that. Most of the time this happens when one configures by directly editing the .config file instead of using a configuration editor, but of course if you have out of tree content, then you have to manually figure that out and Kconfig editors won’t do this.