
マイクロコントローラの発明とさらなる発展は、デジタルエレクトロニクスに革命をもたらしました。 回路と要素ベースだけでなく、システム構築の原則も変更されました。 開発サイクルは大幅に変更されました。 デバイスのクラス全体が登場しましたが、その存在はコントローラーなしでは不可能でした。
しかし、どんな技術であっても、どんなに良いものであっても、常にマイナス面があります。 これらには、一見して知覚できない困難が含まれます。 新しいアプローチによって生じる問題。 考慮すべき制限。 テクノロジーが提供する新しい機会は、予期しないアプリケーションを見つける可能性があり、必ずしも利益を目的とするわけではありません。
この記事の目的は、マイクロコントローラの広範な使用のプラス面とマイナス面の両方の概要を提供することです。
ブライトサイド
回路の簡素化
デバイスの回路を厳密なロジックとコントローラーと比較すると、後者の方がはるかに簡単です。 開発中に必要なのは、デバイスがどの機能ブロックで構成されるか、それらを組み合わせるインターフェイス、および選択する要素ベースを決定することだけです。 個々の部品から将来のデバイスの図を作成する代わりに、ブロック設計が適用されます。 マイクロコントローラーを使用すると、1つまたは複数のチップ上に完全なユニットを作成できます。
現在、すべての作業アルゴリズムの実装はコントローラプログラムのタスクであり、プログラムの作成はデジタル回路の合成よりもはるかに時間がかかりません。 タスクの複雑さが増すにつれて、この利点はますます明らかになります。 プログラムコードのサイズの増大は、構造化された性質と、抽象化の追加レベルの導入によって相殺されます。 組み込みOSと標準ライブラリが広く使用されているため、ハードウェアで動作するコードと、動作とアルゴリズムを定義するコードを分離できます。
統一

機能が異なる複数のデバイスで同じ回路を使用できますが、プログラムのみが異なります。 最も顕著な例は、産業用PLC(プログラマブルロジックコントローラー)です。 入力モジュール、出力デバイス、コンピューティングモジュール、インターフェースモジュールなどの標準モジュールから組み立てられます。 モジュール同士の相互作用およびシステム全体のアルゴリズムについては、ソフトウェア部分が責任を負います。 したがって、構築ブロックの小さなセットから、必要なシステムを構築できます。
変更が簡単

これに関するマイクロコントローラは、はるかに高い柔軟性を提供します。 デバイスのアルゴリズムを変更するには、新しいファームウェアをダウンロードするだけです。 最新の電子機器のほとんどは、サービスセンターでのフラッシュをサポートしており、ユーザーによるフラッシュもサポートしています。 最近では、電話、プリンター、またはカメラのソフトウェアを簡単に更新できます。 近い将来、例えば洗濯機やコーヒーメーカーで同じことができます。 より多くのデバイスがネットワークにアクセスするにつれて、自動更新メカニズムの普及が予想されます。これは、今日のコンピュータープログラムで使用されているものと同様です。
ダークサイド
マイクロコントローラの広範な使用の肯定的な側面が明らかであり、詳細な検討を必要としない場合、それに関連する問題は一目で深く隠されて見えなくなります。
信頼性の低下

システムを構成する要素の数が多いほど、いずれかの要素で障害が発生する可能性が高くなります。 この点で、数百万個のトランジスタを含むコントローラの集積回路は、一見したところ、チップあたりわずか数百個のトランジスタしかないハードロジックを失います。 しかし、今日のマイクロエレクトロニクスの信頼性レベルは非常に高いです。 疑わしい結晶はすべて製造段階で拒否されました。 弱い領域は、プリント回路基板、相互接続マイクロチップ、および受動素子です。 したがって、内部原因が原因の故障率では、マイクロコントローラ回路が勝ちます。
耐障害性が失われます。 原則として、故障は外部の影響によって引き起こされます:温度、電磁干渉、放射。 コントローラーは、フリーズや自発的な再起動を引き起こす電磁気の影響に特に敏感です。 マイクロコントローラ回路のノイズ耐性を確保するには、特別な対策が必要です。電源バスの分離、ウォッチドッグタイマー、ボード上の追加のメタライゼーション層などです。 [1]の詳細を参照してください。
多くの場合、正しくデバッグされていないファームウェアが障害の原因になります。 または、信頼できない作業の理由は、ソフトウェアとハードウェアの接合部にあります。 たとえば、同じフラッシュメモリに遅かれ早かれ複数回書き込むと、セルのリソースが枯渇し、データが破損し始めます。 マイクロコントローラは、ほとんどのタスクに必要なレベルの信頼性を提供できますが、設計に対する有能なアプローチが必要です。 ところで、これは別に言及する価値があります。
開発の見やすさ

