How to integrate CAM LINK PIXCI m2280 frame grabber card to Jetson AGX Xavier Industrial

Hi,

I have some basic questions to start off regarding my integration of Framegrabber camera link card to my Jetson AGX Industrial Xavier device on my customized carrier board.
We are fixing this card to our mPCIe slot and it is detecting when we give “lspci” command.

My questions are:

  1. What are the next steps to enable/add the drivers for this card in my kernel modules?
  2. Should I modify my existing dtsi files by adding a new node to enable to card?

Please point my to the correct steps to be followed. Thanks.

Suppose you need implement the driver like sample v4l2-pci-skeleton.c

https://www.kernel.org/doc/html/v4.9/media/kapi/v4l2-intro.html

1 Like

Thanks for the response.
We have mailed the vendor for the driver packages for our Frame Grabber camlink card. My understanding was third party driver are provided for this card from the vendor and we need only install and or make part of our kernel/device tree ( DTB) package.

I have below queries, please answer them for me to understand and how to implement this better:

  1. I thought the drivers for this card already exist and provided by the vendor himself? yes or no
  2. My understanding was that, we need to just add a device tree node for this card in the camera related dtsi file and the card should work straight away? yes or no

Thanks

  1. I can’t tell. Need vendor to confirm it.
  2. Depend on driver. If driver need configure from device tree and yes.
1 Like

Thanks for the response.

Got response from the vendor.
he has provided below steps from the below link:

PIXCI® Imaging Software and Drivers Installation: nVidia Xavier (ARM Cortex-A57) (epixinc.com)

  1. Install PIXCI® driver. One or more precompiled PIXCI® drivers are provided with XCAP. If one of these drivers match the current kernel, use XCAP’s:

    PIXCI®
    PIXCI® Open/Close
    Close (if open)
    Driver Assistant
    Install PIXCI® Driver
    Install Precompiled Driver
    Apply
    Alternately, the PIXCI® driver can be compiled so as to match the current kernel. Use XCAP’s:

    PIXCI®
    PIXCI® Open/Close
    Close (if open)
    Driver Assistant
    Install PIXCI® Driver
    Compile & Install Driver
    Apply

Now, My query is:

After the installation is done, how to package this frame grabber driver as part of my kernel image/DTB build which I will be flashing on to the other boards, so that the frame grabber should work automatically aftet the kernel image flash?

Please provide the specific steps to follow. Thanks.

You can backup the system that install all the necessary driver and backup to clone to another device.

Thanks for the info.

After taking clone backup as system image file, how to deploy/flash this image file on to other boards? That link explains the steps how to take the clone back up from the jetson device.

I was using flash.sh command to flash the kernel/DTB file usually. Are there any special steps to flash this system image file, taken as clone backup.

Thanks.

For AGX Xavier could be below command.

sudo ./flash.sh -r -k APP -G clone.img jetson-agx-xavier-devkit mmcblk0p1
1 Like

you mean this is the command for taking only the backup of jetson device ?? and there is a another step to flash the cloned image to another target board?

Because I see there are 3 different steps in the below link which says
" To clone a Jetson device and flash "

https://docs.nvidia.com/jetson/archives/r35.4.1/DeveloperGuide/text/SD/FlashingSupport.html#to-clone-a-jetson-device-and-flash

In the above link, where should the first step be executed. Is it on Host PC or target PC?
Please confirm

Connect the Xavier that all driver installed for step 1 and 2
And connect the device need to flash and run the step 3.

Step 1 and 2 to backup and step 3 restore the system image.

Thanks for the information.

Step 1 command is as shown below:

just for my complete/through understanding, I am asking this question.
I thought flash command was used basically to flash the image from host PC to the target jetson device, but as per this below command, it means the other way round.
We are copying( cloning) the image from the jetson device to the host pc. please confirm, if my understanding is correct. Thanks.

Copy system.img from the file system partition you want to flash from. Enter the command:

$ sudo ./flash.sh -r -k APP -G mmcblk0p1

All of these commands are on host.

1 Like

I got the XCAP Frame Grabber Image processing tool installed on my Jetson device.
The same tool provided option to install the PIXCI@Frame grabber drivers also but the driver installation failed. As my kernel-tegra version is 5.10.120.-rt70-tegra where as the tool provide lower version of kernel version.

Can we build there driver source files on my REALTIME kernel and build a image and flash it.

If Yes, Please let me know the procedure for the same. Thanks.

Suppose you can build the driver if you have the source.
Below is document for kernel customized.

https://docs.nvidia.com/jetson/archives/r35.4.1/DeveloperGuide/text/SD/Kernel/KernelCustomization.html

1 Like

Thanks for the updates.
I am facing new issue now when trying to build my third party Camlink framegrabber driver source file on my target kernel. The make file used for compiling framegrabber driver is searching for a ‘build’ folder inside the folder “/rootfs/lib/modules/5.10.120-rt70-tegra”
and hence is throwing error.

I see that the build and source folder are broken on my target PC, where as they are present on my host PC as show below:

My question is

  1. Why these “build” and “source” folders are not getting copied to my target PC after flashing?
  2. Should we follow the below Kernel Real time build process during my normal build process so that all folders are copied to target PC after flash

https://docs.nvidia.com/jetson/archives/r35.4.1/DeveloperGuide/text/SD/Kernel/KernelCustomization.html#to-build-the-real-time-kernel

Please confirm.

Suppose you need to build it on AGX Xavier.

https://docs.nvidia.com/jetson/archives/r35.4.1/DeveloperGuide/text/SD/Kernel/KernelCustomization.html#preparing-to-build-external-kernel-modules

Should we follow these steps on the target PC
Or the Host PC??

As I am facing some issues to build the frame grabber driver on the target PC due to broken link of build folder on the target PC,

I am planning to copy the driver files on the host PC and build there with CROSS Compilation.
Is it fine??

Suppose the document tell both build on Jetson(target) or none Jetson(host) system.

I tried building the driver files on the host PC using the steps provided under the section :

https://docs.nvidia.com/jetson/archives/r35.4.1/DeveloperGuide/text/SD/Kernel/KernelCustomization.html#to-build-external-kernel-modules

, but I am getting some ld and other errors as attached in the log file. Please let me know, what might be the issues. Thanks.

root@trident-B660M-AORUS-PRO-AX-DDR4:/home/trident/Downloads/r35_4_1/Linux_for_Tegra/source/public/kernel/kernel-5.10/drivers/xcap/drivers/aarch64/src_5.10.104-tegra# ls
Makefile modules.order Module.symvers pixci_aarch64.ko pixcilnx_aarch64_5.10.104-tegra.a pixci.mod pixcipub.c pixcipub.h
root@trident-B660M-AORUS-PRO-AX-DDR4:/home/trident/Downloads/r35_4_1/Linux_for_Tegra/source/public/kernel/kernel-5.10/drivers/xcap/drivers/aarch64/src_5.10.104-tegra# make ARCH=arm64 -C /home/trident/Downloads/r35_4_1/Linux_for_Tegra/source/public/build_13dec2/ M=$PWD
make: Entering directory ‘/home/trident/Downloads/r35_4_1/Linux_for_Tegra/source/public/build_13dec2’
arch/arm64/Makefile:25: ld does not support --fix-cortex-a53-843419; kernel may be susceptible to erratum

Ext_driver_build_error.txt (3.4 KB)

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