¿Pueden los DSP de Blackfin arrancar desde 'cualquier tipo' de flash externo SPI?

4

Así que estoy trabajando en un proyecto que contiene un procesador Blackfin, específicamente el BF592 hoja de datos

Una cosa que me confunde es cómo funcionará exactamente el proceso de arranque. Durante el desarrollo, planeo cargar programas a través de la interfaz JTAG. Esto también me permitirá depurar.

Sin embargo, cuando quiero implementar un programa de tal manera que pueda iniciarse desde cero, necesitaré colocar el programa (archivo de carga) en algún tipo de flash externo. Mirándolo en la hoja de datos BF592, puedo hacer que el procesador arranque el flash SPI externo.

Uno de los modos de arranque se describe a continuación:

  

arranque maestro SPI1 desde flash (BMODE = 0x2) - En este   modo, SPI1 está configurado para operar en modo maestro y para   conéctese a dispositivos direccionables de 8, 16, 24 o 32 bits. los   el procesador utiliza el PG11 / SPI1_SSEL5 para seleccionar un solo SPI   EEPROM / dispositivo flash, envía un comando de lectura y sucesivo   dirija los bytes (0 × 00) hasta que sea válido 8, 16, 24 o 32   se detecta un dispositivo direccionable de bits y comienza a sincronizar los datos   en el procesador. Se requieren resistencias pull-up en el   Pasadores SSEL y MISO. Por defecto, se escribe un valor de 0 × 85.   al registro SPI_BAUD.

Estoy confundido. ¿Cómo funcionaría exactamente esto? ¿Cómo sabría el maestro SPI qué código de operación enviar al flash externo para que se recupere la memoria? Por ejemplo, he estado mirando este flash externo IC. Requiere que se envíe un código de operación de 0x0B seguido de la dirección de 3 bytes deseada. ¿Cómo sabría exactamente el SPI master en el Blackfin emitir esto?

He estado profundizando en los manuales de Blackfin y esta parte parece que se agita con la mano. ¿Qué es exactamente lo que me estoy perdiendo? ¿Hay algunos registros de configuración en el Blackfin donde esto se configuraría? ¿Necesito comprar algunos flash IC compatibles? ¿Hay algún estándar para SPI flash donde el código de operación 0x0B siempre se utiliza al extraer datos?

¡Gracias!

Actualización: finalmente pude encontrar el manual de hardware dedicado que explica explícitamente la secuencia de 'arranque desde SPI'. Consulte la página 690 . Esto dice que emite un código de operación 0x03 y / y 0x0B.

    
pregunta Izzo

1 respuesta

4

Sí, el Blackfin "solo sabe" que necesita emitir un comando de lectura seguido de una dirección (todos ceros) en el software de carga de órdenes desde una memoria SPI externa. Los dispositivos de diferentes fabricantes (en su mayoría) utilizan el mismo conjunto de comandos.

El código que hace esto se almacena en una pequeña ROM dentro del mismo chip Blackfin. Debe buscarlo, pero Analog Devices generalmente tiene el código fuente de esa ROM oculto en algún lugar de los archivos de la biblioteca que vienen con las herramientas de desarrollo de software, en caso de que quiera verlo.

Ocasionalmente he necesitado solucionar los errores en el cargador de arranque ROM con respecto a dispositivos flash SPI específicos al crear una etapa adicional de carga de arranque para mi proyecto. Utilizo el gestor de arranque ROM para cargar un gestor de arranque de segunda etapa desde la flash SPI, que luego carga el código de la aplicación. El cargador de la segunda etapa es principalmente una copia del gestor de arranque ROM, pero está construido para vivir dentro de las limitaciones del código ROM, mientras que también corrige el error relacionado con la carga del código de la aplicación.

Si está interesado en los detalles sangrientos, escribí un artículo de Circuit Cellar al respecto. El artículo en sí no está disponible en línea, pero el archivo asociado contiene el código fuente de mi cargador de arranque de reemplazo, y los comentarios explican exactamente cuál fue el problema.

    
respondido por el Dave Tweed

Lea otras preguntas en las etiquetas