¿Es posible destruir físicamente un microcontrolador con software?

29

Suposiciones:

  • No hay circuitos externos conectados (excepto el circuito de programación, que asumimos que es correcto).
  • uC no es defectuoso.
  • Al destruir, me refiero a liberar el humo azul de la muerte, no a meterlo en el software.
  • Es un uC "normal". No es un dispositivo específico muy específico de 1 en un millón muy raro.

¿Alguien ha visto algo así? ¿Cómo es posible?

Fondo:

Un orador de un encuentro al que asistí dijo que era posible (y ni siquiera tan difícil) hacer esto, y algunas otras personas estuvieron de acuerdo con él. Nunca había visto que esto sucediera, y cuando les pregunté cómo era posible, no obtuve una respuesta real. Ahora tengo mucha curiosidad y me encantaría recibir comentarios.

    
pregunta Juan Carlos

11 respuestas

20

Por supuesto que puedes, con la instrucción HCF !

Dicho esto, digo que eso es imposible sin ningún circuito externo, aparte de la potencia y demás.

Incluso incluir algunas conexiones no intencionadamente defectuosas posiblemente no lo corte: si atas todos los gpios a un riel eléctrico, configúralos como salida (al riel eléctrico opuesto) que puede disipar bastante energía. Un pin de gpio probablemente esté protegido contra cortocircuitos y, por lo tanto, no pasará nada perjudicial.

En mi opinión, diseñar un circuito externo que destruya el chip a voluntad no es trivial. Lo primero que se me ocurre es que se necesita una fuente de alimentación de alto voltaje, un nmos y una resistencia:

simular este circuito : esquema creado usando CircuitLab Donde:

  • \ $ V_ {CC} \ $ es el suministro habitual para el micro, entre 3v3 y 5V o lo que sea necesario
  • HV es una fuente cuya tensión está muy por encima de las clasificaciones máximas absolutas de la micro
  • D1 está ahí para proteger su valiosa fuente de voltaje 3V3
  • R1 tira la compuerta mosfet hacia arriba cuando el micro no la mantiene en el suelo
  • M1 es el asesino designado

la operación es simple: si los micro lanzamientos GPIOx M1 se encienden, Vcc aumenta y su chip se enciende. Tenga en cuenta que esta es una configuración de mierda, por ejemplo, HV debe estar activado después de , por lo que está más seguro de que GPIOx está firmemente sujeto a tierra. Es posible que a algunos transistores no les gusten algunos -5V Vgs, y así sucesivamente ... Pero obtienes la imagen.

    
respondido por el Vladimir Cravero
15

Descargo de responsabilidad: supercat dijo eso primero en un comentario.

En realidad, no es posible destruir físicamente la mayoría de las MCU, pero es posible usarlo lo suficiente como para iniciar el mal funcionamiento hasta un punto en el que no se pueda utilizar. Tengo experiencia con MSP430 de TI, así que aquí va:

Esos MCU permiten reprogramar todo el flash en cualquier momento. No solo es posible usar el flash reescribiéndolo millones de veces hasta que falle, sino que el generador de programación de flash en chip puede causar un fallo en el procesador de gama baja si el generador de programación está configurado incorrectamente. Este es un rango permitido de frecuencia permitido para la programación. Cuando se sale de ese rango (más lento), el tiempo de programación puede llegar a ser excesivamente largo y provocar un fallo de las celdas de flash. Después de unos pocos cientos de ciclos, es posible "quemar" las celdas flash que causan fallas permanentes.

Además, algunos modelos permiten overclockear el núcleo para que alcance una velocidad mayor al aumentar el voltaje interno. La MCU funciona con un suministro de voltaje de 1.8-3.6V, pero el núcleo en sí está diseñado para funcionar a 1.8V. Si sobrecargas demasiado el núcleo en un riel eléctrico de 3.6 V mientras alternas todas las E / S, activas todos los periféricos y funcionas a 40MHz (lo normal es un máximo de 25MHz en modelos más grandes) en una pequeña caja cerrada, puedes terminar friendo el Núcleo por sobrecalentamiento. En realidad, algunos chicos dijeron que lograron esas frecuencias (por lo general, el DCO falla antes y el chip se guarda, pero bueno ... quizás).

¿Solo inténtalo?

    
respondido por el Mishyoshi
6

Según stackexchange - "¿Es realmente una mala idea dejar flotando un pin de entrada de MCU?"

Describe varias circunstancias en las que un chip puede ser dañado por un pin de circuito abierto. Editar: un ejemplo Productos analógicos y de microcontroladores Spansion dice:

  

4.1 pines de E / S digitales de entrada de puerto / no utilizados
  Se recomienda encarecidamente no dejar los pines de E / S digitales desconectados, mientras se cambian a   entrada. En este caso, esos pines pueden entrar en un estado llamado flotante.   Esto puede causar una alta corriente ICC, lo que es adverso a la baja potencia   modos También puede ocurrir daño de la MCU.

