The idea is to interface an old 5,25" Shugart compatible Floppy disk drive to GPIOs of a PocketBeagle and write a primitive Linux block device driver to read (potentially write) sectors.
The ARM Cortex A8 inside the AM3358 of PocketBeagle should be fast enough - provided we can switch off the interrupts for a moment.
We also could try to make use of the PRU subsystem of the AM3358 chip so that it runs real-time an independently of the Linux main system. But that may be a second step.
The first step is to:
- find out the correct connector pin assignment
- check if the floppy drive still works (12 V spins up motor, applying 5 V gives index impulse, read data visible with Oscilloscope etc.)
- choose which PRU capable GPIOs are to be used
- design a simple interface board (probably we need level shifters)
- use the "sbull" demo driver (O'Reilly) and write a simple
Material
similar projects
sbull block device demo driver
- https://static.lwn.net/images/pdf/LDD3/ch16.pdf
- https://github.com/tatetian/linux-driver-examples/tree/master/sbull
- http://web.cecs.pdx.edu/~jrb/ui/linux/examples.dir/sbull/sbull.c
Resources
- LC8:
- git repository:
- floppy disk formats: https://en.wikipedia.org/wiki/List_of_floppy_disk_formats
- MFM: https://en.wikipedia.org/wiki/Modified_Frequency_Modulation
- about Floppy Disk Drives: http://www.pcguide.com/ref/fdd/index.htm
- pin layout: http://pinouts.ru/HD/InternalDisk_pinout.shtml