Page History
Current Development Machine Name
lcls-pc83236
Preparing git ssh keys
Add your ssh keys to git (This is unfortunately necessary because the .gitmodules file in lcls2-pcie-apps uses the "git" form of the URL instead of the "http" form):
...
Also note that the firmware requires a new version of git that supports "links to large files" (lfs). Add /afs/slac/g/reseng/git/git/bin to PATH.
Conda Commands to Create Rogue Environment
This is in addition to the other packages that must be built for the rogue library (see next step). These conda commands are derived from:
...
Code Block |
---|
conda env create -n timetool source activate timetool conda install pyyaml conda install pyzmq conda install -c conda-forge parse conda install click conda install MySQLdb conda install -c bioconda mysqlclient conda install -c conda-forge pyro4 conda install numpy pip install recordclass |
Building Rogue
git clone https://github.com/slaclab/rogue.git
...
Some applications are not built by default. cd to directory and make.
Building Firmware
Follow instructions in the README.md here (make sure to use the modern AFS version of git described here so you can use git-lfs):
...
cd firmware/targets/TimeToolKcu1500
make
Making Vivado communicate with board over USB/JTAG
Larry has some slides on how to program the flash chips (mt25qu512) on the KCU1500 via USB/JTAG. Startup "vivado" after setting up the firmware
...
SLAC Driver
Build/install the datadev.ko driver using the instructions here:
...
This needs to be done on the machine where the KCU1500 lives. You need sudo on the machine to install the driver.
Programming FPGA over PCI
After the first programming (and power-cycling) described above, use this script to reprogram:
https://github.com/slaclab/lcls2-pcie-apps/blob/master/software/TimeTool/scripts/updateProm.py
TimeTool Software Files
lcls2-pcie-apps/firmware/applications/TimeTool/python/TimeTool.py: a description of the "addValue" register
...
- self.add adds registers and associated GUI control
Settings Needed To Run Camera
Use channela:
- send escape right away after powering up
- datamode: using medium 8bit
- framemode: our camera only gives a line valid (indication that there is valid data) so we need to set to "line"
- tapcount: our camera sends 4 bytes where it could send 6
- dataen: enables the data block (leave false until able to receive data)
- baudrate: 9600
- use sendGCP to test serial link is working (output should appear on terminal)
- swcontrolvalue/swcontrolen: bits for hardware vs software trigger (0/0 internal trigger)
- running: status bit (am I getting frames from camera)
- dropcount: 3 channels misaligned (errors)
- have to set both sender/receiver to "medium". send these TLC strings to the camera:
- CLM 1 (cameralink medium mode)
- SVM 1 (test pattern ramp)
- SSF 1 (software trigger rate 1Hz, although seems to read back as 6Hz? and 2 reads back as 12Hz?)
...