First download the project from git.
> git lfs install
> git clone https://github.com/slaclab/dev-board-examples.git
> cd dev-board-examples
> git submodule init
> git submodule update --recursive
Alternatively you can download a tarball from here:
A pre-compiled image is included in:
dev-board-examples-v1.0.0/firmware/targets/XilinxKC705DevBoard/Kc705Pgp/images/Kcu105Pgp-0x00000001-20170330105909-ruckman-dirty.bit.gz
Uncompress the bit file with:
> gzip -d Kcu105Pgp-0x00000001-20170330105909-ruckman-dirty.bit.gz
and load into the evaluation board using vivado.
Compile the project. Requires linux and vivado 2016.4
> cd dev-board-examples-v1.0.0/firmware
Our build system requires a local build directory for the compile. You can either
> mkdir build
Or create a link to a scratch area:
> ln -s /u/local/build build
Go to the proper target for a KCU105 board with PGP support:
> cd targets/XilinxKC705DevBoard/Kc705Pgp
Build the project:
> make
The output will be in the images directory.
Download the driver package from github.com
> wget https://github.com/slaclab/aes-stream-drivers/archive/v1.0.1.tar.gz
> tar -xvvzpf v1.0.0.1.tgz
go to the pgpcard directory and build the driver:
> aes-stream-drivers-1.0.1/pgpcard/driver/
> make
You will end up with a file pgpcard.ko
Load the driver as root:
> sudo insmod pgpcard.ko
Verify the card loaded:
> cat /proc/pgpcard_0
You will see a dump of information. With the eval board image loaded and the board fibers properly connected you should see the following lines:
-------------- Lane 0 --------------------
LoopBack : 0
LocLinkReady : 1
RemLinkReady : 1
The aes-stream-drivers/include directory will be needed for the next step. Make note of the full directory path.
To compile the test software go to the following directory in the firmware download:
> cd dev-board-examples-v1.0.0/software/standalone/
Edit the following line in the makefile to point to the location of the aes stream driver directory:
AES_INCLUDE := ../../../aes-stream-drivers-1.0.1/include/
Build the test software:
> make
First dump the status register. This will include the firmware version and build string:
> bin/dumpStatus
The output should look like:
FwVersion = 0x00000001
BuildStamp = Kcu105Pgp: Vivado v2016.4, x86_64, Built Wed May 3 13:52:04 PDT 2017 by rherbst
HeartBeat = 0x00000000
Scratchpad = 0x00000000
PRBS Length = 255
In one terminal start the data dump process:
> bin/dumpData
In another terminal start the routine which periodically writes a register to generate a data frame:
> bin/genData
The output of the dumpData terminal show show:
Got Data. Size=1024, error=0
Got Data. Size=1024, error=0
Got Data. Size=1024, error=0
Got Data. Size=1024, error=0
Got Data. Size=1024, error=0
Got Data. Size=1024, error=0
Got Data. Size=1024, error=0
Got Data. Size=1024, error=0
Got Data. Size=1024, error=0
Got Data. Size=1024, error=0
Got Data. Size=1024, error=0
...
Git hub repositories for firmware and drivers:
https://github.com/slaclab/dev-board-examples
https://github.com/slaclab/aes-stream-drivers
Information about the register access protocol used in the CPIX camera and development board:
SLAC Register Protocol (SRP) Version 0