From Casper
Jump to navigationJump to search


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

  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).
     ?upload 3000
     !upload ok 3000
   Then from a local terminal type
     nc -w 2 -q 2 3000 < some-image.bof
   Which will give you
     #fpga loaded
     #fpga ready
  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
 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 Port
   is a udp port on which gateware collects data