====== CentOS 7 with GUI Innovative Development ====== ===== Takeaways ===== * Looks like there is a **pretrigger** now, so we should be able to capture the pulse exactly if we go triggered mode * The **_Mb** includes are the Malibu library (ahhh) ===== Core System ===== - Downloaded CentOS 8 DVD - Wrote to a USB stick with time sudo if=IMAGE of=/dev/sdX - Waited about 30 minutes - Booted the stick and installed with a custom layout using **ext4** partitions on Dev2 64GB CFAST --- //[[david@lattice.net|David Lloyd Rabine]] 2020/01/28 21:36// ===== Packages Installed ===== Copying from the centos install, installed the packages sudo yum -y install epel-release sudo yum repolist sudo yum groupinstall 'Development Tools' sudo yum install -y ftp sudo yum install -y wget sudo yum install -y htop # epel sudo yum install -y http://li.nux.ro/download/nux/dextop/el7/x86_64/nux-dextop-release-0-1.el7.nux.noarch.rpm sudo yum install -y exfat-utils fuse-exfat sudo yum install -y cmake sudo yum install -y ftp://ftp.pbone.net/mirror/centos.karan.org/el5/extras/testing/i386/RPMS/jed-0.99.18-5.el5.kb.i386.rpm sudo yum install -y pigz sudo yum install -y screen # epel sudo yum install -y telnet sudo yum install -y openssl-devel sudo yum install -y ncurses-devel sudo yum install -y md5deep # ? sudo yum install -y libtiff-devel sudo yum install -y libX11-devel ===== Innovative Code ===== Use a PC to grab the latest code from their website. I used the FPGA Dell Laptop Dan purchased (the nice one) - Go to the website: [[https://www.innovative-dsp.com/support-content/InstallFromWeb.exe]] - Download the linux and windows versions of the code (the firmware file only came down with windows) - Check Malibu (linux you only get this option) - Check Malibu Something Else (windows) - Check x3 sdf - Transfer all the files, I put them all here /home/lvis/download/Innovative_x3sdf/download_linux - Make a directory for the install and copy the raw files into it sudo mkdir /usr/Innovative sudo cp -a /home/lvis/download/Innovative_x3sdf/download_linux/* /usr/Innovative/ - Try doing this not as root sudo chown -R lvis:lvis /usr/Innovative # NOPE, had to do sudo as it needs to make and install a kernel module - Install some required libs sudo yum install -y elfutils-libelf-devel sudo yum install -y libpng-devel - Run their install script cd /usr/Innovative sudo ./Setup.sh - Install the X3 SDF Specific files sudo mkdir /usr/Innovative/64X3-SDF sudo tar -zxvf /usr/Innovative/64X3-SDF*.gz --directory=/usr/Innovative/64X3-SDF cd /usr/Innovative sudo ln -s 64X3-SDF X3-SDF - Install the firmware from the windows side, for some reason the linux side contains nothing cd /usr/Innovative/ sudo unzip ~/Downloads/Innovative_x3sdf/download_windows/X3-SDF_Firmware.zip - Firmware file is here (or in my VM I put Hardware in top level, so **/usr/Innovative/Hardware** /usr/Innovative/X3-SDF_Firmware/Hardware/Images/x3_sdf_b_r9.bit # md5sum is $ md5deep -z /usr/Innovative/X3-SDF_Firmware/Hardware/Images/x3_sdf_b_r9.bit 403044 668c173770eb7ded391158b180264f73 /usr/Innovative/X3-SDF_Firmware/Hardware/Images/x3_sdf_b_r9.bit - Run **Snap** example as root # First, got to load the driver (we can automate this) sudo insmod /usr/Innovative/Driver/ii_dev_ctrl.ko cd /usr/Innovative/X3-SDF/Examples/Snap/Qt/Release sudo ./Snap ===== Innovative Example Snap ===== - Setting 4 channels at 1MHz the board is streaming 16 MB/s for a 4 second capture. - 1 channel at 1 second is 1 MB/s - So it looks like this is working... just isn't writing to a file!? ==== Compile Ourselves ==== ==== Malibu Qt Library ==== For our old CentOS 6.5 we need to build the libraries from scratch - Become root sudo bash - Install a dependent 3rd party utility that is not mentioned in the readme (but doesn't fix the issue) Here is how to install it on CentOS 6 yum install wxWidgets-devel yum install wxBase #for /usr/bin/wx-config-3.0 cd /usr/bin; ln -s wx-config-3.0 wx-config - Create the **Makefiles** for the debug and release cd /usr/Innovative/Malibu/Qt /usr/lib64/qt4/bin/qmake -spec /usr/lib64/qt4/mkspecs/linux-g++ -unix CONFIG+=debug -o MakeAllDebug MakeAll.pro /usr/lib64/qt4/bin/qmake -spec /usr/lib64/qt4/mkspecs/linux-g++ -unix CONFIG+=release -o MakeAllRelease MakeAll.pro - Compile - For some reason, the Qt path is missing in **Framework_Qt** Could manually just add the path to the MakeAllDebug but it appears to overwrite when I run from above Looks to be missing at least this: -I../../../../include/QtGui ==== Snap ==== - Looks like sudo yum install qt-devel - OK, this worked with just the **qt** as is cd /usr/Innovative/X3-SDF/Examples/Snap/Console # Generates the Makefile /usr/lib64/qt4/bin/qmake -spec linux-g++ -o Makefile Snap.pro # Compile make # Run sudo ./Release/Snap Using the QT version, I created a capture INI file, and then just copied this over to the **Snap** console directory and it looks like this loads and runs. Here is the configuration file, that does 4 seconds for 3 channels at 1MHz sampling * You have to run as sudo / root * You need to delete the data.bdd and data.bin files it doesn't overwrite AutoStop=1 AutoTrigger=1 BusmasterSize=0 Debug Script DioConfig=0 ExoFile=/usr/Innovative/X3-SDF_Firmware/Hardware/Images/x3_sdf_b_r9.bit ExternalTrigger=0 Framed=0 FrameSize=16384 FrontPanelConfig=3 FrontPanelTrigger=0 Help=0 LoggerEnable=1 OverwriteBdd=1 PacketSize=65536 PhaseDetectorFrequency=100000 PlotEnable=1 PretriggerCount=0 PretriggerEnable=0 ReferenceFrequency=0.5 ReferenceSource=0 RTPlotEnable=1 RTPlotFrequency=1 RTPlotSamples=16384 SampleClockSource=2 SampleRate=1000 SamplesToLog=4000000 Startup Script=..\..\Startup.fr SyncMaster=1 Target=0 TestCounterEnable=0 TriggerDelay=0 [ActiveChannels] ArraySize=4 Ch0=1 Ch1=1 Ch2=1 Ch3=0 [AlertEnable] Alert0=1 Alert1=0 Alert2=0 Alert3=0 Alert4=0 Alert5=0 Alert6=0 Alert7=0 Alert8=0 ArraySize=9 [Range] ArraySize=4 Idx_0=0 Idx_1=0 Idx_2=0 Idx_3=0 ==== Input Connector JP1 ==== JP1connector is the front panel connector for the analog inputs, external clock and external trigger inputs. ^ Connector Type | MDR | ^ Number of Connections | 68 | ^ Connector Part Number 3M part number | 10268-55H3VC | ^ Mating Connector: 3M part number | 10168-6000EC (IDC) | ^ Digikey ([[https://www.digikey.com]]) | P/N MPB68A-ND | ^ Cable Innovative part number | 65057 | MDR68 male to-male, 36 inches (0.91meters) This is the MDR68 as viewed from the front panel. ^ Pin ^ Signal ^ Pin ^ Signal ^ | 02 | AGND | 36 | AGND | | 03 | A/D0 IN+ | 37 | A/D0 IN- | | 04 | AGND | 38 | AGND | | 10 | AGND | 44 | AGND | | 11 | A/D1 IN+ | 45 | A/D1 IN- | | 12 | AGND | 46 | AGND | | 18 | AGND | 52 | AGND | | 19 | A/D2 IN+ | 53 | A/D2 IN- | | 20 | AGND | 54 | AGND | | 26 | AGND | 60 | AGND | | 27 | A/D3 IN+ | 61 | A/D3 IN- | | 28 | AGND | 62 | AGND | | 32 | AGND | 66 | AGND | | 33 | EXT CLK+ | 67 | EXT CLK- | | 34 | TRIGGER1 | 68 | TRIGGER0 | My question to Innovative Tech Support 2020.02.01 In Common/ApplicationIo.cpp HandleDirectDataAvailable() Would that be the place to check the time and if greater than our 60 seconds - Close the current file - Set the new file name - Open the new file name and then let it continue? seems like the right place to do that?