ソフトウェアでマイクロコントローラーを物理的に破壊することは可能ですか?


29

仮定:

  • 外部回路は接続されていません(プログラミング回路以外、これは正しいと想定しています)。
  • uCに欠陥はありません。
  • 破壊するということは、ソフトウェアで破壊するのではなく、死の青い煙を放出することを意味します。
  • これは「通常の」uCです。非常に奇妙な100万分の1の非常に特殊なデバイスではありません。

そのようなことが起こるのを見たことがありますか?どうして可能ですか?

バックグラウンド:

私がミートアップのスピーカーは、これを行うことが可能であると言った(そしてそれほど難しくはなかった)と言い、他の何人かは彼に同意した。私はこれが起こるのを見たことがありません、そして、彼らにそれがどのように可能であったかを尋ねたとき、私は本当の答えを得ませんでした。私は今、本当に興味があり、フィードバックをもらいたいです。


3
これが発生する唯一の実現可能な方法であるIMOは、ピンが物理的にVCC / COMに接続されており、そのピンが接続先と反対に駆動されるように構成されている場合に、過電流状態を引き起こします。しかし、それはHW / SWを組み合わせた失敗です。
シャムタム14

6
多くのコントローラーには、ソフトウェアの制御下で書き込むことができ、摩耗する可能性のあるフラッシュがあります。短時間でメモリを使い果たしたソフトウェアは、チップを「破壊」するものとしてカウントされますか?
supercat

1
EEPROMまたはフラッシュの摩耗に関する@supercatの観察(2、3分でEEPROMが摩耗する可能性があります)を除いて、多くの場合、物理的に破壊されたデバイスと「ブリック」 ' 製品。工場に戻らなければならない場合、ほとんど同じように見えます。
スペロペファニー14

1
nth-complexity infinite binary loopに注意してください。それは...年齢の周りされている
jippie

3
@Rohハードウェアの人がPCBのVccピンとGNDピンを交換したので、私はすでにチップを焼きました。(私は彼がチップが交換品のドロップだったと思うが...そうではなかった。)煙と燃えたプラスチックがあった。それは長くは続かなかったが、ワイヤは明らかにこれに耐えることができる。
三好14

回答:


20

もちろん、HCF命令でできます!

そうは言っても、電源などを除いて、外部回路なしでは不可能です。

意図せずに故障した接続を含めても、おそらく切断されません。すべてのgpiosを電源レールに接続し、それらを出力として(反対の電源レールに)設定すると、非常に多くの電力が消費されます。gpioピンはおそらく短絡から保護されているため、有害なことは何も起こりません。

私の意見では、チップを自由に破壊する外部回路を設計することも簡単ではありません。最初に頭に浮かぶのは、やや高電圧の電源、nmos、および抵抗器です:

回路図

この回路をシミュレートする -回路図を使用して作成したCircuitLab どこ:

  • は、マイクロ、3v3から5V、または必要なものへの通常の電源です。VCC
  • HVは、マイクロの絶対最大定格をはるかに超える電源です。
  • D1は貴重な3V3電圧源を保護するためにあります
  • マイクロがグランドに保持していない場合、R1はMOSFETゲートをハイにします
  • M1は指定されたキラーです

操作は簡単です。マイクロリリースがGPIOx M1をオンにすると、Vccが上昇し、チップが発火します。これは安っぽいセットアップであることに注意してください。たとえば、GPIOxがしっかりと接地されていることを確認した後、 HVをオンにする必要があります。トランジスタによっては、-5V Vgsが気に入らない場合があります...などがわかります。


3
HCFリファレンスが大好きです。
プレースホルダー14

ねえ、チェックアウトする新しいテレビシリーズをくれてありがとう!
OJFord 14

...私はあなたが何を言ってるのかのいないよ@OllieFord
ウラジミールクラベロ


15

免責事項:supercatはコメントの最初にそれを言った。

実際には、ほとんどのMCUを物理的に破壊することはできませんが、使用できなくなるまで誤動作を開始するほど十分に着用することは可能です。TIのMSP430の経験があるため、ここで説明します。

