マイクロコントローラの広範な使用の2つの側面

マイクロコントローラー(古い美しい名前は単結晶マイクロコンピューター)には現在、非常に多くのアプリケーションがあります。 産業オートメーションから家庭用電化製品、原子力発電所の管理から子供のおもちゃ、秘密の軍事システムからラジオのチャンネル切り替えまで。 つまり、適用されていない場所をリストする方が簡単です。



マイクロコントローラの発明とさらなる発展は、デジタルエレクトロニクスに革命をもたらしました。 回路と要素ベースだけでなく、システム構築の原則も変更されました。 開発サイクルは大幅に変更されました。 デバイスのクラス全体が登場しましたが、その存在はコントローラーなしでは不可能でした。



しかし、どんな技術であっても、どんなに良いものであっても、常にマイナス面があります。 これらには、一見して知覚できない困難が含まれます。 新しいアプローチによって生じる問題。 考慮すべき制限。 テクノロジーが提供する新しい機会は、予期しないアプリケーションを見つける可能性があり、必ずしも利益を目的とするわけではありません。



この記事の目的は、マイクロコントローラの広範な使用のプラス面とマイナス面の両方の概要を提供することです。



ブライトサイド

回路の簡素化



デバイスの回路を厳密なロジックとコントローラーと比較すると、後者の方がはるかに簡単です。 開発中に必要なのは、デバイスがどの機能ブロックで構成されるか、それらを組み合わせるインターフェイス、および選択する要素ベースを決定することだけです。 個々の部品から将来のデバイスの図を作成する代わりに、ブロック設計が適用されます。 マイクロコントローラーを使用すると、1つまたは複数のチップ上に完全なユニットを作成できます。



現在、すべての作業アルゴリズムの実装はコントローラプログラムのタスクであり、プログラムの作成はデジタル回路の合成よりもはるかに時間がかかりません。 タスクの複雑さが増すにつれて、この利点はますます明らかになります。 プログラムコードのサイズの増大は、構造化された性質と、抽象化の追加レベルの導入によって相殺されます。 組み込みOSと標準ライブラリが広く使用されているため、ハードウェアで動作するコードと、動作とアルゴリズムを定義するコードを分離できます。



統一



ソフトウェアとハ​​ードウェアの分離により、要素ベースを統一できました。 同じコントローラーを使用して、さまざまなデバイスを作成できます。 統一は生産コストの削減につながります。 数百種類の論理回路(および数千種類の特殊回路)ではなく、数十種類のコントローラーを製造することは経済的に実現可能です。



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



変更が簡単



リジッドロジックのスキームの動作アルゴリズムを変更するには、要素を異なる順序で接続し、それらの一部を削除するか、新しい要素を追加する必要があります。 多くの場合、これはプロトタイピングのプロセスでのみ行うことができ、デバイスの準備ができたら、変更を加える唯一の方法は新しいバージョンをリリースすることです。



これに関するマイクロコントローラは、はるかに高い柔軟性を提供します。 デバイスのアルゴリズムを変更するには、新しいファームウェアをダウンロードするだけです。 最新の電子機器のほとんどは、サービスセンターでのフラッシュをサポートしており、ユーザーによるフラッシュもサポートしています。 最近では、電話、プリンター、またはカメラのソフトウェアを簡単に更新できます。 近い将来、例えば洗濯機やコーヒーメーカーで同じことができます。 より多くのデバイスがネットワークにアクセスするにつれて、自動更新メカニズムの普及が予想されます。これは、今日のコンピュータープログラムで使用されているものと同様です。



ダークサイド



マイクロコントローラの広範な使用の肯定的な側面が明らかであり、詳細な検討を必要としない場合、それに関連する問題は一目で深く隠されて見えなくなります。



信頼性の低下



信頼性理論にはさまざまな側面が含まれますが、「日常」の意味では、技術の信頼性について話すとき、通常は障害や誤動作に対する抵抗を意味します。 失敗は致命的な機能不全であり、例としては、球根が吹き飛ばされます。 失敗は、それ自体で解決される違反であるか、最小限のオペレーターの露出で解決されます。 拳で修理されている古いテレビは、システムの故障の例です。



