Можно ли физически уничтожить микроконтроллер с помощью программного обеспечения?


29

Предположения:

  • Внешняя схема не подключена (кроме схемы программирования, которую мы считаем правильной).
  • ОК не неисправен.
  • Под уничтожением я подразумеваю выпустить синий дым смерти, а не брикетировать его в программном обеспечении.
  • Это "нормальный" ОК. Не какое-то очень странное устройство, предназначенное для конкретных целей.

Кто-нибудь видел когда-нибудь подобное? Как это возможно?

Задний план:

Спикер собрания, которому я помог, сказал, что это возможно (и даже не так сложно) сделать это, и некоторые другие люди согласились с ним. Я никогда не видел, чтобы это произошло, и когда я спросил их, как это возможно, я не получил реального ответа. Мне действительно любопытно сейчас, и я хотел бы получить обратную связь.


3
Единственный возможный способ для этого, IMO, - это если физически подключен вывод к VCC / COM, и указанный вывод настроен так, что он приводится в движение противоположно тому, к чему он подключен, вызывая состояние перегрузки по току. Но это объединенная неудача HW / SW.
Шамтам

6
Многие контроллеры имеют флэш-память, которая может быть записана под программным управлением и подвержена износу. Будет ли программное обеспечение, изнашивающее память за короткий промежуток времени, считаться «уничтожающим» чип?
суперкат

1
Помимо поддержки наблюдения @ supercat по поводу EEPROM или износа флэш-памяти (возможно изнашивание EEPROM за несколько минут), я добавлю, что во многих случаях очень мало различий между pov пользователя между физически разрушенным устройством и "кирпичом" ' продукт. Если он должен вернуться на завод, он выглядит примерно так же.
Спехро Пефхани

1
Остерегайтесь бесконечной двоичной петли n-й сложности . Это было вокруг целую вечность ...
Джиппи

3
@Roh Я уже сжег чип, потому что аппаратник поменял местами контакты Vcc и GND на печатной плате. (Я думаю, что он думал, что чип был каплей замены ... Это не было.) Был дым и сгоревший пластик. Это продлилось недолго, но проволока может пережить это, по-видимому.
Мишёси

Ответы:


20

Конечно, вы можете с инструкцией HCF !

Тем не менее, я говорю, что это невозможно без каких-либо внешних схем, кроме питания и тому подобное.

Даже включение некоторых преднамеренно неисправных соединений, возможно, не обрезает его: если вы привязываете все gpi к шине питания, устанавливая их как выход (к противоположной шине питания), которые могут рассеивать довольно много энергии. Вывод GPIO, вероятно, защищен от короткого замыкания, поэтому ничего страшного не произойдет.

Проектирование внешней схемы, которая разрушает микросхему по своему желанию, на мой взгляд, тоже не тривиально. Первое, что приходит на ум, - это источник питания высокого напряжения, nmos и резистор:

схематический

смоделировать эту схему - Схема, созданная с использованием CircuitLab Где:

  • являются обычным питанием для микро-, некоторые 3v3 до 5В или всечто необходимоVCС
  • HV является источником питания, напряжение которого значительно выше абсолютного максимального значения микро
  • D1 защищает ваш ценный источник напряжения 3V3
  • R1 поднимает ворота Mosfet высоко, когда микро не удерживает их на земле
  • М1 - назначенный убийца

Операция проста: если микро-релизы GPIOx M1 включаются, Vcc поднимается и ваш чип загорается. Обратите внимание, что это дерьмовая установка, например, HV необходимо включить после того, как вы будете уверены, что GPIOx надежно закреплен на земле. Некоторым транзисторам может не понравиться напряжение -5 В и т. Д. Но вы получите картину.


3
люблю ссылку HCF.
заполнитель

Эй, спасибо, что дали мне новый сериал, чтобы проверить!
OJFord

@OllieFord Я не уверен, о чем ты говоришь ...
Владимир Краверо


15

Отказ от ответственности: суперкат сказал, что сначала в комментарии.

На самом деле, невозможно физически уничтожить большинство микроконтроллеров, но его можно носить достаточно, чтобы начать работать со сбоями до такой степени, что он станет непригодным для использования. У меня есть опыт работы с MSP430 от TI.

Эти MCU позволяют перепрограммировать всю вспышку в любое время. Мало того, что флэш-память можно носить, перезаписывая ее миллионы раз до тех пор, пока она не выйдет из строя, но встроенный в чип генератор программирования флэш-памяти может вызвать сбой в процессоре нижнего уровня, если генератор программирования неправильно настроен. Это допустимый диапазон частот, разрешенных для программирования. При выходе за пределы этого диапазона (медленнее) время программирования может стать чрезмерно большим и привести к выходу из строя ячеек флэш-памяти. После всего лишь нескольких сотен циклов можно «сжечь» ячейки вспышки, что приведет к необратимому выходу из строя.

