Giter Club home page Giter Club logo

squishy's Introduction

Squishy: The SCSI Multitool

Squishy is a platform for working with old SCSI devices with modern systems in a flexible manner. It was originally developed as a one-off solution for the taperipper project, which was to boot a modern system off of a IBM 9348-002 9-track magnetic tape drive.

It has since evolved into being a generic toolkit and hardware platform for all things SCSI.

Squishy is comprised of 4 core components; A gateware library built on Torii; A python library with various utilities and structures for dealing with SCSI data; A applet system to allow for custom gateware/python code applets to run on the hardware; And finally, the hardware itself.

Important

If you're looking for the Squishy hardware, the design files have moved to squishy-scsi/hardware.

Documentation

The documentation for Squishy can be found at https://docs.scsi.moe.

Installation

The installation instructions for squishy on various platforms can be found on the https://docs.scsi.moe/install.html page.

Hardware

The Squishy hardware design files have be migrated to squishy-scsi/hardware.

Details about the squishy hardware can be found on the https://docs.scsi.moe/hardware/index.html page.

Mascot - Sachi

Sachi the spirit fox

More information about Sachi is available on her mascot page in the documentation.

Sachi was designed and illustrated by the amazing Tyson Tan (tysontan.com). He provides mascot design service for free and open source software projects, free of charge, under free license.

Community

Squishy has a dedicated IRC channel, #squishy on libera.chat. Join to ask questions, discuss ongoing development, or just hang out.

NOTE: Squishy does not have an official discord, nor any endorsed discord servers, for an explanation as to why, see the F.A.Q.

Licenses

The Squishy project is licensed under 3 individual licenses, one for the hardware and gateware, one for the software and one for the documentation.

The hardware is licensed under the CERN-OHL-S, the license for which can be found in squishy-scsi/hardware/LICENSE

The software and gateware are licensed under the BSD-3-Clause and can be found in LICENSE.software.

The documentation is licensed under the Creative Commons CC-BY-SA and can be found in LICENSE.docs

The icons used in the GUI are from the KDE project. They are the breeze-icons and they are licensed under the LGPL v2.1, and can be found in LICENSE.icons

The fonts used in the GUI are Fira Code, and Noto Sans, both of which are under the OFL 1.1, and can be found in LICENSE.fonts

The print/pdf documentation uses the font Nunito which is under the OFL 1.1, and can be found in LICENSE.fonts

Sachi, the mascot is dual-licensed under the BSD-3-Clause and the Creative Commons CC-BY-SA

squishy's People

Contributors

dragonmux avatar lethalbit avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar

Forkers

fossabot

squishy's Issues

[BUG]: `tests.gateware.core.test_flash.SPIFlashTests` is non-deterministic

The tests.gateware.core.test_flash.SPIFlashTests test is non-deterministic and randomly fails/passes.

The gateware itself works enough for DFU and applet updates, but the tests being unstable is non-ideal.

This is likely due to how the Torii pysim engine works. So there is no real fix right away, ideally I'd like to be able to formally verify it, but that is much later on the docket.

This issue will likely be around until the new sim engine is in Torii, so just skipping that test might be the best for now

GUI Usage guide

A guide on how to use the Squishy GUI needs to be written and verified.

SCSI Target/Initiator state machines

Implementation of the gateware for the SCSI Target and Initiator state machines for all 3 versions of SCSI need to be properly implemented.

  • SCSI-1
  • SCSI-2
  • SCSI-3

In addition to this target extensibility to be able to register custom SCSI commands needs to be implemented to allow proper flexibility as a library component.

SCSI Command Support

Finish implementing the rest of the standardized SCSI commands as well as any related structures and enumerations needed to properly handle them.

Add type annotations

To make development easier and more clear, add type annotations to as much as possible

Flesh out the hardware device wrapper

The Squishy device wrapper needs to be fleshed out to allow for applet code running on the host system to communicate with the hardware over the sideband interface.

SCSI Message Support

Implement the structures and enumerations related to the SCSI protocol messages.

Formalize applet interface / API

The squishy applet interface needs to be properly formalized.

Currently it allows for command line arguments, but not much between the hardware and applet code itself. Also REPL/GUI support for applets would be nice.

  • GUI Support
  • REPL Support

CLI Usage guide

A guide on how to use the Squishy CLI needs to be written and verified.

DFU / Gateware update

The multiboot gateware for rev1 and rev2 needs to be written and finalized. It is based off the work @dragonmux did with dragonBoot

It will expose a DFU endpoint over USB to allow the gateware and in the case of the rev2 hardware the supervisor firmware to be updated.

Ensure all FPGA I/O are at a known state on startup

Any unconfigured FPGA I/O will end up floating, and may possibly cause problems, such as driving the transceivers or enabling TERMPWR.

As such we need to ensure that all I/O be explicitly set to a known and safe level.

Add detection for yowasp-yosys/nextpnr

When using the Yowasp builds of Yosys and nextpnr there is an issue with detecting them and using them when trying to build gateware. We need to add detection for this and warn if we don't find any of them.

NOTE: Also need to investigate to see how the ULPI timings go for the yowasp flow, they seem to fail by at least 7MHz even with ABC9

Introduction needs cleanup

The introduction page of the documentation needs some cleanup and re-wording to make it a little friendlier to read as well as a better jumping off point to get into the rest of the project.

Write a `HACKING.md` document

Write a document to help people wanting to delve into the code.

Explain terminology usage where it may be ambiguous, confusing, and/or archaic/arcane, as well as any potential gotchas that may be encountered when doing development.

Tutorials need to be written

Various tutorials on how to use the Squishy software and hardware need to be written.

This is blocked by #29

  • Custom Applets
  • Hardware Usage (blocked by #14)
  • Software Usage
  • Applets
    • Analyzer Applet
    • Taperipper Applet
  • Gateware Library
  • Python Library

Getting Started Guide

The getting started guide needs to be written.

It should include how to initially setup the software and hardware, as well as an example use case to get started with.

This is blocked by:

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.