マイクロコントローラアーキテクチャを学ぶ必要があるのはなぜですか?[閉まっている]


8

私は最近、自動車診断関連の電子機器を製造する小さな会社で働き始めました。50代半ばの私の上司は、8051デリバティブを使用していて、彼らが仕事をしていたと言いました。今日も8051が人気があるかどうかを調べるために、Googleを検索しました。そしてQuoraで、私はこれらを見ました:

...それはおそらく最も単純なMCUアーキテクチャです。すべての周辺機器は必要最低限​​のバージョンのようです。タイマー、クロッキング、UARTなどの私の概念はかなりクリアされました!そして、私は他のアーキテクチャを高く評価し始めました-私は実際にその違いを理解したからです。

...明らかに、その単純さのため、製品を開発するためにどの業界でも使用されません...

しかし、なぜ?これまでのところ、少なくとも学生としては、建築に手を加えることなく、多くのことをしてきました。私は幸いにもCでコード化し、さまざまなプロトコル(SPI、I2Cなど)で他のICに接続されたLCD周辺機器を使用しました

なぜ、リアルタイムおよびタイムクリティカルなアプリケーションの限られた分野を除けば、マイクロコントローラーのアーキテクチャに悩む必要があるのですか?


3
楽しみのためか、そのようなアーキテクチャでプロジェクトを実行する必要があるからです。
PlasmaHH 2017

今日8051はせいぜい趣味のレベルです。一方、ARM Cortex M4のようなモデラーで作業を開始する場合は、実際にアーキテクチャを学ぶ必要はありません。少なくとも開始しないこと
Gregory Kornblum 2017

@PlasmaHHエレクトロニクスに関するすべてのトピックを「楽しんで」過ごすのに十分な時間があればいいのですが、それは私の学生時代でした:)
CK

6
パフォーマンスが必要な場合はアーキテクチャに注意する必要がありますが、これはおそらく起こりません。例を挙げれば、何度か計算を実行する必要があり、時間が限られている場合、フラッシュに保存されたデータを使用しないか、レジスタの使用を最適化する必要があるかもしれません。しかし、それは今日、非常に限られた数の専門家にのみ起こります。そこに着くまでには時間がかかります。今のところ、今後数年間はCを書くだけで十分だと思って間違いはありません。
Gregory Kornblum 2017

2
私はそれをよりよく知っているかもしれない人たちに任せます:)
グレゴリー・コーンブラム

回答:


30

8051およびその他の低ビットマイクロコントローラーは現在も使用されていますか?

はい、ほぼどこでも。それらは小さくて簡単で、カスタムシリコンに低コストまたは無料で投入できるコアがたくさんあり、成熟したコンパイラがあります。これにより、8051は依然としてシリコンメーカーの間で最も人気のあるコアアーキテクチャの1つになっています。ARMコアはより多くの異なる製品で利用できる可能性がありますが、非常に厳しい価格制約で多くのデバイスを構築している人と話すとき、仕事を終えれば、彼はより安い/無料の8051コアを好むでしょう。 。ニッチのみの使用という@ Nitro2k01の主張に反対するだけです。Mouserには、在庫がある8051 マイクロコントローラーのほぼ800モデルがあります。そして、これらがマウサーでさえ、40セント以下の価格で始まっているという事実は、それらが何に使用されているかを示している可能性があります。

主流、低パフォーマンス、大容量MCU

したがって:

...明らかに、その単純さのため、製品を開発するためにどの業界でも使用されません...

高品質でまったくナンセンスです。特に自分で反例を提供しているので

50代半ばの私の上司は、8051デリバティブを使用していて、彼らが仕事をしていたと言いました。

丁度!それらはどこでも使用されており、実績があり安価であり、十分です。どこかの引き出しの一般的な問題の解決策の利点を過小評価しないでください!