La condición en esta pregunta es exactamente los pines del circuito abierto.

Por lo tanto, nuestra tarea es conducir que de may a dañará el pin. Creo que eso es suficiente para ir más allá de 'bricking'.

Un mecanismo identificado en esa respuesta es conducir un pin de entrada a un voltaje de valor medio, donde los dos transistores complementarios están "encendidos". Al operar en ese modo, la interfaz de pin puede calentarse o fallar.

Un pin de entrada tiene una impedancia muy alta, y también es un capacitor. Es de suponer que hay suficiente acoplamiento entre los pines adyacentes, que alternar los pines vecinos lo suficientemente rápido puede impulsar la carga en el pin de entrada y empujarlo a ese estado "caliente". ¿Podrían la mitad de los pines de E / S que se introducen en ese estado calientan el chip lo suficiente como para causar daños?

(¿Hay un modo en el que la capacitancia de un pin de circuito abierto se pueda usar como un duplicador de voltaje? Hmm.)

También creo que dañar flash es suficiente. Creo que eso es lo suficientemente malo como para hacer que el chip sea inútil.

No es necesario que sea todo flash, sino solo la página que contiene los vectores de encendido, RESET, etc. El límite en una sola página puede tardar algunas decenas de segundos.

Tenía una indicación, pero no una evidencia sólida) de que para algunos MCU podría ser peor. Asistí a una presentación hace un par de años. Alguien preguntó por qué los competidores ofrecían piezas con ciclos de escritura mucho más altos. El presentador (gran fabricante anónimo de MCU) dijo que adoptaron un enfoque mucho más conservador en sus especificaciones de memoria flash. Dijo que su garantía se definió a una temperatura significativamente más alta que la norma de la industria. Alguien preguntó "¿y qué?" El orador dijo que varios productos de los fabricantes tendrían tiempos de vida de reescritura significativamente más bajos que sus partes a las mismas temperaturas que usaban. Mi recuerdo fue 5x se convertiría en < 1x. Dijo que es muy no lineal. Entendí que la programación a 80C en lugar de a 25C sería "algo malo".

Por lo tanto, la reescritura de flash combinada con un chip muy activo, también podría inutilizarlo en menos de 10 segundos.

Editar:
Creo que "liberar el humo azul de la muerte" es una restricción más difícil de lo requerido. Si alguno de los: circuito de pines RESET, detector de pardo, circuitos de encendido, RC o oscilador de cristal (y probablemente algunos otros circuitos) podría dañarse, el chip quedaría inutilizado.

Como han dicho otros, romper el flash también lo mataría de forma irreparable.

"Fumar" suena impresionante, pero los ataques fatales menos obvios siguen siendo fatales y mucho más difíciles de detectar.

    
respondido por el gbulmer
5

Una fuente potencial de dicha destrucción es el bloqueo de SCR, donde los transistores no intencionados (intrínsecos) en un chip se juntan para formar un tipo de TRIAC que puede acumular mucha corriente. Esto puede dañar fácilmente los cables de unión, e incluso he visto dispositivos encapsulados de plástico visiblemente deformados debido al calor producido.

La causa típica es conducir (incluso momentáneamente) una entrada por encima o por debajo de los rieles de suministro o tierra, respectivamente, pero creo que podría ver que sucede si una entrada se deja flotando. Y entonces no es difícil imaginar un circuito en el que la entrada flotante fuera controlada por software (aunque eso sería algo muy tonto).

    
respondido por el tkp
4

Es POSIBLE que el software escrito intencionalmente para este propósito, dirigido a un procesador muy específico, pueda forzar el overclocking hasta el punto en el que el procesador se sobrecalentaría. Por supuesto, siempre que el procesador contenga registros de control de reloj configurables por software.

NO es posible que TODOS los procesadores puedan dañarse de esta manera, por supuesto. Si eso fuera cierto, habría habido miles de millones de Z80 y 6800 y 6502 dejados a un lado por los informáticos que todavía escribían en el camino cuando todavía estábamos escribiendo el código de la máquina manualmente, cometiendo muchos errores aleatorios.

    
respondido por el TDHofstetter
3

Esta es mi entrada para arruinar un microcontrolador con la menor cantidad de piezas posible ...

¡Solo alterna los pines de salida a unos pocos kHz!

Sin embargo, es posible que no veas humo, dependiendo del modo de falla interna.

simular este circuito : esquema creado usando CircuitLab

--Editar, agregado el 22 de agosto--

