0
\$\begingroup\$

I read this post which answered most of my questions, but was a bit disheartening. So, this one may need to be deleted. I have also done my other research looking through articles like this.

Is it possible for a single person to design (or at least partially design/customize) a hard drive?

  1. This may have been off the table for rotating drives since there was lot more physics and precision measurements involved, but I am thinking that with an SSD, the design of a customized logic controller for solid-state memory may not be as difficult.

  2. If it is not possible for a single person to design a complete SSD logic controller, are there any types of programmable controllers, or something similary, available that may take care of most of the memory management, but allow for additional modification/customization? This would be the way to go, since I prefer to use a HDD with good performance, and will be better than anything a one-man shop will cook up.

This post offered some hope, but I am far from understanding all of it, and is probably doctorate-level work(?).

\$\endgroup\$
6
  • 1
    \$\begingroup\$ Can I ask, what are you trying to achieve by customising a HDD/SDD controller? \$\endgroup\$ Commented Jan 22, 2015 at 12:10
  • \$\begingroup\$ Because I can make it even better! No, I'm kidding. For fun and knowledge. Possibly as a project. But I would prefer not setting off on a dead-end road. \$\endgroup\$
    – user58446
    Commented Jan 22, 2015 at 12:17
  • 1
    \$\begingroup\$ How about looking into floppy drives first? They may be easier to modify with a custom controller. I remember the Commodore 1541 drives which had pretty much everything implemented in software on their in-built 6502 CPU, from GCR encoding of bytes to bit-banging data to the R/W head to serial communication and even basic file system management operations. PC drives should be even simpler because more stuff happens on the PC's side. \$\endgroup\$
    – JimmyB
    Commented Jan 22, 2015 at 12:25
  • 1
    \$\begingroup\$ I think Hanno Binder has a point, why not try something a little simpler to get you going and then build up to a SSD maybe start on something like an SD card which is basically flash with a SPI interface, that will involve designing an SPI controller (Hardware and Firmware) and then writing software to drive it and perform file management? All of that is pretty well documented and there should be examples on then web to give you guidance AND you can buy dev boards will all the hardware you need on it. \$\endgroup\$ Commented Jan 22, 2015 at 13:05
  • \$\begingroup\$ @GipsyDanger I like the idea of starting with a flash drive or SD card... +1. \$\endgroup\$
    – user58446
    Commented Jan 22, 2015 at 13:46

1 Answer 1

2
\$\begingroup\$

Rotating drive? No. The manufacturing issues are too hard to overcome.

Solid state drive? Yes, provided you have time and money; I'd ballpark it as a person-year hardware and software development plus a few thousand for manufacturing. You could probably get a beta version working with half of that by starting from an existing development board (FPGA or some of the faster SOCs) with a SATA slave or PCIe interface. Essentially there are four parts:

  • controller to host PC interface. Write software or HDL; some of this may be available as IP already.
  • controller to Flash interface. This is standardised, but you'll have to implement wear levelling and error correction on top of it.
  • firmware and board housekeeping. All the other stuff like power supplies and bootup sequence.
  • board layout and manufacturing if you're doing your own board.

It's within the range of a bright graduate who has access to occasional guidance.

\$\endgroup\$
4
  • \$\begingroup\$ Great! Then let's get started! Is there a specific type of logic controller (or model, something more specific than FPGA) to use as the foundation, perhaps one that is meant for SSD drives or similar applications... or will this be a total 'hack-job'? Might something from here or here work to get started? \$\endgroup\$
    – user58446
    Commented Jan 22, 2015 at 12:13
  • 2
    \$\begingroup\$ "Let's get started!"??? This site is not the place to start a collaboration on such an ambitious project. Furthermore, you've told us nothing about yourself in your profile -- your level of education or experience, for example -- and so it will be difficult to find people who share your enthusiasm and might be willing to work with you. After all, this is functionality that is readily available as a commercial, off-the-shelf (COTS) product. At a minimum, you'd have to demonstrate that you understand what goes into such a product, and have a clear idea of the improvements you might make. \$\endgroup\$
    – Dave Tweed
    Commented Jan 22, 2015 at 13:14
  • 3
    \$\begingroup\$ Yeah, Dave is correct: as a consultant I'm used to providing estimates for free and then charging for the actual work! There are a few other people interested in this: openssd-project.org/wiki/The_OpenSSD_Project ; or if you want a "starter" project then building a USB mass storage device out of a microcontroller dev kit is quite feasible. \$\endgroup\$
    – pjc50
    Commented Jan 22, 2015 at 13:27
  • \$\begingroup\$ @DaveTweed Always so serious! I was kidding entirely... but your responses were priceless. However, I wasn't kidding about the right FPGA board to start with in the links I provided... that should give you some indication of my technical experience level :) \$\endgroup\$
    – user58446
    Commented Jan 22, 2015 at 13:43

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.