Кроме того, некоторые модели позволяют разогнать ядро, увеличивая внутреннее напряжение до более высокой скорости. MCU работает от источника питания 1,8-3,6 В, но само ядро ​​рассчитано на работу от 1,8 В. Если вы слишком сильно разогнали ядро ​​на шине питания 3,6 В, переключая все входы / выходы, активируя все периферийные устройства и работая на частоте 40 МГц (обычно это максимум 25 МГц на больших моделях) в небольшом закрытом корпусе, вы можете обжечь ядро из-за перегрева. На самом деле некоторые ребята сказали, что они достигли этих частот (обычно DCO отказывает раньше и чип сохраняется, но хорошо ... возможно).

Просто попробуйте?


nit-pick - я считаю, что большинство флеш-накопителей гарантированно работают не более чем на 10 000 операций записи, а не на «миллионах». Вероятно, не стоит исправлять, поскольку вы делаете точку.
gbulmer

2
Ах ... Флэш носить. Я помню первый раз, когда у меня была ошибка, которая вызывала постоянные записи в EEPROM на картинке. Все это заняло около 10 секунд времени пробега. Мне потребовалось около минуты, чтобы понять, что произошло :-)
slebetman

6

Согласно stackexchange - «Это действительно плохая идея, чтобы оставить входной контакт MCU плавающим?»

Он описывает несколько обстоятельств, при которых микросхема может быть повреждена контактом разомкнутой цепи. Редактировать: пример Spansion Analog и Microcontroller Products говорит:

4.1 Порт ввода / Неиспользуемые
выводы цифрового ввода / вывода Настоятельно рекомендуется не оставлять цифровые выводы ввода / вывода не подключенными, пока они переключаются на вход. В этом случае эти контакты могут войти в так называемое плавающее состояние. Это может вызвать высокий ток ICC, что неблагоприятно для режимов с низким энергопотреблением. Также может произойти повреждение MCU.

Условием в этом вопросе является разомкнутая цепь.

Таким образом, наша задача состоит в том, чтобы управлять , что с мая в будет повредить штифт. Я думаю, что этого достаточно, чтобы выйти за рамки «кирпича».

Один механизм, идентифицированный в этом ответе, приводит входной вывод к напряжению среднего значения, когда оба дополняющих транзистора включены. При работе в этом режиме интерфейс контактов может перегреваться или выходить из строя.

Входной контакт имеет очень высокий импеданс, а также является конденсатором. Предположительно, у них достаточно связи между соседними контактами, чтобы переключение соседних контактов достаточно быстро могло привести заряд на входной контакт и выдвинуть его в это «горячее» состояние. Может быть, половина выводов ввода / вывода, переведенных в это состояние, нагреет чип достаточно, чтобы вызвать повреждение?

(Существует ли режим, в котором емкость контакта с разомкнутой цепью может использоваться как удвоитель напряжения? Хмм.)

Я также думаю, что разрушительной вспышки достаточно. Я думаю, что это достаточно плохо, чтобы сделать чип бесполезным.

Это не обязательно должна быть вспышка, а только страница, содержащая векторы Power-on, RESET и т. Д. Ограничение на одну страницу может занять несколько десятков секунд.

У меня было указание, но нет веских доказательств), что для некоторых микроконтроллеров это может быть хуже. Я присутствовал на презентации пару лет назад. Кто-то спросил, почему конкуренты предлагали запчасти с гораздо более высокими циклами записи на флэш-память. Ведущий (крупный неназванный производитель микроконтроллеров) сказал, что они использовали гораздо более консервативный подход в своих спецификациях флэш-памяти. Он сказал, что их гарантия была определена при значительно более высокой температуре, чем была отраслевая норма. Кто-то спросил "ну и что". Выступающий сказал, что продукты нескольких производителей будут иметь значительно меньший срок службы, чем их детали при той же температуре, что и при использовании. Мое воспоминание было 5x станет <1x. Он сказал, что это очень нелинейно. Я понял, что программирование на 80C вместо 25C будет «плохой вещью».

Таким образом, перезапись флэш-памяти в сочетании с очень горячей микросхемой может также сделать ее бесполезной менее чем за 10 секунд.

Редактировать:
я думаю, что "выпустить синий дым смерти" является более жестким ограничением, чем требуется. Если какая-либо из цепей контактов RESET, детектор отключения, схема включения питания, RC или кварцевый генератор (и, возможно, несколько других цепей) могут быть повреждены, микросхема станет бесполезной.

Как уже отмечали другие, разбитая вспышка убьет и ее непоправимо.