もちろん、2つの典型的な自動車用バス、ADCへの高速インターフェイス、いくつかの信頼性の高いウォッチドッグタイマー、3つのPWMユニットなどのソリューションが必要になる場合がよくあります。次に、 8051と8080の4つの派生物。これは悪い状況であり、単一の、より用途が広く、より強力なMCU(例えば、ARM)を使用して、はるかに高速で信頼性の高い解決策になる可能性があります。しかし、「私たちは何かが古いテクノロジーでどのように機能するかについて会社の知識を持っている」と「私たちは最新のハードウェアで実行できることで将来を見据えています」というのは古典的な投資セキュリティのトレードオフです。そのようなプロジェクトに遭遇した場合は、その文脈で上司と話をしたいと思います。簡単な小さな仕事のために、ええ、8051。

MCUアーキテクチャ全般についてわざわざ学ぶ必要がありますか?

はい!@jfkowes それを非常によく説明していると思います。しかし正直に言うと、これは「自動車整備士になりたいのなら、内燃機関がどのように機能するかを学ぶべきか」と尋ねるようなものです。答えは、「修理マニュアルを十分に実行できれば、問題なく生きることができるかもしれませんが、ハードウェアの機能を理解していれば、おそらくはるかに優れた技術者(エンジニアのみ)になるでしょう。

グーグルで処理できない問題に直面するとすぐに、プロセッサーの仕組みを大まかに理解していなければ、かなり背中が亀になってしまいます。

わざわざ8051アーキテクチャを学ぶ必要がありますか?

おそらく違います。はい、そうです、コストが主な焦点ではない限り、ARMコアまたは他のより近代的なアーキテクチャに基づいた、はるかに強力で用途の広いMCUを使用することができます。

次に、8051コアは非常に簡単なので、より近代的で複雑なMCUコアに取り組む前に、そのユニットが何であるかを理解することをお勧めします。それは良い例です。

8051私は低容量アプリケーションで探しているコアでないのであれば、どのようなのです私が探していますか?

したがって、個人的には、ARM Cortex-M0、-M3、-M4Fを使用します。これらはすべての種類の手頃な価格のマイクロコントローラーに豊富にあり、プログラミングが簡単で(そう、成熟したGCCサポート、CMSIS標準ライブラリ、これらで実行される多くの組み込みOS)、一般的に標準のデバッグインターフェースが付属しています(これ大きな利点です)。

ARMは、通常、すべてのペリフェラルをメモリ空間にマッピングするため、通常、比較的理解しやすいものです。内部的には、高度化、速度/堅牢性/サイズの最適化の度合いがさまざまであるため、詳細を完全に理解するのは簡単ではありませんが、CPU設計に精通している場合を除いて、それを求めるのは少し難しいかもしれません。

CPU設計に興味がある場合、私は現在(研究活動と「約束された」業界への投資の観察に基づく個人的な信念です)、私たちは現在、新しい重要なISA(RISC-V)の台頭を観察しています。FPGAまたはシリコン向けのこのアーキテクチャにはさまざまな実装があり、Nvidiaのような人々も、ストリームマルチプロセッサをこれらの種類のコアに置き換えることで遊んでいるようです。


¹:マウサーが持っている実際の8051の半分以上が欠落している可能性が非常に高いです(コア名が* 80 * 5 *であるすべてのMCUを選択したためです)。ランダムな8ビットマイクロコントローラーを選択した場合、そのコアは少なくとも部分的に8051から派生している可能性があります。つまり、ウィキペディアの「[8051]派生ベンダーのリスト」をご覧ください。


AVRは、優れたドキュメントとgccサポートを備えた優れた学習アーキテクチャでもあります。
クリリス

@Chrylisは同意しないのが嫌いですが、個人的にはATMega 8bitterは優れたアーキテクチャだとは思いません。また、それらのドキュメントやGCCサポートは、競合するARM cortex m0に比べて優れています。しかし、それは個人的な意見です!
マーカス・ミュラー

1
@MarcusMüllerAtmelでのいくつかの経験の後、私はそれらをもう使用しません(趣味を除く)。Atmelは、特定の「サイズ」よりも小さいビジネスをサポートするために趣味活動に依存していました。年間6000。FAEは素晴らしかったが、それはフランス(AT91)には役に立たなかったので、私はそれらを手放した。一方、Microchipは、プロジェクトに関わらず、すばらしいレベルのサポートをしてくれました。彼らの教授をサポートしています。ツールは「永遠に」そして古いチップでさえも作られます。AtmelはMicrochipに買収されました。だから多分そこで足を変えて、私はもう一度見ます。
jonk

