|  | 3 anni fa | |
|---|---|---|
| .github | 3 anni fa | |
| boards | 3 anni fa | |
| greenpak | 3 anni fa | |
| lib | 3 anni fa | |
| src | 3 anni fa | |
| test | 3 anni fa | |
| utils | 3 anni fa | |
| .gitignore | 3 anni fa | |
| LICENSE | 3 anni fa | |
| Performance.md | 3 anni fa | |
| README.md | 3 anni fa | |
| platformio.ini | 3 anni fa | |
| zuluscsi.ini | 3 anni fa | 
ZuluSCSI uses raw hard drive image files, which are stored on a FAT32 or exFAT-formatted SD card. These are often referred to as "hda" files.
Examples of valid filenames:
HD5.hda or HD5.img: hard drive with SCSI ID 5HD20_512.hda: hard drive with SCSI ID 2, LUN 0, block size 512CD3.iso: CD drive with SCSI ID 3In addition to the simplified filenames style above, the ZuluSCSI firmware also looks for images using the BlueSCSI-style "HDxy_512.hda" filename formatting.
The media type can be set in zuluscsi.ini, or directly by the file name prefix.
Supported prefixes are HD (hard drive), CD (cd-rom), FD (floppy), MO (magneto-optical), RE (generic removeable media), TP (sequential tape drive).
Log messages are stored in zululog.txt, which is cleared on every boot.
Normally only basic initialization information is stored, but switching the DBG DIP switch on will cause every SCSI command to be logged, once the board is power cycled.
The indicator LED will normally report disk access. It also reports following status conditions:
In crashes the firmware will also attempt to save information into zuluerr.txt.
Optional configuration can be stored in zuluscsi.ini.
If image file is found but configuration is missing, a default configuration is used.
Example config file is available here: zuluscsi.ini.
Performance information for the various ZuluSCSI hardware models is documented separately, here
The firmware supports hot-plug removal and reinsertion of SD card. The status led will blink continuously when card is not present, then blink once when card is reinserted successfully.
It will depend on the host system whether it gets confused by hotplugging. Any IO requests issued when card is removed will be timeouted.
There is a bootloader that loads new firmware from SD card on boot.
The firmware file must be e.g. ZuluSCSI.bin or ZuluSCSIv1_0_2022-xxxxx.bin.
Firmware update takes about 1 second, during which the LED will flash rapidly.
When successful, the bootloader removes the update file and continues to main firmware.
On failure, Zuluerr.txt is written on the SD card.
Alternatively, the board can be programmed using USB connection in DFU mode by setting DIP switch 4. The necessary programmer utility for Windows can be downloaded from GD32 website. On Linux and MacOS, the standard 'dfu-util' can be used. It can be installed via your package manager under Linux. On MacOS, it is available through MacPorts and Brew as a package.
dfu-util --alt 0 --dfuse-address 0x08000000 --download ZuluSCSIv1_1_XXXXXX.bin
For RP2040-based boards, the USB programming uses .uf2 format file that can be copied to the USB drive that shows up in bootloader mode.
For ZuluSCSI V1.1, the DIP switch settings are as follows:
zululog.txt)ZuluSCSI Mini has no DIP switches, so all optional configuration parameters must be defined in zuluscsi.ini
ZuluSCSI RP2040 DIP switch settings are:
zululog.txt)The RP2040 model supports SCSI initiator mode for reading SCSI drives.
When enabled by the DIP switch, ZuluSCSI RP2040 will scan for SCSI drives on the bus and copy the data as HDxx_imaged.hda to the SD card.
LED indications in initiator mode:
The firmware retries reads up to 5 times and attempts to skip any sectors that have problems.
Any read errors are logged into zululog.txt.
Depending on hardware setup, you may need to mount diode D205 and jumper JP201 to supply TERMPWR to the SCSI bus.
This is necessary if the drives do not supply their own SCSI terminator power.
To port the code to a new platform, see README in lib/ZuluSCSI_platform_template folder.
This codebase uses PlatformIO. To build run the command:
pio run
This firmware is derived from two sources, both under GPL 3 license:
Main program structure:
Major changes from BlueSCSI and SCSI2SD include: