Desde el mundo de las MCU, creo cargadores de arranque para que los clientes puedan actualizar el firmware. Específicamente, estoy hablando de un cargador de arranque USB para reducir los muchos medios diferentes.
¿Cómo se hace esto con los FPGA y CPLD? Preferiría una solución que sea segura. Así que la imagen enviada se encripta u oculta de alguna manera. Pero me gustaría aquí las soluciones que no son tan bien.
Para FPGA:
Dado que el firmware se almacena en una memoria flash externa, ¿la imagen FPGA simplemente escribe en su flash externo y luego se reinicia? Pero, ¿qué sucede si el nuevo archivo está dañado o la conexión se elimina durante la actualización? ¿Hay una manera de hacer una copia de seguridad predeterminada? En las MCU, el cargador de arranque nunca se sobrescribe, por lo que la aplicación puede fallar en cualquier momento y el cargador de arranque seguirá funcionando.
¿Hay una parte separada de memoria no volátil dedicada que no se reconfigure en el encendido en la que puede cargar un cargador de arranque?
Para CPLD:
Dado que la imagen se almacena internamente, ¿tienen alguna forma de configurarse? ¿Cómo se haría un cargador de arranque para un CPLD?
Otros pensamientos:
Tal vez pueda colocar un chip FTDI de algún tipo con GPIO que pueda controlar desde una aplicación de PC a través de USB. De esta manera, ¿puedes golpear una SPI para cargar una nueva imagen en el flash externo? ¿Alguien hace eso? De esa manera, la imagen FPGA puede estar dañada o faltante y aún podrá cargar una nueva imagen.
Tenga en cuenta que supongo que el FPGA o CPLD está solo en una placa. Lo que significa que no hay una MCU en la placa para hacer todo esto.
Cualquier información sobre cómo la industria logra esta tarea sería genial.