Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Stierlitz, the Fearless, Driver-Less Bus Analyzer.
Assembly Verilog Common Lisp
branch: master

Fetching latest commit…

Cannot retrieve the latest commit at this time

Failed to load latest commit information.
build
cypress
lisp
ml501
tools
LICENSE
Makefile
README
block.asm
debug.asm
descriptor.asm
fat16.asm
hpi.asm
knobs.asm
msc.asm
payload.asm
scsi-cmd.asm
scsi-data.asm
scsi-state.asm
stierlitz.asm
storage.asm
usb-bulk.asm
usbstd.asm
util.asm

README

Got a Xilinx ML501, or another FPGA board with a Cypress CY7C67300 USB controller on it?

Got a bus 31 or fewer bits wide?

Stierlitz will sit on your bus and imitate a USB Mass Storage device.  The latter will appear to have a FAT16 file system on it, containing a single binary "image" file.

Mount it (under Linux, using "mount -o sync ...") and perform arbitrary reads/writes by reading or writing blocks within the image file.

Make sure to use the O_DIRECT flag (or "raw" block device, if your kernel still has it) to disable ALL caching on the PC end.  AFAIK, you cannot do this on Windows or Mac. Therefore I did not bother testing Stierlitz at all on those poor, crippled systems.

If you snip out the FAT16 emulation, you can get 41 bits of address space.

You will need:

1) To build the firmware image, you will need an assembler for the Cypress CY16 architecture: "QTASM.EXE". (Get it here: http://www.cypress.com/?rID=14436)
2) EZOTGDBG (https://github.com/asciilifeform/ezotgdbg) to flash the firmware image to the CY7C67300.
3) The Xilinx build tools for your board.  Edit the Makefile in the "ml501" directory, esp. if you have a 32-bit Linux.
4) A UCF file to match your board's wiring, if you have something other than an ML501.
5) (Optional) SBCL (http://sbcl.org). See the "Lisp" directory.

The "ml501" directory contains a Verilog implementation of the required FPGA-side logic, "stierlitz.v".
If you build using the provided Makefile (edit to insert your Xilinx tool paths) you will have a demo.
The demo gives you a 128K "file" mapped to SRAM ("infer-sram.v"; need an FPGA with at least this much Block RAM to run this.)

Another example, involving an LCD module, can be seen here:

http://www.loper-os.org/?p=797
Something went wrong with that request. Please try again.