システムを構成する要素の数が多いほど、いずれかの要素で障害が発生する可能性が高くなります。 この点で、数百万個のトランジスタを含むコントローラの集積回路は、一見したところ、チップあたりわずか数百個のトランジスタしかないハードロジックを失います。 しかし、今日のマイクロエレクトロニクスの信頼性レベルは非常に高いです。 疑わしい結晶はすべて製造段階で拒否されました。 弱い領域は、プリント回路基板、相互接続マイクロチップ、および受動素子です。 したがって、内部原因が原因の故障率では、マイクロコントローラ回路が勝ちます。



耐障害性が失われます。 原則として、故障は外部の影響によって引き起こされます:温度、電磁干渉、放射。 コントローラーは、フリーズや自発的な再起動を引き起こす電磁気の影響に特に敏感です。 マイクロコントローラ回路のノイズ耐性を確保するには、特別な対策が必要です。電源バスの分離、ウォッチドッグタイマー、ボード上の追加のメタライゼーション層などです。 [1]の詳細を参照してください。



多くの場合、正しくデバッグされていないファームウェアが障害の原因になります。 または、信頼できない作業の理由は、ソフトウェアとハ​​ードウェアの接合部にあります。 たとえば、同じフラッシュメモリに遅かれ早かれ複数回書き込むと、セルのリソースが枯渇し、データが破損し始めます。 マイクロコントローラは、ほとんどのタスクに必要なレベルの信頼性を提供できますが、設計に対する有能なアプローチが必要です。 ところで、これは別に言及する価値があります。



開発の見やすさ



エレクトロニクスを開発する前に、かなりの量の知識を蓄積する必要があります。 デジタルデバイスの回路は、かなり膨大なコースです。 さらに、電気工学、アナログ回路の基礎、離散数学を知ることが望ましいです。 要するに、電子回路開発の参入閾値は十分に高いです。



プログラミングのエントリしきい値ははるかに低くなっています。 ある夜、あらゆる言語の基礎を学び、Hello Worldの書き方を学ぶことができます。 「プログラマー」と「優秀なプログラマー」の間に大きなギャップがあることは明らかですが、書き始めることができるのは魅力的です。



同様に、コントローラーでデバイスを開発するためのエントリーしきい値は低いです。 今では優れたArduinoのようなキット、それらのための膨大な周辺モジュールの選択がいっぱいです。その夜をIDE(開発環境)の開発に費やします-そして、あなたは最初のプロジェクトを始めることができます。



それでは、なぜ優れた組み込みプログラマーは比較的まれなのでしょうか? 実際には、コードを直接記述することに加えて、彼はアーキテクチャのすべての機能を知っている必要があります。 彼は、デジタルデバイスがどのように機能するかを想像し、信号のコーディングを理解し、非標準的な条件でデバイスがどのように動作するかを知る必要があります。 コントローラを操作するプログラマは、アプリケーションプログラマよりもハードウェアにはるかに近いです。 したがって、彼はこの鉄の操作の原則の知識なしで行うことはできません。



コントローラーの開発の容易さは単なる幻想であることがわかります。 マイクロコントローラーは、「大型」コンピューターよりもプログラマーのエラーにはるかに敏感です。 限られた量のメモリ、「段階的な」速度の要件、および「完全な」のほぼ完全な欠如には、高度なスキルを持つ開発者が必要です。



機能的な輻輳と不便なインターフェース



-完璧なインターフェースはどのようなものですか? 「Do me good」というボタンが1つあります。

-いいえ、ボタンはありません。「あなたはもう大丈夫です」という碑文だけです。



いくつかの真実のジョーク。


特定の問題を解決するために、マイクロコントローラーは常にパラメーターに余裕を持って選択されます。 したがって、コントローラーのリソースの一部(場合によっては最大90%)は無料のままです。 これにより、いくつかの追加機能をほぼ「無料」で追加でき、ファームウェアコードに数十行追加できます。 そして、この機会はしばしば乱用されます。 その結果、 KISSの原則に違反し、システムのシンプルさを主要な設計優先事項の1つとして宣言しています。 その結果、デバイスのほとんどの機能が使用されることはなく、その約半分はユーザーにもわからないことがわかりました。