1
@jonkそう、PIC /マイクロチップはサービスの評判が良く、それだけで生き残るかもしれないのに対して、Atmelポートフォリオ拡張は失速するかもしれません。そして、次の10年に対する私の希望:しばらく前に別の回答へのコメントで説明したように、ウエハーの「シャトルサービス」がますます手頃な価格になり、非常に競争力のある32ビット/オプションで64ビット/オプションでRTは、RISC-Vのようなアーキテクチャをさまざまなサイズと速度で保証します(BOOM、Rocket-chip、またはPicoRV32の名前でコアとして実装されています)。「一体、特別な問題があり、特別なMCUを入手できます」…
マーカス・ミュラー

1
@MarcusMüller期待できます。顧客サポートがオンになった場合、マイクロチップは他のすべての人を虐殺します。私には12歳のプロフェッショナルツールがあり、電源スイッチが「不安定」になりました。注文してユニットを修理できるように、スイッチの部品番号を教えてもらえるかどうか尋ねました。その代わり、彼らは私に交換用ユニットを送るように要求し、それと私に古いものを返却するための箱を送って、次の午前に到着しました!無償。「購入証明が必要ですか?」と尋ねました。彼らは言った、「いいえ。他の部隊を返却してください。肉体の所有だけで十分です」。とんでもないものが古代のものでした。
jonk

12

一般的に、使用しているマイクロコントローラのアーキテクチャを学ぶ(または少なくとも実用的な知識を持っている)には、いくつかの理由があります。

警告:あなたの仕事、会社、アプリケーション、関連ハードウェアなどのコンテキストでは、現在使用している特定のアーキテクチャを学習すべきでない理由があるかもしれません。

デバッグ中

高レベルのライブラリが機能している場合は、アーキテクチャを知る必要がない場合があります。問題が発生し始めたときに、マイクロコントローラーの内部を知っていると、それらの問題をすばやく特定して修正するのに役立ちます。

コードの効率とシンプルさ

アーキテクチャがわかっている場合は、機能をソフトウェアからハードウェアに移行できる場合があります。これは、ソフトウェアの負荷を軽減し、バグの原因を取り除く可能性があります。

コスト削減

アーキテクチャの知識により、プログラムとデータのメモリ使用量とプロセッサの負荷が軽減される場合があります。これは、リソースの少ないマイクロコントローラーを選択できることを意味し、コストを削減できる可能性があります。

あなたの有用性を高める

今はその知識を使わなくても、同僚・ベンダー・サポートエンジニアなどとの話し合いが必要かもしれません。たとえば、あなたが知っていることが、他の誰かが抱えている問題を解決するのに役立つ場合があります。日を救うことは人々が覚えていることです。

知識は力である

現在の仕事で知識が必要ない場合でも、「<マイクロコントローラファミリ>アーキテクチャの知識が必要/推奨」という素晴らしい仕事の広告が表示されると、より良い立場になります。それのために行きます。


繰り返しになりますが、求人広告でその文章を頻繁に読むかどうかはわかりません。これは一種の難解な知識であり CPUアーキテクチャに関する知識が最も少ない人なら、最初の3日間で8051を入手できます。仕事のため、私は推測するだろう
マーカス・ミュラー

良い点、私はそれをより一般的になるように編集しました。
jfowkes

7

8051およびその他の低ビットマイクロコントローラーは現在も使用されていますか?

はい、ただし主にニッチなユースケース向けです。これらは主に、大量生産されたコスト重視の製品で、または実績のある実績が望ましい場合に、単純なタスクに使用されます。多くの場合、ライセンスが付与され、シングルチップソリューションに統合されます。シンプルなアーキテクチャのため、同じチップ上のカスタムペリフェラルと簡単に統合できます。別の利点は、古い(そして安価な)半導体製造技術を使用して、小さな領域で製造できることです。

