Emulando una tarjeta SD con un microcontrolador (o Raspberry Pi)

1

algunos antecedentes de mi historia para comenzar: fui a una tienda y pedí un transmisor Bluetooth para mi auto y el chico me vendió algo que solo reproduce desde una tarjeta SD y ni siquiera me molesté en comprobarlo . Así que estoy sentado aquí tratando de hackearlo para reproducir audio desde bluetooth. Pensé que usaría un ic para leer desde el SD y exportar audio a otro ic que envía el sonido a la antena de FM, pero resulta que utiliza un solo IC para todo (incluso para manejar la pequeña pantalla LCD). Así que pensé que podía emular una tarjeta SD con un microcontrolador o incluso una RaspberryPi y cambiar dinámicamente el contenido de la "SD" sobre la marcha. Recordé que cuando estaba probando el sonido de transmisión en línea, mi software creó un archivo mp3 que continuó grabando el audio de transmisión actual y de esa manera siguió reproduciéndose. Entonces, si pudiera "transmitir" un archivo como ese a la tarjeta SD emulada y hacer que mi pequeño transmisor de FM lo reprodujera, podría crear una pequeña estación de radio para mi auto. ¿Es algo así posible? ¿Cómo podría emular un SD?

    
pregunta Frank F.

2 respuestas

0
  

¿Es algo así posible?

No con ningún MCU compatible con arduino ni con la Raspberry Pi. Para emular correctamente una tarjeta, deberá admitir el protocolo SD en modo de un bit hasta 25MHz, demasiado rápido para cualquier microcontrolador sin soporte de hardware especial. No se sabe que el arduino tenga este hardware.

Podría ser simplemente factible con un FPGA, pero las especificaciones de SD requeridas no están exactamente abiertas, tampoco.

    
respondido por el Turbo J
0

La emulación de una interfaz SD / MMC sin formato no es el problema base para usted. Crear una interfaz de hardware es relativamente fácil y existen múltiples implementaciones de FPGA. Si su jugador puede leer las tarjetas V1.0 SD, entonces puede ejecutar 1 carril a 12.5Mhz, lo que fácilmente podría usar algo como una interfaz Arduino SPI. Raspberry Pi sería un desafío mayor, aunque podría arrancar desde USB y hackear el hardware de la interfaz de la tarjeta SD (un gran desafío de controladores de bajo nivel).

El problema real (después de haber creado la interfaz sin formato) es que tienes medios que tienen doble acceso y no hay manera de sincronizar los contenidos para el lado del jugador.

  1. El dispositivo en el que conectas la tarjeta SD (emulada o no) leerá la tarjeta y probablemente retendrá una pequeña parte de los metadatos del sistema de archivos en memoria RAM, ya que funciona. En su caso, el reproductor solo lee desde la tarjeta SD, pero aún así tendrá que administrar la transmisión de los segmentos del sistema de archivos en la memoria para reproducir la música.
  2. Desea ir tras bambalinas y agregar dinámicamente datos al sistema de archivos, pero el jugador no sabe que el sistema de archivos está cambiando.

Si tuviera que cargar dinámicamente datos en el emulador de la tarjeta SD de doble puerto, tendría que simular una expulsión / inserción para que el jugador vuelva a leer el sistema de archivos. Eso sería posible, pero una vez más le queda la posibilidad de una mala lectura si modifica el contenido de FS desconocido para el lector.
Podría ser increíblemente afortunado y el reproductor casi no contiene metadatos del sistema de archivos en la memoria RAM, por lo que vuelve a leer y escanear el directorio FS para cada elemento que reproduce. Puede verificar esto al monitorear las lecturas de la tarjeta SD. Seguir la estructura de comandos es una tarea en sí misma, y no se puede hacer sin un analizador lógico.
Hay ayuda, y puede iniciar aquí para obtener una vista simple de las transacciones.

    
respondido por el Jack Creasey

Lea otras preguntas en las etiquetas