[解決済み] 身近な機械はどのようにプログラムされているのか?[クローズド]。
質問
この質問を改善したいですか? 問題を更新して、1つの問題だけに焦点を当てるようにする。 本論文の編集 .
クローズド 昨年 .
身近な機械(コンピュータやモバイル機器というより、家電やデジタル時計など)は、どのようにプログラムされているのでしょうか?コカ・コーラの自動販売機のプログラミングには、どんなコードが使われているのでしょうか?私のコーヒーメーカーは、あらかじめプログラムされた時刻を受け入れ、その時刻になったら何時間か後にコーヒーを淹れ始めるのだろうか?
この種の機械にはOSが搭載されているのでしょうか、それとももっと基本的なものなのでしょうか。アセンブリ言語、C言語、その他の言語で書かれているのだろうか?
そして、これらのオペレーティングシステムや基礎となるコードシステムをリストアップしているリソースを、可能であればソースコードも含めて見つけたいと思います。もし誰かがそのようなリソースを知っていれば(検索しても何も出てきません)、それは素晴らしいことです。
解決方法は?
あなたが話していることのほとんどは、C言語が利用できないかもしれない贅沢な組み込みシステムです。 特に、設計者が使用するチップを「マイクロコントローラ」と表現している場合は、デスクトップや携帯電話のようにOSの下で動作する個別のプログラムでないことがよくあります。
ほとんどの場合、ソフトウエアはC言語かアセンブリで書かれています。 C言語はそのプラットフォーム用に書かれたコンパイラが必要ですが(うまく最適化しないと肥大化した非効率なasmを生成するかもしれません)、単純なアセンブラはテキストを1行ずつマシンコードにするだけなので、簡単に書くことができます。 (そして、もしベンダーが自社のマイクロコントローラーを誰かに買ってもらいたいのであれば、開発を魅力的にするために少なくともアセンブラは存在するようにするでしょうし、時には非最適化ではありますがCコンパイラも存在することが多いでしょう)
コーヒーポットや、そのようなシンプルなシステムのほとんどは、オペレーティングシステムを搭載していないんだ。 単にメモリ内の開始アドレスからロードして、そこにコードを置くだけです。 多くの場合、これらのシステムは、システムのハードディスクとして機能するEEPROMにコードを書き込んでいます。 EEPROMやフラッシュの種類によっては、RAMにロードすることなく、フラッシュから直接コードを実行できる場合もあります。 (デバイスは自身のフラッシュメモリに書き込むことができないかもしれませんが、それは外部ツールを使って行います。 編集/コンパイル/実行のサイクルには、シミュレータでテストしない場合、実際のハードウェアのフラッシュを再プログラミングすることが含まれます)。
コカコーラ社のマシンやルーターなどは、一般的にQNXやEMBOS、運が良ければRTlinuxなどのリアルタイムOSを使用しています。 これらのほとんどは、高額なライセンス料を払って購入するプロプライエタリなOSですが、Cコンパイラやハードウェアと連動するドライバなどが用意されています。
http://www.segger.com/cms/embos.html
RTLinux
関連
-
[解決済み] Linuxカーネルにおけるcontainer_ofマクロの理解
-
[解決済み] 1ビットのセット、クリア、トグルはどのように行うのですか?
-
[解決済み] C言語で配列のサイズを決定するにはどうすればよいですか?
-
[解決済み] 配列のすべてのメンバーを同じ値で初期化するには?
-
[解決済み] Javaでオペレーティングシステムをプログラム的に決定するには?
-
[解決済み] ファイルディスクリプタとは何か、わかりやすく解説します。
-
[解決済み] 2次元配列の反復処理において、ループの順序がパフォーマンスに影響するのはなぜですか?
-
[解決済み】ネストされたディレクトリを安全に作成するには?
-
[解決済み】C言語の関数ポインタはどのように機能するのですか?
-
[解決済み】なぜこれらのコンストラクトはプリインクリメントとポストインクリメントを使用して未定義の動作をしているのでしょうか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
g++が内部・外部コマンドソリューションとして認識されない、MinGWを初めて使うときの落とし穴
-
libc++abi.dylib: NSException タイプの捕捉されない例外で終了するエラー
-
赤線の位置は必ずしも間違っていない:式は変更可能なlvalueでなければならないエラーは、この文とは別の場所に存在する可能性があります。
-
警告:代入がキャストなしで整数からポインタを作成する場合の修正方法に関する警告
-
未定義の `__isoc99_sscanf' への参照
-
C: 1を求める! + 2! + 3! + ... + n! (ループ)
-
[解決済み] Xcode - 警告。C99 では関数の暗黙の宣言は無効です。
-
[解決済み] C言語で関数をパラメータとして渡すにはどうすればよいですか?
-
[解決済み] longをフォーマットするprintfの引数は何ですか?
-
[解決済み] C言語の構造体(CGRectやCGPointなど)をNSLog化することは可能ですか?