これらのMCUを使用すると、いつでもフラッシュ全体を再プログラミングできます。フラッシュが失敗するまで何百万回も書き換えてフラッシュを装着できるだけでなく、プログラミングジェネレーターが正しく構成されていない場合、オンチップフラッシュプログラミングジェネレーターがローエンドプロセッサで障害を引き起こす可能性があります。これらは、プログラミングに許可される周波数の許容範囲です。その範囲から外れると(遅い)、プログラミング時間が極端に長くなり、フラッシュセルが故障する可能性があります。わずか数百サイクル後、フラッシュセルを「焼き付け」て永久的な故障を引き起こす可能性があります。

また、一部のモデルでは、コアをオーバークロックできるため、内部電圧を上げることでコアを高速化できます。MCUは1.8-3.6Vの電源で動作しますが、コア自体は1.8Vで動作するように設計されています。すべてのI / Oを切り替え、すべての周辺機器をアクティブにし、小さな閉じたケースで40MHz(大規模なモデルでは通常最大25MHz)で動作している間に、3.6V電源レールでコアをオーバークロックしすぎると、過熱のためのコア。実際に、彼らはそれらの周波数を達成したと言いました(通常、DCOは前に失敗し、チップは保存されますが、多分...)。

やってみなよ?


nit-pick-ほとんどのフラッシュは、「数百万」ではなく、10,000回以下の書き込みで動作することが保証されていると思います。おそらく修正する価値はありません。
gbulmer 14

2
ああ...フラッシュウェア。初めて写真を撮ってEEPROMに書き込みを続けるバグがあったことを覚えています。かかったのは実行時間の10秒程度でした。何が起こったのかを理解するのに約1分かかりました:-)
slebetman 14

6

stackexchangeによると-「MCU入力ピンをフローティングのままにしておくのは本当に悪い考えですか?」

開回路ピンによってチップ損傷する可能性のあるいくつかの状況について説明しています。編集:Spansionアナログおよびマイクロコントローラー製品の例は次のように述べています。

4.1ポート入力/未使用のデジタルI / Oピン
デジタルI / Oピンは、入力に切り替えられている間、未接続のままにしないことを強くお勧めします。この場合、これらのピンはいわゆるフローティング状態になります。これにより、高ICC電流が発生する可能性があり、低電力モードに悪影響を及ぼします。MCUの損傷も発生する可能性があります。

この質問の条件は、まさにオープン回路ピンです。

したがって、私たちのタスクは、ピン損傷する可能性があることを駆動することです。「ブリック」を超えるにはこれで十分だと思います。

その回答で特定されたメカニズムの1つは、入力ピンを中間値の電圧に駆動することです。2つの相補トランジスタは両方とも「オン」です。そのモードで動作している場合、ピンインターフェイスが熱くなるか、故障する可能性があります。

入力ピンのインピーダンスは非常に高く、コンデンサでもあります。おそらく、隣接するピン間の十分なカップリングにより、隣接するピンを十分に高速に切り替えて、入力ピンに電荷を送り、入力ピンを「ホット」状態にすることができます。I / Oピンの半分がその状態に駆動されると、損傷を引き起こすのに十分なほどチップを温めることができますか?

(オープン回路ピンの静電容量が電圧ダブラーのように使用されるモードがありますか?うーん。)

また、フラッシュを損傷するだけで十分だと思います。チップを役に立たないものにするのに十分だと思います。

すべてのフラッシュである必要はありませんが、パワーオン、リセットなどのベクトルを含むページのみです。1ページの制限には数十秒かかる場合があります。

兆候はありましたが、確かな証拠はありませんでした)MCUによっては悪化する可能性があります。数年前にプレゼンテーションに参加しました。競合他社がフラッシュ書き込みサイクルがはるかに高い部品を提供した理由を尋ねた人もいました。(名前のないMCUメーカーの大)プレゼンターは、フラッシュメモリの仕様において非常に保守的なアプローチを取っていると述べました。彼は、彼らの保証は業界の標準よりもかなり高い温度で定義されたと述べた。誰かが「そう何」と尋ねました。スピーカーは、いくつかのメーカーの製品の書き換え寿命が、使用した温度と同じ温度での部品よりも大幅に短いと述べました。私の記憶は5倍だったが<1倍になります。彼はそれが非常に非線形であると言いました。私は、25Cではなく80Cでプログラミングすることは「悪いこと」だと考えました。

そのため、非常にホットなチップと組み合わせたフラッシュ書き換えは、10秒未満で使用できなくなる場合もあります。

編集:
「死の青い煙を放つ」ことは、必要以上に厳しい制約だと思います。RESETピン回路、ブラウンアウト検出器、パワーアップ回路、RCまたは水晶発振器(およびおそらく他のいくつかの回路)のいずれかが損傷した場合、チップは役に立たなくなります。

