Tcpborphserver - david-macmahon/wiki_convert_test GitHub Wiki
tcpborphserver
tcpborphserver is a server designed to control roaches. It speaks KATCP over port 7147. There are three versions of tcpborphserver at the moment.
tcpborphserver versions
- tcpborphserver runs on a ROACH board with BORPH kernel
- tcpborphserver2 runs on a ROACH2 board with BORPH kernel. NOTE: This approach is no longer supported, however you are free to take the development forward. The BORPH kernel ported for ROACH2 can be found at:BORPH-ROACH2
- tcpborphserver3 runs on ROACH2 board with standard linux kernel and uses memory mapped device driver to talk to FPGA.NOTE: BORPH kernel support removed
tcpborphserver commands
?listbof
Lists gateware image files stored on the roach
?delbof filename
Removes a gateware image file
?progdev filename
Programs a gateware image already stored on the roach in
the image directory (paths not permitted)
?upload port
Upload and program a local gateware image file to the roach. Send
the local image to the tcp port on the roach, as specified. No
escaping of the image file required as it has its own stream,
which should be closed when upload has completed. Still a bit
experimental and subject to revision (there was an uploadbof command
which was different).
Example
?upload 3000
!upload ok 3000
Then from a local terminal type
nc -w 2 -q 2 192.168.40.57 3000 < some-image.bof
Which will give you
#fpga loaded
#fpga ready
?fpgastatus
Checks if the fpga is programmed. Will return fail in case the
fpga is not programmed. In earlier versions this command was
called ?status
?listdev [size]
Lists the register names provided by the currently programmed
gateware image. The optional "size" keyword will include a size
field in the output
?register name position bit-offset length
Assign a name to an fpga memory location explicitly, instead
of having it set in the bof (gateware image) file. Experimental
?wordwrite register word-offset word
Writes a 32bit word to the given register at the word-offset. The
word should be given as a hexadecimal value. Example
?wordwrite sys_scratchpad 0 0x74657374
?wordread register word-offset [word-count]
Reads a 32bit word from the given offset in the named register.
The word offset is counted in words, not bytes. The value returned
is given in hexadecimal. Example
?wordread sys_scratchpad 0
!wordread ok 0x74657374
?read register byte-offset count
Reads data from the given register. Reads start at the specified
byte-offset and attempt to read count bytes. Data is returned
in binary form (with escapes as per katcp specification). Not
all offsets and sizes are supported, as there are alignment
alignment constraints. Example
?read sys_scratchpad 0 4
!read ok test
?write register byte-offset data
Write the given binary data to the position byte-offset to the
named register, subject to alignment constraints
?chassis-led led-name state
Allows you to toggle an LED on the roach chassis. Example
?chassis-led red on
Currently the only useful led name is "red" (there is a "green"
too, but it gets toggled automatically). chassis-start is not
needed during normal operation as it should happen automatically
?tap-info
displays some freeform information about running tap instances
?tap-stop register-name
Stop a running tap instance
?tap-start tap-device register-name ip-address [port [mac]]
Start a tap instance with name tap-device, which opens an fpga
register at register-name to loop traffic to the kernel. The kernel
interface is given ip-address (netmask fixed to 255.255.255.0). Port
is a udp port on which gateware collects data