소프트웨어로 마이크로 컨트롤러를 물리적으로 파괴 할 수 있습니까?


29

가정 :

  • 외부 회로가 연결되어 있지 않습니다 (프로그래밍 회로가 아닌 것으로 가정).
  • uC에 결함이 없습니다.
  • 내가 파괴한다는 것은 파란 연기를 방출하는 것을 의미합니다.
  • "정상적인"uC입니다. 매우 이상한 1 백만 분의 1의 매우 특정한 장치는 아닙니다.

그런 일을 본 사람이 있습니까? 그게 어떻게 가능해?

배경:

내가 도와 준 밋업의 한 연사는이 일을하는 것이 가능하다고 말했고 다른 사람들도 그에 동의했다. 나는 이런 일이 발생하는 것을 본 적이 없으며 어떻게 가능한지 물었을 때 진정한 답을 얻지 못했습니다. 정말 궁금해서 피드백을 받고 싶습니다.


3
이것이 일어날 수있는 유일한 방법 인 IMO는 핀이 VCC / COM에 물리적으로 연결되어 있고 핀이 연결된 것과 반대로 구동되어 과전류 상태를 유발하는 경우입니다. 그러나 그것은 HW / SW의 결합 실패입니다.
Shamtam

6
많은 컨트롤러에는 소프트웨어 제어하에 작성 될 수있는 플래시가 있으며 마모 될 수 있습니다. 짧은 시간 내에 메모리를 착용 한 소프트웨어가 칩을 "파괴"하는 것으로 간주합니까?
supercat

1
EEPROM 또는 플래시 마모 (몇 분 안에 EEPROM을 마모 할 수 있음)에 대한 @supercat의 관찰을 두 번째로 제외하고, 물리적으로 파괴 된 장치와 '벽돌 사이의 거리는 사용자 POV와 많은 차이가 거의 없다고 덧붙입니다. '제품. 공장으로 돌아 가야한다면 거의 똑같아 보입니다.
Spehro Pefhany

1
n 번째 복잡성 무한 이진 루프에 주의하십시오 . 그것은 주변에 있었다 ...
jippie

3
@Roh 하드웨어 칩이 Vcc와 GND 핀을 PCB에서 교체했기 때문에 이미 칩을 태웠다. (그는 칩이 대체품으로 떨어 졌다고 생각하지만 ... 그렇지 않았습니다.) 연기가 나고 플라스틱이 태어났습니다. 오래 지속되지는 않았지만 전선은 분명히 살아남을 수 있습니다.
Mishyoshi

답변:


20

물론 HCF 명령으로 할 수 있습니다 !

즉, 외부 회로가 없으면 전원 등을 제외하고는 불가능하다고 말합니다.

의도적으로 결함이없는 일부 연결을 포함하더라도 연결이 끊어지지 않을 수 있습니다. 모든 gpios를 파워 레일에 연결하는 경우 많은 전력을 소비 할 수있는 출력 (반대 파워 레일)으로 설정하십시오. gpio 핀은 아마도 단락으로부터 보호되므로 해로운 것은 발생하지 않습니다.

내 생각에 칩을 파괴하는 외부 회로를 설계하는 것도 사소한 일이 아니다. 가장 먼저 떠오르는 것은 다소 고전압 전원 공급 장치, nmos 및 저항이 필요합니다.

개략도

이 회로를 시뮬레이션 - 도식을 사용하여 만든 CircuitLab 어디 :

  • 는 마이크로, 3v3 ~ 5V 또는 필요한 모든 것에 대한 일반적인 공급VCC
  • HV는 전압이 마이크로의 절대 최대 정격보다 훨씬 높은 공급 장치입니다.
  • D1은 귀중한 3V3 전압 소스를 보호합니다
  • 마이크로가 접지를 유지하지 않을 때 R1이 MOSFET 게이트를 위로 당긴다
  • M1은 지정된 살인자입니다

마이크로 릴리스 GPIOx M1이 켜지면 Vcc가 상승하고 칩에 불이 붙습니다. GPIOx가지면에 단단히 고정되어 있는지 확인한 HV를 켜야합니다 . 일부 트랜지스터는 -5V Vgs 등이 마음에 들지 않을 수도 있지만 ...


3
HCF 레퍼런스를 좋아합니다.
플레이스 홀더

체크 아웃 할 새 TV 시리즈를 제공해 주셔서 감사합니다.
OJFord

@OllieFord 나는 당신이 무슨 말을하는지 모르겠어요 ...
Vladimir Cravero


