Actualmente estoy usando el Altera MAX10 basado en flash en un diseño adjunto al procesador principal que ejecuta Linux en una placa personalizada (el FPGA en sí 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 herramientas de software y hardware de programación), pero una vez que se envía el producto, no tenemos esta opción.
Dado que nos gustaría diseñar para que sea actualizable en el campo, necesitamos una solución para cargar un flujo de bits al flash del MAX10 desde Linux (el sistema operativo integrado) sin un USB Blaster o las herramientas de programación de Quartus (dado que es una placa ARM, no puede ejecutar los binarios).
Entonces mis preguntas son:
Con el fin de desarrollar una solución de prueba de concepto, tengo un kit de evaluación MAX10 y un BeagleBone Black . Puedo hacer cualquier truco de software y hardware que se requiera.
Soluciones parciales
Si sabe cómo hacer algo de lo siguiente, votaré a favor de cualquiera de los siguientes con la esperanza de armar una solución completa a partir de las piezas individuales:
Actualizaciones:
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 http://www.clifford.at/libxsvf/ para reproducirlo. Haría una interfaz con el FPGA a través de los pines JTAG, ya sea a través de GPIO o quizás un chip FTDI.
Otra opción sería renunciar por completo al almacenamiento de configuración integrado de la FPGA y cargar directamente la configuración durante el arranque a través de SPI o similar, suponiendo que la FPGA lo admita. De esta forma, no es necesario actualizar el firmware de la FPGA durante el proceso de actualización del firmware, ya que se integraría con el firmware principal y se cargaría en la FPGA automáticamente.
Esto es más una guía de cómo se podría hacer.
EDITAR: Necesita: para la programación por primera vez: QuartusII, QSYS, NIOS SBT, conexión JTAG a su FPGA y para actualización remota: un programa de terminal que sea capaz de enviar archivos y conexión UART a su FPGA.
Max10 admite el modo de imagen con doble compresión. Puedes 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 remota del sistema con UART. Asegúrese de proteger sus direcciones flash donde reside la imagen.
Agregue una conexión JTAG en su placa (guía de configuración 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 una, dos veces debería estar bien, debería estar descrito en el ejemplo.
¿Desea seleccionar la imagen cargada a través de GPIO o mediante la configuración interna, porque si elige interna, su diseño de trabajo debe poder volver a su imagen dorada?
huevo
Damián