Arranque desde tarjeta SD en modo SPI

0

Quiero arrancar una placa ARM Linux ( Allwinner H3 por ejemplo) desde una tarjeta SD (micro) genérica a través de un SPI interfaz. ¿Puede una tarjeta SD aceptar la comunicación SPI de inmediato o hay alguna "inicialización del modo SPI" necesaria en la tarjeta?

Debo admitir que no he revisado toda la documentación y los ejemplos de SD disponibles (como el enlace en esta respuesta ) como No estoy en un nivel tan bajo como Arduino, sino en un sistema Linux.

Esta publicación dice que una tarjeta SD debe "cambiarse" primero al modo SPI y no estoy seguro de cómo esto Es compatible con el proceso de arranque SPI en Linux. ¿Alguien puede explicar por favor?

Editar: la razón para iniciar desde SPI en una placa de Linux que tiene una ranura para tarjeta micro SD es que quiero usar esta ranura solo como almacenamiento extraíble secundario (para guardar fotos, etc.) y quiero tener un sistema en Tarjeta SD diferente que se soldará directamente a la interfaz SPI (posiblemente sin placa / controlador intermedio).

    
pregunta Kozuch

2 respuestas

1

No estoy muy familiarizado con los detalles del arranque de Linux en ARM, pero una vez tuve que arrancar un chip DSP desde un dispositivo que la ROM de arranque en chip no entendía. Terminé escribiendo un gestor de arranque de segunda etapa que el cargador en chip podía leer, después de lo cual mi cargador reconfiguró el chip y arrancó la aplicación real.

Es posible que deba hacer algo similar, utilizando un pequeño flash SPI para el cargador de arranque de la segunda etapa, y conectando su tarjeta SD a la misma interfaz SPI utilizando una segunda línea de selección de chips.

    
respondido por el Dave Tweed
1
  

¿Puede una tarjeta SD aceptar la comunicación SPI de inmediato o hay alguna "inicialización del modo SPI" necesaria en la tarjeta?

Sí. He escrito el código de lectura / escritura de la tarjeta SD para un microcontrolador y solo utiliza la interfaz SPI. Pero tenga en cuenta que la interfaz SD tiene algunos requisitos "desagradables", lo que significa que no puede hacerlo todo en modo "byte". En algún momento, debe esperar a que llegue un '0' (que puede ser después de, por ejemplo, 6 relojes) y comenzar a procesar los bytes desde allí.

Encontré una gran cantidad de tarjetas SD que juegan 'nice', ya que establecen el bit 8 '(último bit de un byte) bajo para que puedas usar el modo' byte '. Pero no todos los fabricantes son tan amables.

También para reiniciar (CMD0) debe enviar relojes sin seleccionar chip.

    
respondido por el Oldfart

Lea otras preguntas en las etiquetas