15

면책 조항 : supercat은 코멘트에서 처음으로 말했습니다.

실제로 대부분의 MCU를 물리적으로 파괴 할 수는 없지만 사용할 수없는 지점까지 오작동을 시작할 수있을 정도로 충분히 마모 될 수 있습니다. TI의 MSP430에 대한 경험이 있으므로 다음과 같습니다.

이러한 MCU를 사용하면 언제든지 전체 플래시를 다시 프로그래밍 할 수 있습니다. 플래시가 고장날 때까지 수백만 번 플래시를 다시 써서 플래시를 착용 할 수있을뿐만 아니라 프로그래밍 생성기가 잘못 구성된 경우 온칩 플래시 프로그래밍 생성기가 로우 엔드 프로세서에서 고장을 일으킬 수 있습니다. 프로그래밍에 허용되는 허용 주파수 범위입니다. 이 범위를 벗어나면 (느리게) 프로그래밍 시간이 너무 길어지고 플래시 셀이 고장날 수 있습니다. 단 수백주기 후에 플래시 셀을 "굽기"하여 영구적 인 고장을 일으킬 수 있습니다.

또한 일부 모델에서는 코어를 오버 클로킹하여 내부 전압을 높여 더 높은 속도에 도달 할 수 있습니다. MCU는 1.8-3.6V 전압 공급 장치에서 작동하지만 코어 자체는 1.8V에서 작동하도록 설계되었습니다. 3.6V 전원 레일에서 코어를 너무 많이 오버 클럭하고 모든 I / O를 토글하고 모든 주변 장치를 활성화하고 작은 닫힌 경우 40MHz (대형 모델의 경우 최대 25MHz)에서 실행하는 경우 과열로 인한 코어. 실제로 일부 사람들은 그 주파수를 달성했다고 말했습니다 (일반적으로 DCO는 실패하고 칩은 절약되지만 아마도 ...).

먹어봐?


nit-pick-대부분의 플래시는 "수백만"이 아닌 10,000 회의 쓰기 작업을 보장합니다. 아마도 당신이 요점을 정할 때 고칠 가치가 없습니다.
gbulmer

2
아 .. 플래시 마모. 사진에서 EEPROM에 지속적으로 쓰는 버그가 발생한 것을 처음 기억합니다. 소요 시간은 10 초 정도였습니다. :-)
slebetman

6

stackexchange 에 따르면 - "MCU 입력 핀을 떠 다니는 것은 정말 나쁜 생각입니까?"

개방 회로 핀으로 인해 칩 손상 될 수 있는 몇 가지 상황에 대해 설명 합니다. 편집 : 스팬션 아날로그 및 마이크로 컨트롤러 제품 의 예 는 다음 같습니다.

4.1 포트 입력 / 사용하지 않은 디지털 I / O 핀 디지털 I / O 핀
이 입력으로 전환되는 동안 연결되지 않은 상태로 두지 않는 것이 좋습니다. 이 경우 이러한 핀은 소위 플로팅 상태가 될 수 있습니다. 이로 인해 ICC 전류가 높아져 저전력 모드에 불리 할 수 ​​있습니다. 또한 MCU가 손상 될 수 있습니다.

이 질문의 조건은 정확히 개방 회로 핀입니다.

그래서, 우리의 작업에서 해당 드라이브하는 것입니다 5 월한다 핀을 손상. 나는 그것이 '벽돌'을 뛰어 넘기에 충분하다고 생각합니다.

이 답변에서 확인 된 메커니즘 중 하나는 입력 핀을 중간 값 전압으로 구동하는 것인데, 여기서 두 상보 형 트랜지스터는 모두 '켜짐'입니다. 해당 모드에서 작동하면 핀 인터페이스가 뜨거워 지거나 고장날 수 있습니다.

입력 핀은 임피던스가 매우 높고 커패시터이기도합니다. 아마도 인접한 핀 사이를 충분히 빠르게 토글하면 입력 핀에 전하를 공급하여 '핫'상태로 밀어 넣을 수 있습니다. 해당 상태로 구동되는 I / O 핀의 절반이 칩을 데워서 손상 될 수 있습니까?

(공개 cirrcuit 핀의 커패시턴스가 전압 배가처럼 사용될 수있는 모드가 있습니까? Hmm)

또한 플래시 손상이 충분하다고 생각합니다. 나는 그것이 칩을 쓸모 없게 만들 정도로 나쁘다고 생각합니다.

