...
Code Block |
---|
language | text |
---|
title | TestPlanNOV29.txt |
---|
collapse | true |
---|
|
CBXFEL Digitizer Test Plan
Chris Ford <caf@slac.stanford.edu>
Nov 29, 2022
------- Phase 1 --(complete)---------------------------------------
Receive Teledyne documentation and software
Receive charge code
Work with Thuy to install digitizer and timing hardware in 2U crate
- Building 034
- Remote access
- root or sudo access
Verify that card is recognized by Linux using lspci
(Note: we did this with 1U cpu and CentOS 7)
------- Phase 2 --(in progresscomplete)------------------------------------
Verify basic compatibility with SLAC's Linux environment
- obtain GPL'd kernel module (complete)module
- build kernel module in SLAC LinuxRT environment (in progress)
- Teledyne kernel module: insmod
- Teledyne library: build and run ADQAPI_simple_example.c
Verify reading a DC voltage
------- Phase 3 ---------------------------------------------------
Connect trigger to SLAC EVR (requires 2U cpu)
Verify synchronous operation at 1 Hz
Verify synchronous operation at 120 Hz
------- Open Issues -----------------------------------------------
1. Missing compatible power cable for 2U 8201
2. Teledyne library depends on libusb even though ADQ14 is pci |
...
Code Block |
---|
language | text |
---|
title | Available Teledyne Packages |
---|
|
# ls digitizer/ADQ_SDK_linux_r65383/packages/
CentOS_7/ Fedora_34/ SLE_15/
CentOS_8/ many/ Ubuntu_16.04/
CentOS_8_Stream/ openSUSE_Leap_15.2/ Ubuntu_18.04/
Debian_10/ openSUSE_Leap_42.3/ Ubuntu_19.04/
Debian_11/ e RHEL_7/ Ubuntu_20.04/
Debian_9.0/ ScientificLinux_7/ Ubuntu_21.04/
Fedora_32/ SLE_12/ |
LinuxRT Notes
Server Details
Advantech 8201
Kernel Module
Code Block |
---|
language | text |
---|
title | Thuy Vu writes: | Extract kernel module source from Teledyne rpm |
---|
|
$ rpm2cpio spd-adq-pci-dkms-1.21-1.noarch.rpm | cpio -idmv
./usr/src/spd-adq-pci-1.21/dkms.conf
./usr/src/spd-adq-pci-1.21/src/Makefile
./usr/src/spd-adq-pci-1.21/src/README
./usr/src/spd-adq-pci-1.21/src/README_internal.md
./usr/src/spd-adq-pci-1.21/src/spd_adq_pci.c
./usr/src/spd-adq-pci-1.21/src/spd_adq_pci_ioctl.h
116 blocks |
Server Details
Advantech 8201
Code Block |
---|
language | text |
---|
title | Thuy Vu writes: |
---|
|
The Digitizer card is the x16 PCIeThe Digitizer card is the x16 PCIe card, it can’t be used in the 2U 8200 that Shawn have upstairs.
We need to use it in 1U 8101 or 2U 8201. |
...
Code Block |
---|
language | text |
---|
title | Kernel Module on LinuxRT |
---|
collapse | true |
---|
|
root@cpu-b34-sp02]$ ls
adq.ko
[ root@cpu-b34-sp02]$ ls /dev > dev_before_insmod.txt
[ root@cpu-b34-sp02]$ dmesg > dmesg_before_insmod.txt
[ root@cpu-b34-sp02]$ insmod adq.ko
[102834.973910] adq: loading out-of-tree module taints kernel.
[102834.979952] adq: SPD ADQ PCI Device driver v1.21 loaded.
[102834.985819] spd_adq_pci 0000:da:00.0: Found Signal Processing Devices ADQ14, device PCIe/PXIe/uTCA bus 218 slot 0 function 0
[ root@cpu-b34-sp02]$ ls /dev > dev_after_insmod.txt
[ root@cpu-b34-sp02]$ dmesg > dmesg_after_insmod.txt
[ root@cpu-b34-sp02]$
[ root@cpu-b34-sp02]$ ls -l
total 229
-rw------- 1 laci lcls 32048 Nov 30 16:42 adq.ko
-rw-r--r-- 1 root root 3857 Nov 30 16:45 dev_after_insmod.txt
-rw-r--r-- 1 root root 3840 Nov 30 16:44 dev_before_insmod.txt
-rw-r--r-- 1 root root 95069 Nov 30 16:46 dmesg_after_insmod.txt
-rw-r--r-- 1 root root 94816 Nov 30 16:45 dmesg_before_insmod.txt
[ root@cpu-b34-sp02]$ diff dev_before_insmod.txt dev_after_insmod.txt
--- dev_before_insmod.txt
+++ dev_after_insmod.txt
@@ -1,3 +1,4 @@
+adq_pcie_218_0_0
bus
console
cpu
[ root@cpu-b34-sp02]$ diff dmesg_before_insmod.txt dmesg_after_insmod.txt
--- dmesg_before_insmod.txt
+++ dmesg_after_insmod.txt
@@ -1347,3 +1347,6 @@
[ 23.257900] random: dropbear: uninitialized urandom read (32 bytes read)
[ 24.553478] ipmi device interface
[ 24.768942] IPv6: ADDRCONF(NETDEV_UP): eth5: link is not ready
+[102834.973910] adq: loading out-of-tree module taints kernel.
+[102834.979952] adq: SPD ADQ PCI Device driver v1.21 loaded.
+[102834.985819] spd_adq_pci 0000:da:00.0: Found Signal Processing Devices ADQ14, device PCIe/PXIe/uTCA bus 218 slot 0 function 0
[ root@cpu-b34-sp02]$ |
Demo: build Teledyne kernel module in LinuxRT sandbox directory
loading out-of-tree module taints kernel.
+[102834.979952] adq: SPD ADQ PCI Device driver v1.21 loaded.
+[102834.985819] spd_adq_pci 0000:da:00.0: Found Signal Processing Devices ADQ14, device PCIe/PXIe/uTCA bus 218 slot 0 function 0
[ root@cpu-b34-sp02]$ |
Teledyne Library depends on libusb
See line 20 of libadq.la (below).
Code Block |
---|
language | text |
---|
title | libadq.la |
---|
linenumbers | true |
---|
collapse | true |
---|
|
# libadq.la - a libtool library file
# Generated by libtool (GNU libtool) 2.4.6 Debian-2.4.6-2
#
# Please DO NOT delete this file!
# It is necessary for linking the library.
# The name that we can dlopen(3).
dlname='libadq.so.0'
# Names of this library.
library_names='libadq.so.0.0.65383 libadq.so.0 libadq.so'
# The name of the static archive.
old_library='libadq.a'
# Linker flags that cannot go in dependency_libs.
inherited_linker_flags=''
# Libraries that this one depends upon.
dependency_libs=' -lusb-1.0 -ludev -lrt -lpthread'
# Names of additional weak libraries provided by this library
weak_library_names=''
# Version information for libadq.
current=0
age=0
revision=65383
# Is this an already installed library?
installed=yes
# Should we warn about portability when linking against -modules?
shouldnotlink=no
# Files to dlopen/dlpreopen
dlopen=''
dlpreopen=''
# Directory that this library needs to be installed in:
libdir='/usr/lib' |
Installed Teledyne library
Code Block |
---|
language | text |
---|
title | /afs/slac/g/lcls/package/teledyne |
---|
collapse | true |
---|
|
/afs/slac/g/lcls/package/teledyne/libadq0-0.65383/:
|
Code Block |
---|
language | text |
---|
title | lcls-dev3 demo |
---|
collapse | true |
---|
|
lcls-dev3$ pwd
/u/ey/caf/digitizer/sandbox2/linuxKernel_Modules/adqDriver/R1.29.0/build/buildroot-2019.08-x86_6
lcls-dev3$ make clean
rm -rf *.o *~ core .depend .*.cmd *.ko *.mod.c .tmp_versions *.symvers *.order *.c *.h module_* original.*
lcls-dev3$ ls
Makefile
lcls-dev3$ make
### copy the sources to make a directory for building
cp -r ../../src/* .
make compile
make[1]: Entering directory `/afs/slac.stanford.edu/g/controls/development/users/caf/digitizer/sandbox2/linuxKernel_Modules/adqDriver/R1.29.0/build/buildroot-2019.08-x86_64'
make ARCH=x86_64 CROSS_COMPILE=/afs/slac/package/linuxRT/buildroot-2019.08/host/linux-x86_64/x86_64/usr/bin/x86_64-buildroot-linux-gnu- -C /afs/slac/package/linuxRT/buildroot-2019.08/buildroot-2019.08-x86_64/output/build/linux-4.14.139 M=/u/ey/caf/digitizer/sandbox2/linuxKernel_Modules/adqDriver/R1.29.0/build/buildroot-2019.08-x86_64 modules
make[2]: Entering directory `/afs/slac.stanford.edu/package/linuxRT/vol7/buildroot-2019.08/buildroot-2019.08-x86_64/output/build/linux-4.14.139'
CC [M] /u/ey/caf/digitizer/sandbox2/linuxKernel_Modules/adqDriver/R1.29.0/build/buildroot-2019.08-x86_64/spd_adq_pci.o
LD [M] /u/ey/caf/digitizer/sandbox2/linuxKernel_Modules/adqDriver/R1.29.0/build/buildroot-2019.08-x86_64/adq.o
Building modules, stage 2.
MODPOST 1 modules
CC /u/ey/caf/digitizer/sandbox2/linuxKernel_Modules/adqDriver/R1.29.0/build/buildroot-2019.08-x86_64/adq.mod.o
LD [M] /u/ey/caf/digitizer/sandbox2/linuxKernel_Modules/adqDriver/R1.29.0/build/buildroot-2019.08-x86_64/adq.ko
make[2]: Leaving directory `
/afs/slac.stanford.edu/g/lcls/package/linuxRTteledyne/vol7/buildrootlibadq0-20190.0865383/buildroot-2019.08-x86_64/output/build/linux-4.14.139'
make[1]: Leaving directory `:
bin include lib
/afs/slac.stanford.edu/g/controlslcls/developmentpackage/users/caf/digitizer/sandbox2/linuxKernel_Modules/adqDriver/R1.29.0/build/teledyne/libadq0-0.65383/buildroot-2019.08-x86_64'
lcls-dev3$ make install
mkdir -p ../../bin:
/afs/slac/g/lcls/package/teledyne/libadq0-0.65383/buildroot-2019.08-x86_64/include/
cp spd_adq_pci_ioctl.h ../..:
ADQAPI.h
/afs/slac/g/lcls/package/teledyne/libadq0-0.65383/buildroot-2019.08-x86_64/include/.
cp *.ko ../../buildroot-2019.08-x86_64/.
lcls-dev3$
lcls-dev3$ ls -l ../../buildroot-2019.08-x86_64/
total 34
-rw-rw-r-- 1 caf ey 32048 Dec 2 13:26 adq.ko
drwxrwxr-x 2 caf ey 2048 Dec 2 13:26 include lcls-dev3$ lcls-dev3$ ls -l ../../buildroot-2019.08-x86_64/include
total 5
-rw-rw-r-- 1 caf ey 4466 Dec 2 13:26 spd_adq_pci_ioctl.h lcls-dev3$ lib:
libadq.a libadq.la libadq.so libadq.so.0 libadq.so.0.0.65383 |
libusb Package
Code Block |
---|
language | text |
---|
title | File list of package libusb-1.0-0 in bionic of architecture amd64 |
---|
|
/lib/x86_64-linux-gnu/libusb-1.0.so.0
/lib/x86_64-linux-gnu/libusb-1.0.so.0.1.0
/usr/share/doc/libusb-1.0-0/README
/usr/share/doc/libusb-1.0-0/changelog.Debian.gz
/usr/share/doc/libusb-1.0-0/copyright |