Configure (cargue bitstream) a MAX10 sin herramientas Altera usando Linux

3

Actualmente estoy usando el Altera MAX10 basado en flash, diseñado para ser conectado al procesador principal que ejecuta Linux en una placa personalizada (el FPGA solo implementa algunos periféricos; el procesador que ejecuta Linux es un diseño ARM normal).

Hasta ahora, he estado usando las herramientas estándar de Altera para el desarrollo ( Quartus Prime y USB Blaster como software de programación y herramientas de hardware), pero una vez que el producto se envía, no tenemos esta opción.

Como nos gustaría diseñar para actualizarse en campo, necesitamos una solución para cargar un flujo de bits al flash del MAX10 desde Linux (el sistema operativo incorporado) sin un USB Blaster o las herramientas de programación Quartus (ya que es un ARM tablero, no podemos ejecutar los binarios).

Así que mis preguntas son:

  • ¿Qué herramientas de software se pueden usar para este propósito? ( fpga_manager aún no parece estar en horario de máxima audiencia, y urjtag no tiene mucho en cuanto al soporte reciente de Altera)
  • ¿Qué consideraciones deben darse al diseño de hardware para habilitar esta funcionalidad? (Por ejemplo, ¿se pueden usar los GPIO para hacer bit-bang en JTAG, una solución ideal desde una perspectiva de costos, o necesito un chip como un y un FTDI )

Para desarrollar una solución de prueba de concepto, tengo un MAX10 Eval kit y un BeagleBone Black . Puedo hacer cualquier software y hardware que se requieran.

Soluciones parciales

Si sabe cómo realizar cualquiera de las siguientes acciones, promocionaré cualquiera de las siguientes con la esperanza de reunir una solución completa de las piezas individuales:

  • Si ha transmitido un flujo de bits a otro FPGA basado en flash de Altera (por ejemplo, MAXII) con software + hardware no Altera;
  • Si ha transmitido un flujo de bits a un MAX10 usando un USB Blaster usando un software que no es Altera; o
  • Si ha transmitido un bistream a un MAX10 utilizando un hardware de programación que no es Altera y el software de programación estándar Altera / Quartus.

Actualizaciones :

pregunta Damien

2 respuestas

2

Creo que el método estándar para hacer esto es generar un archivo SVF o XSVF con el software Quartus y luego usar algo como OpenOCD o enlace para reproducirlo. Usted se conectaría a la FPGA a través de los pines JTAG, ya sea a través de GPIO o tal vez un chip FTDI.

Otra opción sería renunciar por completo al almacenamiento de configuración a bordo del FPGA y cargar directamente la configuración durante el inicio a través de SPI o similar, suponiendo que el FPGA lo admita. De esta manera, no es necesario actualizar el firmware FPGA durante el proceso de actualización del firmware, ya que se integraría con el firmware principal y se cargaría en el FPGA automáticamente.

    
respondido por el alex.forencich
1

Esto es más una guía de cómo podría hacerse.

EDITAR: Necesita: para la primera programación: QuartusII, QSYS, NIOS SBT, conexión JTAG a su FPGA y para la actualización remota: un programa de terminal que puede enviar archivos y conexión UART a su FPGA.

Max10 admite el modo de imagen comprimido dual. Puede leer sobre su memoria flash aquí .

Cree una imagen dorada, que sea capaz de escribir la imagen de trabajo en flash. Aquí hay una documentación para la actualización del sistema remoto con UART. Asegúrese de proteger sus direcciones flash en las que reside la imagen.

Agregue una conexión JTAG en su tablero (config guide Max10) y programe el FPGA antes de que salga de la casa.

A continuación queremos actualizar el FPGA. El método para obtener los archivos .hex es un poco incómodo, pero después de hacerlo uno, dos veces debería estar bien, debería describirse en el ejemplo.

¿Desea seleccionar la imagen cargada a través de GPIO o a través de la configuración interna, ya que si elige una opción interna, su diseño de trabajo tiene que poder volver a la imagen dorada?

    
respondido por el Eggi

Lea otras preguntas en las etiquetas