플래시 일 필요는 없지만 Power-on, RESET 등 벡터가 포함 된 페이지 만 있습니다. 단일 페이지의 한계는 수십 초가 걸릴 수 있습니다.

일부 MCU의 경우 더 나쁠 수 있다는 표시가 있지만 확실한 증거는 없습니다. 나는 2 년 전에 발표에 참석했다. 어떤 사람은 왜 경쟁 업체가 더 높은 플래시 쓰기주기를 가진 부품을 제공했는지 물었습니다. (명명없는 MCU 제조업체의) 발표자는 플래시 메모리 사양에서 훨씬 더 보수적 인 접근 방식을 취했다고 말했다. 그는 보증이 업계 표준보다 훨씬 높은 온도에서 정의되었다고 말했다. 누군가가 "그렇게 무엇을"물었다. 이 스피커는 여러 제조업체 제품이 사용한 것과 동일한 온도에서 부품보다 재기록 수명이 현저히 낮을 것이라고 말했다. 내 기억은 5 배였으며 <1 배가되었습니다. 그는 그것이 매우 비선형 적이라고 말했다. 25C 대신 80C로 프로그래밍하는 것이 "나쁜 일"이라는 것을 의미한다고 생각했습니다.

따라서 매우 뜨거운 칩과 결합 된 플래시 재 작성은 10 초 이내에 쓸모 없게 만들 수도 있습니다.

편집 :
"죽음의 푸른 연기를 방출"이 필요보다 어려운 제약이라고 생각합니다. RESET 핀 회로, 브라운 아웃 감지기, 파워 업 회로, RC 또는 수정 발진기 (및 다른 회로)가 손상 될 수 있으면 칩이 쓸모 없게됩니다.

다른 사람들이 지적했듯이, 플래시를 깨는 것은 돌이킬 수 없을 정도로 죽일 것입니다.

"연기"는 인상적으로 들리지만 치명적인 공격은 여전히 ​​치명적이지 않으며 감지하기가 훨씬 어렵습니다.


5

이러한 파괴의 잠재적 원인 중 하나는 칩의 의도하지 않은 (내재적) 트랜지스터가 모여 일종의 TRIAC을 형성하여 많은 전류를 싱크 할 수있는 SCR 래치 업입니다. 이것은 쉽게 본드 와이어를 날려 버릴 수 있으며, 열로 인해 플라스틱으로 싸인 장치가 눈에 띄게 뒤틀리는 것을 보았습니다.

일반적인 원인은 공급 레일 또는 접지 레일 위 또는 아래로 각각 (순간적으로) 입력을 구동하는 것이지만 입력이 플로팅 상태 인 경우 발생할 수 있습니다. 그리고 입력의 부동성이 소프트웨어로 제어되는 회로를 상상하는 것은 어렵지 않습니다 (비록 어리석은 일이지만).


4

매우 특정한 프로세서를 대상으로 의도 된 목적으로 작성된 소프트웨어가 프로세서가 과열되는 지점까지 오버 클럭킹을 강제 할 수 있습니다. 물론, 프로세서에는 소프트웨어 구성 가능 클록 제어 레지스터가 포함되어 있습니다.

물론 모든 프로세서가 이런 식으로 손상 될 수는 없습니다. 그것이 사실이라면, 수십억 개의 Z80과 6800과 6502가 기계 코드를 수동으로 입력 할 때 소프트웨어를 쓰는 타이 로스를 방해하여 많은 실수를 범했습니다.


2
시계를 구성하기 위해 액세스 할 필요는 없습니다. CPU 디자이너가 구상하지 않은 방식으로 소프트웨어를 실행하면됩니다. 다음은 이론 (4)는 인텔 코어 시리즈 프로세서 사이클 당 FLOPS 달성하려고 몇 가지 코드입니다 stackoverflow.com/questions/8389648/...은 . 이 코드는 CPU를 과열시키는 것으로 알려져 있습니다.
slebetman

1
"파워 바이러스" 프로그램 과 관련이 있습니까?
davidcary

1
@ davidcary, 그것은 저에게 아주 새로운 용어입니다. 그러나 일련의 클럭 굶주린 명령어가 아니라 클럭 속도의 실제 변경 (일부 프로세서는 제어 레지스터 조작을 통해 클럭 속도에 대한 소프트웨어 제어를 지원함)을 CPU 또는 방열판보다 높은 주파수로 언급했습니다. 처리 할 수 ​​있습니다.
TDHofstetter