«Дым» звучит впечатляюще, но менее очевидные смертельные атаки все еще смертельны, и их гораздо труднее обнаружить.


5

Одним из потенциальных источников такого разрушения является защелка SCR, где непреднамеренные (встроенные) транзисторы в микросхеме собираются вместе, образуя своего рода TRIAC, который затем может поглощать большой ток. Это может легко взорвать соединительные провода, и я даже видел устройства в пластиковом корпусе, явно искаженные из-за выделяемого тепла.

Типичная причина - вождение (даже на мгновение) входа выше или ниже рельсов питания или заземления соответственно, но я думаю, вы могли бы увидеть, что это произошло, если бы вход оставался плавающим. И тогда нетрудно представить схему, в которой плавающая способность входа контролировалась программным обеспечением (хотя это было бы очень глупо разрешить).


4

ВОЗМОЖНО, что программное обеспечение, специально предназначенное для этой цели и предназначенное для очень специфического процессора, может вызвать разгон до такой степени, что процессор перегреется. При условии, конечно, что процессор содержит программно-конфигурируемые регистры управления часами.

Конечно, НЕ ВСЕ могут быть повреждены ВСЕ процессоры. Если бы это было правдой, то были бы миллиарды Z80, 6800 и 6502, оставленные на обочине небрежным написанием программного обеспечения, когда мы еще печатали машинный код вручную, совершая множество случайных ошибок.


2
Вам не нужен доступ для настройки часов. Вам просто нужно запускать программное обеспечение так, как этого не предполагал разработчик процессора. Вот некоторый код, который пытается достичь теоретических 4 FLOPS за такт на процессоре серии Intel Core: stackoverflow.com/questions/8389648/… . Известно, что этот код перегревает процессоры.
slebetman

1
Это связано с программами "power virus" ?
Дэвидкари

1
@ davidcary, это новый термин для меня. Я имел в виду, однако, не серию инструкций, требующих тактовой частоты, а скорее фактическое изменение тактовой частоты (некоторые процессоры поддерживают программное управление тактовой частотой посредством манипуляции с регистрами управления) на более высокую частоту, чем процессор или его радиатор может иметь дело с.
TDHofstetter

3

Это моя статья о разрушении микроконтроллера с как можно меньшим количеством деталей ...

Просто переключите выходные контакты на несколько кГц!

Вы все еще можете не видеть дым, в зависимости от внутреннего режима отказа, хотя.

схематический

смоделировать эту схему - схема, созданная с использованием CircuitLab

Редактировать, добавлено 22 августа

Теперь я не думаю, что вы можете испортить микроконтроллер с учетом критериев. Но вы можете легко испортить внешнюю схему с неправильным кодом. Пример, который приходит на ум, - это простой повышающий преобразователь, который я недавно разработал ... простая приостановка кода во время отладки может привести к замыканию индуктора на массу через MOSFET. пуф


2
Я не хочу быть «тем парнем», но предположение № 1: «Внешние схемы не подключены»
Радиан

1
Ты "тот парень". Подтекст этого ответа: «Нет, вы не можете испортить такой чип».
Даниэль

2

С точки зрения обычного кода пользовательского режима, я не думаю, что вы можете написать что-нибудь, что сломает чип.

Тем не менее, я помню дни микропроцессоров, которые могли быть разрушены менее чем за минуту или даже секунды, если радиатор упал. Затем они добавили схемы термического обнаружения, которые выключали бы часы, если деталь становилась слишком горячей. Теперь, когда мы можем установить гораздо больше транзисторов, чем можно использовать за один раз, микросхемы способны выделять больше тепла, чем теплоотвод может рассеивать, а также благодаря управлению питанием и тепловым цепям, которые обеспечивают его безопасность. Например, см. Intel Turbo Boost 2.0, Поэтому кажется вполне возможным расплавить микросхему, если вы можете обойти или поднять ограничение на управление питанием и тепловую цепь. Итак, если они находятся под программным контролем (не знаю; может быть, это требует обновления BIOS?), Вы можете запустить несколько параллельных циклов бездействия, встроенную работу с графическим процессором, аппаратное декодирование и кодирование H.264, и все, что чип может сделать, все сразу, пока чип не перегреется и не испустит волшебный синий дым.


2

Я больше всего знаком с процессорами STM32, поэтому они наиболее применимы к этому семейству. Но подобные подходы могут быть возможны и с другими процессорами:

  1. Существует постоянный режим защиты от записи. Поэтому, если вы запрограммируете этот бит и какую-нибудь бесполезную программу на FLASH, MCU никогда не сможет использоваться снова. Я не знаю, считается ли это «кирпичом», но это требует постоянного аппаратного механизма.

  2. Контакты для программирования можно перенастраивать как GPIO. Поскольку тактовый вывод управляется устройством программирования, это может быть использовано для короткого замыкания. Скорее всего, это сломало бы тот единственный вывод, который был бы плохим программирующим выводом.

  3. Как упомянуто dirkt, PLL можно использовать для разгона процессора. Это может привести к его перегреву или повреждению.


