This firmware is for the Cypress CY7C68013 EZ-USB FX2 chip (well for two FX2 chips, actually).
My USB target disk solution allows any UEFI-compatible motherboard to share all attached block storage devices with another computer as if they were just regular USB mass storage devices.
- The business end of our dongle device attaches to a target computer. The target computer loads and executes the Targetdisk UEFI runtime hosted on the business end of our dongle.
- The UEFI runtime on the target device reloads the business end of our dongle device its FIFO-establishing firmware.
- After the business end of the dongle reboots, it lets the other FX2 know that it's time to wake up and establish our hardware FIFO. The hardware FIFO then begins to proxy SCSI commands from the mass storage interface end of our dongle to the target computer's UEFI runtime.
So far I have only partially implemented step one of the diagram above, named
efi-booter
. You can build the Cypress EZ-USB FX2 firmware by running:
make efi-booter
To build the SPI flash image that it hosts, you'll need a GNU/Linux system with
losetup
, sgdisk
, mkfs.fat,
and a recent version of the Bash shell. These
are used in the image creation targets of the GNUmakefile
and the mk-esp
and
populate-esp
scripts that it calls.
make esp-image
Due to the current unfinished state of the project, I'm not yet permanently flashing my firmware to the device yet.
make load-booter
If you pull down recent code and stuff is no longer building, you can safely
remove the var
directory in your local project root. That should fix most
problems. If that still doesn't work, please file a
GitHub issue.
- The libfx2 documentation
- My work-in-progress Targetdisk UEFI runtime
- The original CY7C68013 EZ-USB FX2 USB Microcontroller datasheet
- Infineon's updated datasheet
- The FX2 Technical Reference Manual