3

이것은 가능한 한 적은 수의 부품으로 마이크로 컨트롤러를 망칠 수있는 저의 입장입니다 ...

출력 핀을 몇 kHz로 토글하십시오!

내부 오류 모드에 따라 여전히 연기가 나타나지 않을 수 있습니다.

개략도

이 회로 시뮬레이션CircuitLab을 사용하여 작성된 회로도

-편집, 8 월 22 일 추가됨-

이제는 주어진 기준으로 마이크로 컨트롤러를 망칠 수 있다고 생각하지 않습니다. 그러나 잘못된 코드로 외부 회로를 쉽게 망칠 수 있습니다. 염두에 두는 예는 최근에 설계 한 간단한 부스트 컨버터입니다. 디버깅하는 동안 코드를 일시 중지하면 MOSFET이 MOSFET을 통해 접지로 단락 될 수 있습니다.


2
"그 사람"이되고 싶지 않지만 가정 # 1 : "외부 회로가 연결되어 있지 않습니다"
Radian

1
당신은 "그 사람"입니다. 이 응답의 하위 텍스트는 "아니요, 그런 칩을 망칠 수는 없습니다"입니다.
Daniel

2

일반 사용자 모드 코드의 관점에서 칩을 손상시키는 것을 작성할 수 있다고 생각하지 않습니다.

그러나 방열판이 떨어지면 1 분 또는 몇 초 안에 파괴 될 수있는 마이크로 프로세서의 시대를 기억합니다. 그런 다음 부품이 너무 뜨거워지면 클럭을 낮추는 열 감지 회로를 추가했습니다. 이제 한 번에 사용할 수있는 것보다 훨씬 많은 트랜지스터를 넣을 수있게되었으므로 칩은 방열판이 소멸 할 수있는 것보다 더 많은 열을 발생시킬 수 있으며 전원 관리 및 열 회로가 안전하게 유지됩니다. 예를 들어, Intel Turbo Boost 2.0을 참조하십시오. 따라서 전력 관리 및 열 회로의 한계를 우회하거나 높일 수 있다면 칩을 녹일 수 있습니다. 따라서 이것들이 소프트웨어 제어하에 있다면 (아무도; BIOS 업데이트가 필요할까요?) 하드웨어 H.264 디코딩 및 인코딩과 함께 통합 GPU 작업과 함께 수많은 병렬 수행 루프를 실행할 수 있습니다. 칩이 과열되어 매직 블루 스모크를 방출 할 때까지 칩이 할 수있는 다른 모든 작업 .


2

STM32 프로세서에 가장 익숙하므로이 제품군에 가장 많이 적용됩니다. 그러나 다른 프로세서에서도 비슷한 접근 방식이 가능할 수 있습니다.

  1. 영구적 인 쓰기 방지 모드가 있습니다. 따라서 해당 비트를 프로그래밍하고 쓸모없는 프로그램을 FLASH에 프로그래밍하면 MCU를 다시 사용할 수 없습니다. 이것이 '브릭 킹'으로 계산되는지는 모르겠지만 영구적 인 하드웨어 메커니즘과 관련이 있습니다.

  2. 프로그래밍 핀은 GPIO로 재구성 할 수 있습니다. 클럭 핀은 프로그래밍 장치에 의해 구동되므로 단락을 유발하는 데 사용될 수 있습니다. 아마도 프로그래밍 핀인 단일 핀을 깨뜨릴 수있을 것입니다.

  3. dirkt에서 언급했듯이 PLL을 사용하여 프로세서를 오버 클로킹 할 수 있습니다. 과열되거나 손상 될 수 있습니다.


1

디자인 프로세스가 칩과 얼마나 관련되어 있는지 이해하지 못한다고 말한 적이 있습니다. 그렇다고 슬립이 ​​발생하지 않고 회귀 및 코너 케이스의 코드 적용 범위가 때때로 누락되는 경우가 있지만 ALL 또는 대부분의 프로세서에이 결함이 있음을 나타내는 것은 논리적으로 모호합니다.

오버 클러 커가 타이밍 요구 사항을 초과하면 (과열되지 않은 경우) 어떻게되는지 스스로에게 물어보십시오. 칩이 고장 나면 메모리와 HDD 액세스가 손상 될 수 있지만 기본적으로 프로세서는 다시 작동하고 손상이 해결되면 OS를 다시 실행합니다. 그렇다면 어떤 종류의 올바르게 설계된 마이크로 코드가이 시나리오보다 더 많은 혼란을 야기 할 수 있습니까? -아마 대답하지 않을 것입니다.

