web-dev-qa-db-ja.com

マイクロコントローラーのプログラミングと組み込みシステムのプログラミングの違いは何ですか?

組み込みシステム(Tegra、Raspberryなど)とマイクロコントローラーの正確な違いは何ですか?違いはあると思いますが、わかりづらいです。

「マイクロコントローラー用に開発できますか」と彼が言うとき、1つの意図は何ですか?組み込みシステム用にC/C++でプログラムするだけという意味ですか?組み込みシステムとマイクロコントローラーのC/C++でのプログラミングの違いは何ですか?私がC/C++でARMをプログラムするのが一般的である場合、マイクロコントローラーをプログラムできると言えますか、それともそのような仕事に応募できますか?

1
user3545072

これは私の経験/意見のすべてであり、金属にかなり近いフィールドでの作業から収集されました。

「組み込みシステム」は通常、デスクトップシステムと比較して、重要な重要なメモリまたは速度の制約がある状況です。これらの組み込み状況には、マイクロコントローラーが含まれる場合がありますが、チップ上のx86システム、およびPC104やその他のフォームファクターなどのシステムも含まれる場合があります。 LinuxやWindowsCEなどの「一般的な」OSを実行できますが、常に実行できるとは限りません。それらは通常、デスクトップ/サーバーアプリケーションよりもはるかに少ないメモリと速度を持っていますが、通常、マイクロコントローラで使用する必要があるようなものに16ビット整数と32ビット整数のどちらを使用するかについて長く懸命に考える必要があるほど少なくはありません。

たとえば、Raspberry Piは700MHzで動作し、256または512メガバイトのRAMを搭載しています。たとえば、Atmel ATMega32U4マイクロコントローラーは、最大16MHzで動作し、RAMは2560 bytesのみです。 ARMコアを利用するSTM32デバイスの中には、最大24MHzで動作し、約8kBのRAMを搭載しているものがあります。2つのデバイス間で速度とメモリにかなりの違いがあります。デスクトップとRaspberryPiよりも劇的です。

マイクロコントローラーのプログラミングは、さらに重要なメモリと速度の制約がある組み込みシステムのサブセットですが、マイクロコントローラーが接続されているハードウェアとの密接な関係もあります。エッジクロックトリガーの立ち下がりまたは立ち上がり、ウォッチドッグタイマー、外部割り込みトリガー、アナログからデジタルへの変換タイミングの問題、およびデスクトップシステムでは通常長い間抽象化されているその他の多くのことについて考えることに多くの時間を費やします。さまざまな操作で使用されている電力量に注意する必要があり、消費電力要件を満たすようにソフトウェアを作成する必要がある場合もあります。

マイクロコントローラ用にプログラムするまでは、できると主張するのは賢明ではありません。オシロスコープを使用してSPIバス周辺機器が話していない理由を理解する必要がある日が来るまで、これまで目に見えなかったものの種類はまだわかりません。

7
whatsisname