¿Puedes realmente romper una FPGA al programarla incorrectamente?
En realidad soy un tipo de software. No es ningún secreto que si el software es incorrecto, puede destruir todo tipo de datos importantes, y tal vez incluso estrellar toda la máquina. Pero es realmente difícil físicamente daños un ordenador con sólo programarlo.
(Hay un sinfín de rumores sobre una instrucción Halt-And-Catch-Fire, o sobre la posibilidad de reflashear el firmware del sistema para bloquear la placa base, o de programar valores incorrectos en la tarjeta gráfica para freír el monitor. Pero todo esto parece ser exactamente eso: rumores. Y todo sobre un hardware obsoleto desde hace mucho tiempo. Parece muy, muy difícil romper los equipos informáticos modernos con una mala programación).
Con una FPGA, estás (al menos nominalmente) conectando circuitos individuales. Parece completamente plausible que puedan producirse daños físicos en caso de error.
Por ejemplo, podrías escribir un VHDL solicitando que dos salidas se unan. Si salen niveles lógicos diferentes, me imagino que eso probablemente freiría algo. (Yo esperanza que tu herramienta de síntesis te gritaría que no lo hicieras... pero no sé si esas herramientas realmente implementan ese nivel de comprobación de errores).
También parece bastante posible elegir accidentalmente el modelo equivocado de FPGA en la herramienta de síntesis, y así terminar tratando de programar tu chip con un flujo de bits destinado a algún modelo totalmente diferente. No sé qué haría eso, pero sospecho que sería "malo".
En este sentido, no cabe duda de que podrías conectar el chip de la FPGA al resto del circuito de forma incorrecta. Por ejemplo, si te equivocas en los números de los pines, podrías acabar con la placa intentando manejar un pin de E/S que la propia FPGA también está intentando manejar. ¿Los pines de E/S suelen tener alguna "protección" contra ese error? ¿O el chip simplemente se freirá?
3 votos
Algunas FPGA disponen de funciones de seguridad que sólo permiten cargar flujos de bits cifrados y firmados desde la memoria externa. Las claves se guardan en la FPGA y sólo se pueden programar una vez. Si activas esta función por accidente o pierdes las claves, básicamente tendrás una FPGA "brickeada".
2 votos
"Pero es muy difícil dañar físicamente un ordenador sólo programándolo." ¿Tú crees? Antes era el controlador el que controlaba los cabezales del disco duro, lo que significaba que un virus podía tocar el cumpleaños feliz en tus discos duros. La BIOS controla los ventiladores - lo que le permite causar daños por sobrecalentamiento (puede haber alguna protección incorporada, pero si se calienta lo suficientemente rápido entonces no se puede salvar). La BIOS puede incluso decidir poner 20V en tu CPU.... El software puede ser fácilmente responsable de dañar los ordenadores si sabes qué software manipular.
1 votos
@JoL relacionado :) retrocomputing.stackexchange.com/questions/6614/
0 votos
Para el caso, definitivamente podrías conectar el chip FPGA al resto del circuito de forma incorrecta... ¿Y en qué se diferencia de cualquier otro chip? Un micro normal también tendrá los mismos problemas con eso. Antiguamente, muchos aficionados conectaban circuitos sencillos a puertos paralelos de PC, y era muy fácil freír el puerto si lo configurabas mal. Y cuando se empieza a trabajar con microcontroladores (una comparación más pertinente), no es raro perder algunos durante el desarrollo inicial del circuito mientras se solucionan los errores de interconexión.
2 votos
@UKMonkey youtube.com/watch?v=CsQd2n99zS4
1 votos
Depende del software que estés escribiendo. ¿Un servidor web en Java? Sí, probablemente no destruirás físicamente nada vital. ¿Controladores de tarjeta de vídeo? Configura mal el perfil térmico y podrías literalmente fundirla. ¿Literalmente cualquier dispositivo informático integrado? Probablemente conectado directamente a algo físico que podría romper cosas si lo haces lo suficientemente mal. Por ejemplo, si construyes un IDE para FPGAs que envía el flujo de bits equivocado, podrías romper físicamente el hardware asociado.
2 votos
@UKMonkey Dependiendo de cómo esté configurado tu sistema, estoy bastante seguro de que puedes fundir cualquier CPU con el suficiente esfuerzo. Más los ordenadores - AFAIK cualquier cosa no puramente pasiva refrescada - tendrá una manera de controlar el sistema de enfriamiento. Se puede desactivar el estrangulamiento térmico, otra línea de defensa, a través de la BIOS, lo que implica que se puede hacer programáticamente por el kernel. En ese caso específico, tendría que ser intencional, pero es definitivamente posible.
0 votos
Definitivamente, no son rumores. HCF es una instrucción documentada en el MC6800 .
0 votos
poder actualizar el firmware del sistema para bloquear la placa base - Ningún rumor, se lo garantizo. Sí, es mucho más difícil y más infrecuente que el malware estándar y los exploits escritos en lenguajes de alto nivel, por, me atrevería a decir, razones obvias. Pero existe y lo he visto. Con moderno hardware. Sin embargo, la mayoría de las veces, una placa base dañada puede volver a la vida actualizando de nuevo la BIOS correcta.
0 votos
@OrangeDog Sí, pero en realidad no se incendia. Simplemente detiene el sistema, requiriendo un reinicio físico.
1 votos
Posible duplicado de VHDL que puede dañar la FPGA