1

Кто когда-либо говорил, что не понимает, насколько сложным является процесс проектирования таких чипов. Это не означает, что ошибки не случаются, и что покрытие кода регрессии и угловых случаев иногда пропускает некоторые вещи, но сделать заявление о том, что ВСЕ или даже большинство процессоров имеют этот недостаток, логически сомнительно.

Просто спросите себя, что происходит, когда время наработки часов превышает требования по времени (при условии, что оно не перегревается). чип выходит из строя и, возможно, портит память и даже доступ к жестким дискам, но в основном процессор снова запускается и даже запускает ОС снова, если повреждение устранено. Так какой вид правильно сконструированного микрокода может вызвать БОЛЬШЕ разрушения, чем этот сценарий? - Скорее всего, нет ответа.

TLDR; Все процессоры имеют эту ошибку - НЕ


Я считаю, что некоторые / большинство процессоров микроконтроллеров (по объему, а не по стоимости) не имеют микрокодирования. Так что это опровергает ваше предположение?
gbulmer

Нет, независимо от того, разрабатываете ли вы секвенсор или ячейку с фиксированной целью, регрессии и ограничения / тесты в проекте будут жесткими.
заполнитель

Для того, чтобы образовался синий дым, процессор так или иначе перегрелся бы. Либо, испытав очень высокое напряжение, испытав очень большой ток, испытав обратную полярность или испытав слишком сильные, транзисторы могут переключаться на слишком высокую частоту. Только последний метод выполним в программном обеспечении. Процессоры, работающие на частотах ниже 500 МГц, вряд ли умрут из-за перегрева, вызванного программным обеспечением, но я видел, что процессоры умирают из-за перегрева, вызванного программным обеспечением Предположение, которое вы сделали, именно то, что вы не должны.
Slebetman

@slebetman, вы слишком много разных вещей смешиваете здесь. Как получить «обратную полярность» с помощью инструкций программного обеспечения? Как можно получить «слишком много переключений на слишком высокой частоте»? Может быть, есть магический недостаток во всех чипах, которые превращают их в массивно параллельные конвейеры исполнения?
заполнитель

@placeholder: Я сказал, что вы не можете получить обратную полярность с помощью инструкций программного обеспечения. Вы читали мой комментарий?
Slebetman

1

Я считаю, что, безусловно, возможно физически уничтожить микроконтроллер (MC) с помощью программного обеспечения. Все, что требуется, - это комбинация MC для выполнения «плотного» цикла инструкций, которые вызывают 100% -ное использование, и «дефектного» радиатора, который позволяет накоплению тепла внутри чипа. Вопрос о том, как быстро будет накапливаться тепло, зависит от того, займет ли это секунды, минуты или часы.

У меня есть ноутбук, который я могу использовать только на 50% непрерывного использования. Если я превышаю это, компьютер выключается. Это означает, что при использовании 50% температура MC ниже установленной точки запуска. По мере увеличения использования температура MC увеличивается, пока не будет достигнута точка срабатывания. Если цепь термического отключения не работает (или не имеет ее), температура MC будет расти до тех пор, пока он не будет разрушен.


0

схематический

смоделировать эту схему - схема, созданная с использованием CircuitLab

#include <avr/io.h>

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

Приведенный выше код заставляет MCU выдвигать высокий уровень PB2, а низкий уровень PB4, и это создает короткое замыкание от VDD к PB2 до PB4 к GND, и драйверы портов PB2 и / или PB4 быстро срабатывают. Короткое замыкание может быть невинной ошибкой, такой как случайная пайка моста.


Я скептически отношусь к тому, что это сработает. Выводы ввода-вывода обычно не могут быть источником или потреблять большое количество тока. IO драйвер транзисторов будет ограничивать ток.
Адам Хаун

@AdamHaun Проблема в том, что в настоящее время ограничения отсутствуют. Здесь происходит то, что эта схема может сжечь эти транзисторы.
Maxthon Chan

Ограничение тока зависит от размера и напряжения затвора выходных управляющих транзисторов. Возможно, 5V AVR может перегореть драйверы, но, глядя на типичные графики мощности драйверов ATMega, с 3V Vcc, закорачивая два контакта вместе, может даже не превысить абсолютный максимальный ток контакта. И ток падает при высокой температуре! MCU с более низким энергопотреблением, вероятно, будет в порядке.
Адам Хаун
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.