プログラミングのエントリしきい値ははるかに低くなっています。 ある夜、あらゆる言語の基礎を学び、Hello Worldの書き方を学ぶことができます。 「プログラマー」と「優秀なプログラマー」の間に大きなギャップがあることは明らかですが、書き始めることができるのは魅力的です。
同様に、コントローラーでデバイスを開発するためのエントリーしきい値は低いです。 今では優れたArduinoのようなキット、それらのための膨大な周辺モジュールの選択がいっぱいです。その夜をIDE(開発環境)の開発に費やします-そして、あなたは最初のプロジェクトを始めることができます。
それでは、なぜ優れた組み込みプログラマーは比較的まれなのでしょうか? 実際には、コードを直接記述することに加えて、彼はアーキテクチャのすべての機能を知っている必要があります。 彼は、デジタルデバイスがどのように機能するかを想像し、信号のコーディングを理解し、非標準的な条件でデバイスがどのように動作するかを知る必要があります。 コントローラを操作するプログラマは、アプリケーションプログラマよりもハードウェアにはるかに近いです。 したがって、彼はこの鉄の操作の原則の知識なしで行うことはできません。
コントローラーの開発の容易さは単なる幻想であることがわかります。 マイクロコントローラーは、「大型」コンピューターよりもプログラマーのエラーにはるかに敏感です。 限られた量のメモリ、「段階的な」速度の要件、および「完全な」のほぼ完全な欠如には、高度なスキルを持つ開発者が必要です。
機能的な輻輳と不便なインターフェース
-完璧なインターフェースはどのようなものですか? 「Do me good」というボタンが1つあります。
-いいえ、ボタンはありません。「あなたはもう大丈夫です」という碑文だけです。
いくつかの真実のジョーク。

不要な機能を持つことは、氷山の一角にすぎません。 それは使用されていないように思えます-そして、大丈夫、いつか便利になるかもしれません...しかし、機能の複雑さはユーザーインターフェースの複雑さにつながります。 2つの方法があります。 すべての機能の制御を、限られた一連の入出力要素に「絞る」ことができます。 そのため、Nから11レベルのネストを持つメニュー、または多数の代替アクションを持つボタンがあります。 この方向における
2番目の方法は、大きなカラー画面(できればタッチスクリーン)を適用するか、各機能に独自のボタンを追加することにより、インターフェイスをユーザーフレンドリーにすることです。 このオプションはすでに優れていますが、寸法が大きくなり、バッテリー寿命が短くなり、デバイスの信頼性が低下します。 そして、価格を忘れないでください。 製造コストがわずかに増加した場合でも、「5,000,000色の超大型スクリーン」の存在により、デバイスの最終コストの50〜250%を過度に後悔することなく増やすことができます。
文書化されていない機能
大規模なショッピングモールでは、理由もなく、煙の排気トランサムが開き(大きな電動窓)、制御リレーに誤動作が発生します。 夜に彼らは雨を約束した。 それを修正しないでください-それは複合体の半分をあふれさせます。
このリレーをプログラムした会社の専門家を呼んでいます。 彼は街で一人で、感染症であり、彼はすべてをはんだ付けして置きます。 問題を説明しました。 彼は答えた、彼らは言う、すべてが明確である、今私は来て、それをします。
到着すると、自信を持って歩き、リレーに行き、そこから電荷を取り除き、アダプターに突っ込みます。 ある種のエディターが開きます-すべてが16進コードであり、理解するのに十分なものではありません。 彼は何をしますか? 右下隅でマウスのランダムな動きを観察します-それを指摘し、カナリヤは日付を見て、コンバーターを開き、いくつかの数字を16進数に変換し、コードでそれらを検索し、それらを他のものに置き換えました。 「なに」、「タイマーは機能しましたか?」
IThappens.ru
リジッドロジックでデバイスのスキームを分析した後、操作のアルゴリズム全体を復元できます。 マイクロコントローラデバイスで同じことを行うのははるかに困難です。 まず、ファームウェアを削除する必要がありますが、これは常に可能であるとは限りません。最新のコントローラーには優れた保護があります。 次に、結果のファイルを逆アセンブルし、難読化を解除してから、分析する必要があります。
主な機能に加えて、ファームウェアに追加機能がない可能性はどのくらいですか? これには、製造元への統計の送信、意図的なミス、データ傍受モジュール、バックドアなどがあります。 さらに、開発中に「ブックマーク」を追加する必要はありません。既存のデバイスのファームウェアを変更できます。 たとえば、StuxNetワームは、核濃縮プラントのPLCにコードを導入しました[2] 。 あなたがウランを濃縮しなければ、これはあなたが危険にさらされていないという意味ではありません。 ファームウェアの変更を使用するプリンター[3]およびルーター[4]に対する攻撃メカニズムは既に開発されています。 ほとんどのデバイスが簡単にフラッシュされるため、近い将来、新しい「ソフトウェアおよびハードウェア」ウイルスとさまざまな攻撃の出現が予想されます。
今、あなたの電子レンジはあなたを見ていませんか? :)
おわりに

私が引き出したい主な結論は、あらゆる技術に適していますが、この技術が提供する利点を巧みに使用することですが、その裏返しを忘れないことです。 ご清聴ありがとうございました。フォースが一緒にいてくれますように!
文学
[1] -G.ゴリュノフ。 「なぜ他のマイクロコントローラーよりも信頼性の高いマイクロコントローラーがあるのか」
[2] -「SymantecがStuxnetをハッキングした方法」 ハブラハブ。
[3] -「数千万のHP LaserJetプリンターは脆弱です。」 ハッカー。
[4] -「ルーター内のトロイの木馬:自宅でのD-link 500T感染。」 ハッカーNo. 7/10