他の人が指摘したように、フラッシュを壊すことはそれを取り返しのつかないほど殺すでしょう。

「煙」は印象的に聞こえますが、致命的でない明白な攻撃は依然として致命的であり、検出がはるかに困難です。


5

このような破壊の潜在的な原因の1つはSCRラッチアップです。SCRラッチアップでは、チップ内の意図しない(固有の)トランジスタが集まって、大量の電流をシンクできる一種のトライアックを形成します。これは簡単にボンドワイヤを吹き飛ばすことができます。また、発生した熱のために、プラスチックで覆われたデバイスが目に見えて歪んでいるのを見ました。

典型的な原因は、電源レールまたはグラウンドレールの上または下への入力を(瞬間的にでも)駆動することですが、入力がフロートしたままになった場合に発生する可能性があります。そして、入力の浮動性をソフトウェアで制御する回路を想像するのは難しくありません(ただし、それは許可するのは非常にばかげたことです)。


4

非常に特定のプロセッサを対象とする目的のために意図的に作成されたソフトウェアが、プロセッサがオーバーヒートするポイントまでオーバークロックを強制できる可能性があります。もちろん、プロセッサにソフトウェア構成可能なクロック制御レジスタが含まれていることを条件とします。

もちろん、すべてのプロセッサがこの方法で損傷を受ける可能性はありません。もしそれが本当なら、マシンコードを手動で入力していたときに多くの偶然のミスを犯していたときに、気まぐれなソフトウェア作成のチロシによって、何十億ものZ80sと6800sと6502sが路傍に横たわっていました。


2
クロックを設定するためにアクセスする必要はありません。CPU設計者が想定していなかった方法でソフトウェアを実行する必要があります。以下は、Intel Coreシリーズプロセッサでサイクルあたり理論的な4 FLOPSを達成しようとするコードです。stackoverflow.com/ questions / 8389648 / 。このコードはCPUを過熱させることが知られています。
スリーブマン14

1
これは「パワーウイルス」プログラムに関連していますか?
davidcary

1
@davidcary、それは私にとってまったく新しい用語です。しかし、私はクロックに飢えた一連の命令ではなく、CPUまたはそのヒートシンクよりも高い周波数へのクロックレートの実際の変更(一部のプロセッサは制御レジスタの操作によりクロックレートのソフトウェア制御をサポートしています)に言及していました対処できます。
TDHofstetter 14

3

これは、できるだけ少ない部品でマイクロコントローラーを台無しにするための私のエントリです...

数kHzで出力ピンを切り替えるだけです!

ただし、内部障害モードによっては、まだ煙が出ない場合があります。

回路図

この回路のシミュレーションCircuitLabを使用して作成された回路

-編集、8月22日追加-

さて、与えられた基準でマイクロコントローラーを台無しにすることはできないと思います。しかし、間違ったコードで外部回路を簡単に損なう可能性があります。思い浮かぶ例は、最近設計したシンプルなブーストコンバーターです。デバッグ中にコードを一時停止するだけで、MOSFETを介してインダクタをグランドに短絡することができます。ばか


2
私は「あの男」になりたくないが、仮定#1:「外部回路が接続されていない」
ラジアン14

1
あなたは「あの人」です。この応答のサブテキストは「いいえ、そのようなチップを台無しにすることはできません」です。
ダニエル14

2

通常のユーザーモードコードに関しては、チップを破壊するような何かを書くことはできないと思います。

ただし、ヒートシンクが脱落した場合に1分未満または数秒で破壊される可能性のあるマイクロプロセッサの時代を覚えています。その後、部品が熱くなりすぎた場合にクロックを下げる熱検出回路を追加しました。一度に使用できるよりもはるかに多くのトランジスタを搭載できるようになったので、チップはヒートシンクが放散できるよりも多くの熱を発生させることができ、その安全性を保つ電力管理と熱回路ができます。たとえば、Intel Turbo Boost 2.0を参照してください。したがって、電源管理と熱回路の制限をバイパスまたは引き上げることができる場合、チップを溶かすことはかなり可能だと思われます。したがって、これらがソフトウェア制御下にある場合(アイデアなし、おそらくBIOSの更新が必要ですか?)、ハードウェアH.264デコードおよびエンコードと共に、統合されたGPUの作業とともに、多数の並列do-nothingループを実行できます。チップが過熱して魔法の青い煙を発するまで、チップできることはすべて一度に