TLDR; 모든 프로세서는이 오류가 - 하지


일부 / 대부분의 마이크로 컨트롤러 CPU (값이 아닌 볼륨)는 마이크로 코딩되지 않았다고 생각합니다. 그렇다면 그것은 당신의 가정을 무효화합니까?
gbulmer

아닙니다. 시퀀서 또는 고정 목적 셀을 설계하든 설계에 대한 회귀 및 제약 / 테스트는 엄격합니다.
플레이스 홀더

푸른 연기 퍼프가 발생하기 위해서는 CPU가 어떤 식 으로든 과열되었을 것입니다. 매우 높은 전압을 경험하거나, 높은 전류를 경험하거나, 역 극성을 경험하거나 너무 경험함으로써 트랜지스터가 너무 높은 주파수에서 스위칭 할 수 있습니다. 소프트웨어에서는 마지막 방법 만 수행 할 수 있습니다. 약 500MHz 미만으로 실행되는 CPU는 소프트웨어 과열로 인해 죽지 않을 수 있지만 소프트웨어 과열로 인해 CPU가 죽는 것을 보았습니다. 당신이 만든 가정은 당신이하지 말아야 할 것입니다.
slebetman

@ slebetman 당신은 여기에 너무 많은 것들을 부풀리고 있습니다. 소프트웨어 명령을 통해 어떻게 "역 극성"을 얻습니까? "너무 높은 주파수에서 너무 많은 스위칭을 얻는 방법"은 어떻게 모든 칩에 막대한 병렬 실행 파이프 라인으로 바뀌는 마법의 결함이 있습니까?
플레이스 홀더

@ placeholder : 나는 소프트웨어 지침을 통해 역 극성을 얻을 수 없다고 말했다. 내 의견을 읽었습니까?
slebetman

1

소프트웨어로 마이크로 컨트롤러 (MC)를 물리적으로 파괴 할 수 있다고 확신합니다. 필요한 모든 것은 상기 인 조합 원인을 100 % 활용하는 명령어 "타이트"루프를 수행 할 수있는 MC, 그리고 축적을 칩 내부의 열 수있는 "결함"방열판. 고장이 몇 초, 몇 분 또는 몇 시간이 걸리는지 여부는 열이 얼마나 빨리 축적되는지에 달려 있습니다.

랩톱 컴퓨터에 50 % 연속 사용률 만 사용할 수 있습니다. 이 값을 초과하면 컴퓨터가 종료됩니다. 이는 50 % 사용시 MC 온도가 설정된 트리거 포인트 미만임을 의미합니다. 사용량이 증가함에 따라 트리거 지점에 도달 할 때까지 MC 온도가 올라갑니다. 열 차단 회로가 작동하지 않거나 회로가 없으면 MC가 손상 될 때까지 MC 온도가 계속 올라갑니다.


0

개략도

이 회로 시뮬레이션CircuitLab을 사용하여 작성된 회로도

#include <avr/io.h>

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

위의 코드는 PB4를 끌어 당기는 동안 MCU가 PB2를 높게 밀어 내도록하며, 이로 인해 VDD에서 PB2로, PB4에서 GND 로의 단락이 발생하고 PB2 및 / 또는 PB4의 포트 드라이버가 빠르게 작동합니다. 단락은 우발적 인 납땜 브리지와 같은 순진한 오류 일 수 있습니다.


나는 이것이 효과가 있다고 회의적이다. IO 핀은 일반적으로 많은 양의 전류를 소싱하거나 싱크 할 수 없습니다. IO 드라이버 트랜지스터는 전류를 제한합니다.
Adam Haun

@AdamHaun 문제는 현재 제한이 없다는 것입니다. 여기서 일어나는 것은이 회로가 그러한 트랜지스터를 태울 수 있다는 것입니다.
Maxthon Chan

전류 제한은 출력 구동 트랜지스터의 크기와 게이트 전압에서 비롯됩니다. 어쩌면 5V AVR이 드라이버를 태워 버릴 수도 있지만 ATMega의 전형적인 드라이버 강도 차트를 보면 3V Vcc가 두 개의 핀을 단락 시키면 절대 최대 핀 전류를 초과하지 않을 수도 있습니다. 그리고 높은 온도에서 전류가 내려갑니다! 저전력 MCU는 아마도 좋을 것입니다.
Adam Haun
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.