Hacker News new | ask | show | jobs
by manawyrm 2137 days ago
Depends on what you want to do :) If you just want to read/write sectors of 512 bytes at a time, it's pretty easy to implement even on a simple MCU.

There's a couple of registers which need to be set: https://wiki.osdev.org/ATA_PIO_Mode and you can then just read/write the data from the parallel lines.

Here's a similar project using an ATmega32: https://github.com/zwostein/idetrol (i used this code, ported to ARM to check my hardware before I wrote the kerneldriver)

1 comments

How can this be so easy but talking to an SD card is an impossible task without implementing a billion vendor/type quirks.
ATA was implemented by engineers and then described in a spec.

SD was designed by committee and then implemented as best they could.

Ooh the hours lost trying to reverse the proper call sequence and frequency for my SD card, thanks for the reminder.