そのような例の1つは、スマートカードの制御チップにあります。スマートチップは、8051または同様のコアと暗号化ハードウェア拡張をしばしば使用します。スマートな電動歯ブラシモニターのコントローラーなどに8ビットマイクロコントローラーコアが見つかるでしょう。車両のECUでは、信頼性が高く、複雑さが低いため、8ビットのマイクロコントローラーと32ビットのマイクロコントローラーをウォッチドッグとして使用することがよくあります。

あなたはそれを学ぶべきですか?

特定のアーキテクチャの知識が必要となる状況に実際に陥る可能性は別として、それは一般的に有用なスキルであると私は主張します。日常業務でCをプログラムする場合でも、「1レベル下」で何が行われているのかを一般的に理解しておくと役立ちます。奇妙なバグやパフォーマンスの問題のトラブルシューティングを行う場合、基盤となるハードウェアを一般的に理解していると、問題を特定するのがはるかに簡単になります。また、Cコンパイラからのアセンブリ言語出力をより簡単に分析できます。また、1つのアーキテクチャを学習することで、将来、さまざまなアーキテクチャを学習しやすくなります。これらのスキルは、最新のCPUコアであっても、より良いコードを書くのに役立つ場合があります。


私は「ニッチ」の主張に少しでも反対します。以下の私の答えを見てください:)しかし、それでもあなたの答えは良いです!
マーカス・ミュラー

1

デジタルデザインについて学ぶことで、デジタルデザインについて多くを学ぶことができます。デジタルエレクトロニクスは、2つのものを使用して構築されています。まず、論理、AND、OR、NOT要素の相互接続で、論理式を実装します。(実際には、NANDなどの他の論理要素が実際に使用されますが、AND、OR、NOTの方が理解しやすくなります。)2番目は、1つ以上のビットを保持できるメモリ要素です。メモリ要素が導入されると、デバイスはいわゆる状態を持つことができます。そのメモリ要素のビットの異なる組み合わせは、異なる状態に対応します。

状態0から始まり、コインが挿入されるたびに別の状態に移行する自動販売機を考えてみましょう。そうすることで、マシンはお金の総量を追跡し、十分なお金がいつ投入されたかを知り、どのくらいの釣銭を返すかを知ることができます。

マシンの回路を設計するには、まず、他の状態への遷移とそれらをトリガーする条件を示す矢印付きの状態の図から始めます。各矢印について、論理式は条件を識別します。次に、これらすべての式が何であるかを調べ、論理要素を使用してそれらを実装できます。

自動販売機の場合、これはそれほど難しくありません。複雑なコントローラーの場合は、かなり難しくなります。マイクロコントローラーは、同じことをすばやく簡単に行う方法です。(バイトまたはワードの意味で)kビット幅であり、nのアドレスラインを持ち、メモリ内に2 ^ nの位置を占める「メモリ」を考えてみます。このメモリはデザインでプログラムされ、実際には読み取り専用です。メモリのアドレスビットを「入力」として使用し、データビットを出力として使用して、メモリをプログラミングして任意の論理機能を実現できます。

また、メモリ位置の内容を保持するためにkビット幅のレジスタを追加すると、ステートマシンが生成されます。

kビットが例えばに分割されている場合、オペコードとアドレスに。オペコードビットセットは回路の他の部分(自動販売機製品のディスペンスなど)を制御し、その他はnビット幅のメモリアドレスで、kビットの各セットは分岐機能を持つマイクロ命令になります。

これにいくつかの算術論理、いくつかのレジスター(それらの1つ以上が制御入力を左右にシフトする)を追加し、一連のマイクロ命令によって機械命令が実装されたCPUを構築できます。

1970年代と1980年代には、この設計を使用して多くの成功したコンピューターが構築されました。それらの1つ(Digital EquipmentのVAX 11)には、アドレス計算(配列と考える)を目的とした整数多項式を計算する機械命令がありました。より単純な命令を使用すると、命令をより速く実装できることがわかりました。

マイクロコントローラは、従来のステートマシンよりも効率の悪い実装である可能性があり、通常はそうです。しかし、それらは簡単に変更でき、設計がはるかに速く、優れたコントローラーソリューションです。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.