Ahora, no creo que pueda arruinar un microcontrolador con los criterios dados. Pero puede FÁCILMENTE arruinar los circuitos externos con el código incorrecto. Un ejemplo que me viene a la mente es un simple convertidor de impulso que diseñé recientemente ... simplemente pausar el código mientras que la depuración podría hacer que un inductor deje de funcionar a través de un MOSFET. POOF

    
respondido por el Daniel
2

En términos de código de modo de usuario regular, no creo que puedas escribir nada que rompa el chip.

Sin embargo, sí recuerdo los días de microprocesadores que podrían destruirse en menos de un minuto o incluso segundos si el disipador de calor se cayera. Luego agregaron circuitos de detección térmica que reducirían la velocidad del reloj si la parte se calentara demasiado. Ahora que podemos instalar muchos más transistores de los que se pueden usar a la vez, los chips son capaces de generar más calor del que el disipador de calor puede disipar y su administración de energía y los circuitos térmicos lo mantienen seguro. Por ejemplo, consulte Intel Turbo Boost 2.0 . Por lo tanto, parece bastante posible derretir un chip si puedes evitar o aumentar el límite en la administración de energía y el circuito térmico. Entonces, si estos están bajo el control del software (¿no tiene idea; tal vez requiere una actualización del BIOS?), Entonces podría ejecutar un montón de bucles paralelos de no hacer nada, junto con el trabajo integrado de la GPU, junto con la decodificación y codificación de hardware H.264, y cualquier otra cosa que pueda hacer el chip, todo a la vez hasta que el chip se sobrecaliente y emita el humo azul mágico.

    
respondido por el Dithermaster
2

Estoy más familiarizado con los procesadores STM32, por lo que estos se aplican más a esa familia. Pero también pueden ser posibles enfoques similares con otros procesadores:

  1. Hay un modo permanente de protección contra escritura. Entonces, si programa ese bit y algún programa inútil para el FLASH, la MCU nunca podrá volver a usarse. No sé si esto cuenta como 'bricking', pero implica un mecanismo de hardware permanente.

  2. Los pines de programación son reconfigurables como GPIO. Debido a que el pin de reloj es accionado por el dispositivo de programación, esto podría usarse para causar un cortocircuito. Lo más probable es que se rompa ese único pin, que ser un pin de programación sería bastante malo.

  3. Como mencionó dirkt, las PLL pueden usarse para overclockear el procesador. Esto podría causar que se sobrecaliente o se dañe.

respondido por el jpa
1

¿Quién dijo que eso no comprende qué tan involucrado está el proceso de diseño de dichos chips? Eso no significa que no se produzca un deslizamiento y que la cobertura de código de las regresiones y los casos de esquina a veces se pierda, pero afirmar que TODOS o incluso la mayoría de los procesadores tienen esta falla es lógicamente dudoso.

Solo pregúntate, qué sucede cuando un over-clocker excede los requisitos de tiempo (suponiendo que no se sobrecaliente). el chip falla, y tal vez corrompe la memoria e incluso el acceso a la unidad de disco duro pero, fundamentalmente, el procesador se reiniciará de nuevo e incluso ejecutará el sistema operativo nuevamente si se soluciona la corrupción. Entonces, ¿qué tipo de microcódigo diseñado correctamente podría causar MÁS interrupciones que este escenario? - respuesta muy probable ninguno.

TLDR; Todos los procesadores tienen este fallo: NOT

    
respondido por el placeholder
1

Creo que es ciertamente posible destruir físicamente un microcontrolador (MC) con software. Todo lo que se requiere es la combinación del MC para ejecutar un ciclo de instrucciones "ajustado" que causa el 100% de utilización, y un disipador de calor "defectuoso" que permite que el calor dentro del chip construir. Si la falla lleva segundos, minutos u horas, dependerá de qué tan rápido se acumule el calor.

Tengo una computadora portátil que solo puedo usar en un 50% de uso continuo. Si excedo esto, la computadora se apaga. Esto significa que al 50% de uso, la temperatura del MC está por debajo del punto de activación establecido. A medida que aumenta el uso, la temperatura del MC aumenta hasta que se alcanza el punto de disparo. Si el circuito de apagado térmico no funcionara (o no tuviera uno), la temperatura del MC continuaría aumentando hasta que se destruyera.

    
respondido por el Guill
0

simular este circuito : esquema creado usando CircuitLab

#include <avr/io.h>

int main(void)
{
    DDRB |= _BV(2) | _BV(4);
    PORTB |= _BV(2);
    PORTB &= ~_BV(4);
    for (;;);
}

El código anterior hace que la MCU presione PB2 alto mientras baja PB4, y esto crea un cortocircuito de VDD a PB2 a PB4 a GND y rápidamente los controladores de puertos de PB2 y / o PB4 se freirán. El cortocircuito puede ser un error inocente como un puente de soldadura accidental.

    
respondido por el Maxthon Chan

Lea otras preguntas en las etiquetas