2

私はSTM32プロセッサに最も精通しているため、これらはそのファミリに最も当てはまります。ただし、他のプロセッサでも同様のアプローチが可能です。

  1. 永続的な書き込み保護モードがあります。したがって、そのビットをプログラムし、FLASHに役に立たないプログラムを使用すると、MCUを再び使用することはできません。これが「ブリック」としてカウントされるかどうかはわかりませんが、永続的なハードウェアメカニズムが含まれます。

  2. プログラミングピンはGPIOとして再構成可能です。クロックピンはプログラミングデバイスによって駆動されるため、これを使用して短絡を引き起こす可能性があります。おそらく、それはその単一のピンを破壊するでしょう。プログラミングピンであることは非常に悪いでしょう。

  3. dirktで述べたように、PLLを使用してプロセッサをオーバークロックできます。これにより、過熱したり、破損する可能性があります。


1

そのようなチップが設計プロセスにどのように関与しているか理解できないと誰が言ったことがあります。これは、スリップが発生しないことや、回帰やコーナーケースのコードカバレッジが時々見逃すことを意味するわけではありませんが、すべてまたはほとんどのプロセッサにこの欠陥があるという声明を出すことは論理的に疑わしいです。

オーバークロッカーがタイミング要件を超えたときに何が起こるかを考えてみてください(オーバーヒートしないと仮定)。チップに障害が発生し、メモリやHDDアクセスさえ破損する可能性がありますが、根本的には、プロセッサは再び起動し、破損が修正されるとOSを再度実行します。それでは、適切に設計されたどのようなマイクロコードがこのシナリオよりも多くの混乱を引き起こす可能性がありますか?-おそらくどれも答えない。

TLDR; すべてのプロセッサにこの障害があります-NOT


一部/ほとんどのマイクロコントローラーCPU(値ではなく、ボリュームによる)はマイクロコード化されていないと思います。それはあなたの仮定を無効にしますか?
gbulmer

いいえ、シーケンサーを設計する場合でも、固定目的のセルを設計する場合でも、設計の回帰および制約/テストは厳しくなります。
プレースホルダー14

青い煙の煙が発生するためには、CPUが何らかの方法で過熱しているでしょう。非常に高い電圧、非常に高い電流、逆極性、または過度に高い周波数でトランジスタがスイッチングする可能性があります。最後の方法のみがソフトウェアで実行可能です。500MHz未満で動作するCPUは、ソフトウェアが過熱するために死にそうにありませんが、ソフトウェアが過熱するためにCPUが死ぬのを見てきました。あなたがした仮定は、あなたがすべきでないことそのものです。
slebetman

@slebetmanあなたはここであまりにも多くのものを混同しています。ソフトウェアの指示で「逆極性」を取得する方法は?どのようにして「高すぎる周波数でのスイッチングが多すぎる」のでしょうか?おそらく、すべてのチップにそれらを超並列実行パイプラインに変える魔法の欠陥がありますか?
プレースホルダー14

@placeholder:ソフトウェアの指示では逆極性を取得できないと述べました。私のコメントを読みましたか?
slebetman

1

ソフトウェアでマイクロコントローラー(MC)を物理的に破壊することは確かに可能であると信じています。必要なのは、100%の使用率を引き起こす命令の「タイトな」ループを実行するMCと、チップ内部の熱を蓄積させる「欠陥のある」ヒートシンクの組み合わせです。故障に数秒、数分、または数時間かかるかどうかは、熱がどれだけ速く蓄積するかに依存します。

ラップトップコンピューターを使用していますが、使用できるのは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ピンは通常、大量の電流をソースまたはシンクできません。IOドライバトランジスタは電流を制限します。
アダムハウ

@AdamHaun問題は、電流制限が存在しないことです。ここで起こっていることは、この回路がそれらのトランジスタを燃やすことができるということです。
マックスソンチャン

電流制限は、出力ドライブトランジスタのサイズとゲート電圧によるものです。5V AVRはドライバーを焼損する可能性がありますが、ATMegaの典型的なドライバー強度チャートを見ると、3V Vccが2つのピンを一緒に短絡していると、絶対最大ピン電流を超えることさえありません。そして、電流は高温で下がります!低電力のMCUはおそらく大丈夫でしょう。
アダムHaun
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.