====== 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?