不要な機能を持つことは、氷山の一角にすぎません。 それは使用されていないように思えます-そして、大丈夫、いつか便利になるかもしれません...しかし、機能の複雑さはユーザーインターフェースの複雑さにつながります。 2つの方法があります。 すべての機能の制御を、限られた一連の入出力要素に「絞る」ことができます。 そのため、Nから11レベルのネストを持つメニュー、または多数の代替アクションを持つボタンがあります。 この方向におけるミステリーエンジニアリングの天才の例として、電話発信者IDを「Rus」と呼ぶことができます。 このユニットを持っている人は誰でも、そのセットアップがマシンコードでのプログラミングに似ていることを知っています。



2番目の方法は、大きなカラー画面(できればタッチスクリーン)を適用するか、各機能に独自のボタンを追加することにより、インターフェイスをユーザーフレンドリーにすることです。 このオプションはすでに優れていますが、寸法が大きくなり、バッテリー寿命が短くなり、デバイスの信頼性が低下します。 そして、価格を忘れないでください。 製造コストがわずかに増加した場合でも、「5,000,000色の超大型スクリーン」の存在により、デバイスの最終コストの50〜250%を過度に後悔することなく増やすことができます。



文書化されていない機能



大規模なショッピングモールでは、理由もなく、煙の排気トランサムが開き(大きな電動窓)、制御リレーに誤動作が発生します。 夜に彼らは雨を約束した。 それを修正しないでください-それは複合体の半分をあふれさせます。

このリレーをプログラムした会社の専門家を呼んでいます。 彼は街で一人で、感染症であり、彼はすべてをはんだ付けして置きます。 問題を説明しました。 彼は答えた、彼らは言う、すべてが明確である、今私は来て、それをします。

到着すると、自信を持って歩き、リレーに行き、そこから電荷を取り除き、アダプターに突っ込みます。 ある種のエディターが開きます-すべてが16進コードであり、理解するのに十分なものではありません。 彼は何をしますか? 右下隅でマウスのランダムな動きを観察します-それを指摘し、カナリヤは日付を見て、コンバーターを開き、いくつかの数字を16進数に変換し、コードでそれらを検索し、それらを他のものに置き換えました。 「なに」、「タイマーは機能しましたか?」



IThappens.ru


リジッドロジックでデバイスのスキームを分析した後、操作のアルゴリズム全体を復元できます。 マイクロコントローラデバイスで同じことを行うのははるかに困難です。 まず、ファームウェアを削除する必要がありますが、これは常に可能であるとは限りません。最新のコントローラーには優れた保護があります。 次に、結果のファイルを逆アセンブルし、難読化を解除してから、分析する必要があります。



主な機能に加えて、ファームウェアに追加機能がない可能性はどのくらいですか? これには、製造元への統計の送信、意図的なミス、データ傍受モジュール、バックドアなどがあります。 さらに、開発中に「ブックマーク」を追加する必要はありません。既存のデバイスのファームウェアを変更できます。 たとえば、StuxNetワームは、核濃縮プラントのPLCにコードを導入しました[2] 。 あなたがウランを濃縮しなければ、これはあなたが危険にさらされていないという意味ではありません。 ファームウェアの変更を使用するプリンター[3]およびルーター[4]に対する攻撃メカニズムは既に開発されています。 ほとんどのデバイスが簡単にフラッシュされるため、近い将来、新しい「ソフトウェアおよびハードウェア」ウイルスとさまざまな攻撃の出現が予想されます。



今、あなたの電子レンジはあなたを見ていませんか? :)



おわりに



この記事、特に第2部を読んでいる間、コントローラーの普及を断念するように思われるかもしれません。 これは決してそうではありません。 第一に、技術の進歩を元に戻すことはできません。 第二に、多くのタスクでは、コントローラーが唯一の代替手段であり、コントローラーを置き換えるものは何もありません。 そして最後に、第三に、決して説明されていないマイナス面は、マイクロコントローラーの利点を上回るものではありません。



私が引き出したい主な結論は、あらゆる技術に適していますが、この技術が提供する利点を巧みに使用することですが、その裏返しを忘れないことです。 ご清聴ありがとうございました。フォースが一緒にいてくれますように!



文学



[1] -G.ゴリュノフ。 「なぜ他のマイクロコントローラーよりも信頼性の高いマイクロコントローラーがあるのか​​」

[2] -「SymantecがStuxnetをハッキングした方法」 ハブラハブ。

[3] -「数千万のHP LaserJetプリンターは脆弱です。」 ハッカー。

[4] -「ルーター内のトロイの木馬:自宅でのD-link 500T感染。」 ハッカーNo. 7/10



All Articles