どのようにファームウェアは、その操作を実行する電子機器に通信しますか?

StackOverflow https://stackoverflow.com/questions/1761334

  •  21-09-2019
  •  | 
  •  

質問

ほとんどすべての電子機器のファームウェアが付属しています。私は(読み取り専用メモリ)それはROMに格納されて知っているので、非揮発性(RAMのように消去し得ることから内容を保持するために必要な無動力源)となりません。

私が知りたいことは、「ファームウェアがその操作を実行する電子機器に通信する方法は?」です それは移動することができますどのように、ボタンを押すだけで...小さなローラーがあるとしましょうか? 誰かがそれを実現するために、背後に常駐しているかを説明してくださいすることができます。.. 私はそれをほどくには少し簡単な説明が必要かもしれないと思う..

また、ファームウェアを符号化するために使用される最も人気のある言語は何ですか?

役に立ちましたか?

解決

あなたが記述しているような近代的なハードウェアは、そのプログラムを実行するROMに格納されたプログラムと汎用マイコン(CPU)を持っています。

CPUは、そのアドレスバス上のアドレスを設定し、その場所に格納された値を、それを伝えるためにROMを要求することによりROMから情報を読み取ります。データバスのライン上の値にアクセスできるようにROMを伝えるために(別の行に)提起された読み出しパルスのようなものがあります。それは、一言で言えば、読んでます。

何かをするためのハードウェアを取得するには、CPUは、基本的には、書き込み動作の種類を実行します。それはあなたが特定のデバイスを選択し、おそらくそのデバイス上で機能するように、アドレスバス上、それをそのように見てみたい場合は、それは言って別の信号線を発生させるビットのちょうど束である値を、置く「書きます!」アドレスバス上のアドレスを認識デバイスは、データバスからのデータを受け入れ、その機能が何であれ行うことにより、その信号に応答します。典型的には、データ・バス・ビットの1つは、ちょうど計算に使用されるものよりも強いトランジスタ、すなわち、パワー出力段に出力装置内で接続され、そのトランジスタを作るために十分な電流をいくつかの電気デバイスを接続することムーブ/グロー/どんなます。

小型、安価なデバイスは、ROMのためにコストを節約するためにアセンブリ言語でコーディングされています。工業的な量で、メモリの少量でも価格に影響を与えることができます。アセンブリ言語は、CPUに固有のものです。 「8051」、「6502」と「アトメル(何かまたは他)」と呼ばれるいくつかのチップが人気があります。より複雑な要件を持つ大きな装置は、それらのファームウェアがCやアセンブラよりも少し楽になりプログラミングC-ような方言で書かれています。 biggesのものであってもC ++のコードを実行します。もちろん、コンパイルされます。

他のヒント

ほとんどのシステムではI / Oのために使用されている特殊なメモリアドレスがあります。読むと、このようなアドレスに書き込むことは、単に周りにデータを移動するのではなく、いくつかの機能を実行します。 x86システムでは、そのための特別なI / O命令INとOUTもあります。

最も単純な場合は、デバイス上の外部電気ピンへ/から直接データを読み取りまたは書き込むことができる一般的なパラレルI / O(GPIO)と呼ばれています。あなたがポートにデータを書き込むことができ、そしてどこで特定のピンであるかどうかを定義することができ(0 = 0付近の電圧、周辺電源電圧= 1)、ポートからデータを読み出すことができるいくつかのメモリアドレスと呼ばれるレジスタが、あります入力(対応するビットは、典型的には0である)、または出力(ビットが1です)。すべてのマイクロコントローラは、GPIOを持っています。

だからあなたの例では、ボタンは、ソフトウェアが感じることができ、入力に設定した端子に接続することができます。それは、典型的には、この10msごとを行うと、いくつかの読み取りのために、それは安定した値を持つ場合にのみ、これはデバウンス呼ばれ、反応するであろう。それはいくつかのトランジスタを介して増幅用のモータを駆動することができ、いくつかの出力に1を書き込むことになります。それはあなたがスイッチを離すことを検知した場合には、0を書き込むことにより、オフ再びモーターを回すことができるというように、このプログラムは、デバイスをオフにするまで実行します。

これらを制御するレジスタの通常何百もの他の目的のために、他のI / Oデバイスがたくさんあります。あなたがより多くを見たい場合は、いくつかのマイクロコントローラのデータシートに見ることができます。例えば、ここでATtiny4のデータシート/ <5/9/10 /ありますアトメルAVRファミリーからA>、非常に小さなコントローラます。

今日最もファームウェアは、最小デバイスおよびアセンブリ言語で記述されてリセットされ、割り込みを処理するための少しの特別なコードを除いて、Cで書かれています。

scroll top