Simular HDD usando ATMega168

4

Voy a comenzar un nuevo proyecto y me pregunto si el concepto tiene sentido. (No estoy tan familiarizado con las especificaciones ATA para responder a esto por mí mismo :))

El concepto:

HW design:

"Conector SATA en la placa base" < - > "Cable SATA" < - > "Convertidor SATA / IDE HW" < - > "ATMEGA168"

  • "Conector SATA en la placa base" < - > "Cable SATA": el dispositivo se conectará al puerto SATA en la placa base de la PC con el cable SATA típico

  • "SATA / IDE HW converter": en mi PCB usaré uno de los controladores SATA / IDE, hasta ahora he encontrado: JMicron - JM20330,
    Atmel - AT78C5010,
    ACARD - ARC-770

  • "ATMEGA168": como unidad programable me gustaría usar ATmega168 (o cualquier otro microcontrolador de 8 bits barato)

Propósito

Con este dispositivo me gustaría simular la presencia de un disco duro en un sistema. Como quiero que el SO use la pila SATA / SCSI, necesito usar los puertos SATA en la placa base. La conexión AFAIK a la interfaz SATA sin el convertidor SATA / IDE es imposible con los microcontroladores ATMega debido a la gran velocidad de la interfaz del bus SATA. Sin embargo, he encontrado una implementación IDE / ATA para uC de 8 bits: enlace

Maravillas

Mi mayor preocupación es el convertidor SATA / IDE. Me pregunto si se puede usar fácilmente con microcontroladores como ATMega.

    
pregunta usecide

1 respuesta

5

Wow, hubiera esperado que la interfaz ATA / IDE de 133MHz fuera demasiado rápida para un chip ATmega, pero parece que lo usan en el modo ATA33 (33MHz), ¡de alguna manera lo hace funcionar con un 4MHz (!) ATmega32.

En este caso, no debería tener ningún problema con un convertidor de SATA a IDE, ya que están diseñados para ser compatibles con dispositivos ATA33 más antiguos.

Sin embargo, tenga en cuenta que la pila SCSI del sistema operativo solo se utiliza para dispositivos SATA. IDE usa un conjunto de comandos diferente, por lo que no verá los comandos SCSI que llegan a su ATmega, si esa es su intención. (Sin embargo, el PC host emitirá comandos SCSI y el dispositivo SATA a IDE se traducirá).

Una alternativa que podría ser más fácil de lograr es usar un chip de interfaz USB para que su ATmega aparezca como un disco duro USB. AFAIK esto hace utiliza el protocolo SCSI (aunque quizás sea un subconjunto limitado de él), por lo que vería los comandos SCSI que llegan a su dispositivo. Las PC recientes también pueden arrancar desde un disco duro USB, si esa es su necesidad de conectarse directamente a SATA.

Esta solución también sería mucho menos sensible a la sincronización, ya que el chip USB hablaría a través del bus USB a las velocidades correctas, permitiéndole hablar con el chip a cualquier velocidad que pueda administrar.

    
respondido por el Malvineous

Lea otras preguntas en las etiquetas