タグ付けされた質問 「embedded-systems」

「組み込みシステムは、大規模なシステム内の特定の制御機能用に設計されたコンピューターシステムであり、多くの場合、リアルタイムコンピューティングの制約があります。」マイケル・バー。「組み込みシステム用語集」。ニュートリノテクニカルライブラリ。ウィキペディアからコピー、2007-04-21を取得。

5
組み込みシステムの単一アレイに膨大な量のスタックを割り当てることには欠点がありますか?
通常、一部のデータをグローバルにするか、静的にするか、スタック上に置くかを決定するのに問題はありません(ここでは動的な割り当てがないため、ヒープを使用しません)。このようないくつかのQ / Aも読んだことがありますが、システムメモリに比べて膨大な量のデータが含まれるため、私の質問はより具体的です。 改善しようとしている既存のコード(設計、考えられる問題、パフォーマンスなど)を扱っています。このコードは、RAMが4KBのみの古い8ビットMCUで実行されます。このコードでは、ほぼ1KBのアレイの使用に直面しています(はい、4KB RAMシステムでは1KB)。この配列の各バイトが使用されますが、それは問題ではありません。問題は、この配列は宣言されているファイル内の静的配列であるため、そのライフサイクルはプログラムの配列と同じである(つまり、無限と見なすことができる)ということです。 ただし、コードを読んだ後、この配列には無限のライフサイクルが必要ないことがわかりました。完全に手続き的な方法で構築および処理されるため、使用する関数でのみ宣言できるはずです。この方法ではスタック上にあるため、この1KBのRAMを節約します。 質問:これは良いアイデアでしょうか?設計の観点から、無限/グローバルライフサイクルを必要としない場合、スタックに属します。しかし、これは4KBのうち1KBですが、このようにRAMの25%を割り当てるという欠点はありませんか?(スタックの50%以上になる可能性があります) 誰かがこの種の状況の経験を共有できますか、または誰かがこの配列をスタックに入れない正当な理由について考えますか?技術的な欠点と設計に関するコメントを探しています。 私が意識している唯一のことは、この関数に入るときに実際に1KBのスタックが空いていることを確認する必要があるということです。多分それは私が世話をしなければならないことすべてであり、多分そうではない。

3
OO Cのパブリック関数とプライベート関数の一般的な命名規則は何ですか?[閉まっている]
閉じた。この質問は意見に基づいています。現在、回答を受け付けていません。 この質問を改善したいですか?この投稿を編集して事実と引用で答えられるように質問を更新してください。 4年前に閉鎖されました。 短い質問 OO Cプロジェクトの「パブリック」メンバーと「プライベート」メンバーに名前を付ける一般的な方法はありますか? 背景 私は、パブリックおよびプライベートメンバーがC言語に実際に存在しないことを完全に理解しています。ただし、ほとんどのCプログラマーと同様に、OO設計を維持するためにメンバーをパブリックまたはプライベートとして扱います。典型的なオブジェクト指向の方法に加えて、私は私がされている方法を区別することが容易になり、パターン(以下の例を参照)、以下の私の自己を発見したもので、より少ないチェックを有することができるプライベートメンバー対外の世界のために/より効率的などです...そのようなことに対して標準またはベストプラクティスが存在するか、またはこれにアプローチするための良い方法は私の例ですか? ヘッダーの例 #ifndef _MODULE_X_H_ #define _MODULE_X_H_ bool MOD_X_get_variable_x(void); void MOD_X_set_variable_x(bool); #endif /* _MODULE_X_H_ */ サンプルソース // Module Identifier: MOD_X #include "module_x.h" // Private prototypes static void mod_x_do_something_cool(void); static void mod_x_do_something_else_cool(void); // Private Variables static bool var_x; // Public Functions - Note the upper …

1
Curiosityローバーからの伝送をMRO経由でデコードするのになぜ時間がかかるのですか?
NASAによるこのビデオクリップは、火星偵察オービター(MRO)によって中継されたCuriosityからのデータが数時間保存され、その後地球に送信され(見かけ上約14分かかる)、その後エンジニアがデコードするのに数時間かかると述べていますデータ。 私が読んだことから、MROは必要に応じてCuriosityのバックアップ通信デバイスとして使用できるようです。 Curiosityの着陸の場合、MROはデータを格納し、それが赤い惑星の周りを周回し、それを送信する前に地球との直接の視線を持つようになると考えています(それから、ここで推測するだけです)理解する。 しかし、なぜ地球上でここに受信された後、MROによって中継された信号をデコードするのにNASAエンジニアは何時間もかかるのでしょうか? (ボーナスポイント:通常、MRO信号をデコードするには数時間かかりますか?)

4
監督なしで組み込みシステム開発を学ぶ[終了]
現在のところ、この質問はQ&A形式には適していません。回答は事実、参考文献、専門知識によって裏付けられると期待していますが、この質問は、議論、議論、投票、または拡張ディスカッションを求める可能性があります。この質問を改善でき、再開できると思われる場合は、ヘルプセンターにアクセスしてください。 7年前休業。 私は今年卒業し、Cプログラミング、Linux管理、組み込みシステム開発に携わりました。私は自分の仕事にはかなり満足していると思いますが、私はこの分野で成功するプログラマーになることはないと思います。私は今、仕事の中で唯一の開発者です。チームメイトはハードウェアの専門家なので、組み込みプログラミングの方法を教えたり教えたりする人はいません。自分ですべてを勉強する必要があります。 だから私の質問です。上級プログラマーの監督なしでエントリーレベルのポジションから始めて、優れた組み込みシステム開発者になることは可能ですか?どうすれば1つになることができますか(おそらく、フォーラム、IRCチャネル、優れた教科書の助けを借りて)?どれくらいかかりますか? 更新:これまでのところ、役立つ回答をいくつか受け取りましたが、この件について具体的な指針が必要であることに気付きました。 だから、ここに私の特定の質問があります: 組み込み開発を学ぶために使用できる優れた教科書は何ですか? 意欲的な組み込み開発者にとって役立つ専門のオンラインコミュニティはどれですか(Stack Overflow、Redditなどの一般的なものは数えません)? 組み込み開発に特化した最も興味深いブログは何ですか?

4
Cで「デストラクタ」を省略すると、YAGNIが過度に影響を受けますか?
私はOOのようなテクニックを使用して、Cで中程度の組み込みアプリケーションに取り組んでいます。私の「クラス」は.h / .cモジュールであり、データ構造体と関数ポインタ構造体を使用して、カプセル化、ポリモーフィズム、および依存性注入をエミュレートします。 これで、myModule_create(void)関数にmyModule_destroy(pointer)対応する関数が付属することが期待されます。しかし、プロジェクトが埋め込まれている場合、現実的にインスタンス化されたリソースは決して解放されるべきではありません。 つまり、4つのUARTシリアルポートがあり、必要なピンと設定を使用して4つのUARTインスタンスを作成する場合、ランタイム中のある時点でUART#2を破棄する必要はまったくありません。 YAGNI(あなたはそれを必要としないでしょう)の原則に従って、私はデストラクタを省略すべきですか?これは私には非常に奇妙に思えますが、それらの使用法を考えることはできません。デバイスの電源がオフになると、リソースは解放されます。

1
「汎用システム」とはJava SE Embeddedの意味を教えてください。
OracleのWebサイトでは、Java SE Embedded ライセンスについて次のように述べています。 開発は無料ですが、汎用システム以外に展開する場合はロイヤリティが必要です ここで「汎用システム」とはどういう意味ですか? 全国にセンサーネットワークがあります。インストールした各ボックスには、環境からデータを取得し、シリアルポートでARMベースの組み込みボードにデータを送信するマイクロコントローラーベースのボードがあります。このボードシステムには、JMSを使用してデータを読み取り、中央サーバーに送信するJavaプロセスがあります。これは汎用システムに分類されますか? すみません、こちらでお願いします。私たちはイランにいます、ここに尋ねるオラクルオフィスはありません。

3
カスタムヒープアロケーター
ほとんどのプログラムは、関数型プログラミング言語が古いオブジェクトを変更するよりも新しいオブジェクトを割り当てることを好み、ガベージコレクターが解放することを心配する程度にまで、ヒープの割り当てについてかなりカジュアルになり得ます。 ただし、組み込みプログラミングのサイレントセクターでは、メモリとリアルタイムの制約により、ヒープ割り当てをまったく使用できないアプリケーションが数多くあります。処理される各タイプのオブジェクトの数は仕様の一部であり、すべてが静的に割り当てられます。 ゲームプログラミング(少なくともハードウェアのプッシュに意欲的なゲームでは)は、その中間になることがあります。動的割り当てを使用できますが、アロケーターをブラックボックスとして処理できない十分なメモリとソフトリアルタイム制約があります、ガベージコレクションはもちろんのこと、カスタムアロケータを使用する必要があります。これが、ゲーム業界でC ++が依然として広く使用されている理由の1つです。http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2271.htmlのようなことができます その中間の領域には他にどのようなドメインがありますか?ゲームとは別に、カスタムアロケーターが頻繁に使用されていますか?

3
ソフトウェアで、「組み込み」という用語は何を意味しますか?
だから私は組み込みおよび低レベルのハードウェアプログラミングに関する知識を深めることを検討してきましたが、「組み込み」について言及する仕事を探すたびに、それは常に高レベルのものです。私には、それはあまり意味がありません。 では、「埋め込まれた」とは具体的に何を伴うのでしょうか。組み込みについて考えるとき、私は低レベルのマイクロコントローラーのプログラミングなどを思い浮かべます。埋め込みが適切なタイトルではない場合、何を検索すればよいですか?

2
組み込みLinuxとWindows Embedded Standard 7 [終了]
閉まっている。この質問はトピックから外れています。現在、回答を受け付けていません。 この質問を改善してみませんか? 質問を更新して、ソフトウェアエンジニアリングスタック交換のトピックになるようにします。 3年前休業。 本当に主観的な答えを探しています。私の会社は伝統的にLinuxショップでした。ビデオセキュリティ用の専用ボックスを製造、販売しています。私たちは最近、開発と市場投入までの時間を短縮し、すべてのツールがWindowsですぐに利用できるため、組み込みWindows標準7ボックスを構築することを決定しました。 WES7とLinuxのセキュリティに関連しているため、私が探しているのはいくつかの確かな答えです。WES7の安定性、ハッキングの試み、ウイルス攻撃などの傾向があります。マーケティングの観点から、LinuxでWES7を使用する利点は何ですか?いずれかがあります? デスクトップWindows 7と組み込みWindows Standard 7のセキュリティにはどのような比較がありますか? 任意の応答をいただければ幸いです。ありがとう

1
組み込みシステムの構成メニューの設計上の考慮事項
私は、いくつかのボタンと小さなグラフィックディスプレイでユーザーとインターフェイスする組み込みシステムに取り組んでいます。 余談ですが、私は組み込みシステムを使用しているので、動的なメモリ割り当てをできるだけ回避したいと思います。std :: vectorのようなものは利用できません。 次のように、クラシックなネストされたメニュー構造を使用して構成メニューを実装する必要があります。 Level A Node 1 -> Level B Node 1 -> Level C Node 1 -> Level B Node 2 -> Level B Node 3 Level A Node 2 Level A Node 3 ここでの最善のアプローチについてはよくわかりません。複合パターンを使用するなど、このようなものにアプローチするいくつかの方法について読みました。しかし、私はいつも「紙の上」では良さそうに見えても、実装するのは面倒そうなものにぶつかります。 私の一般的な考えはMenuNode、初期化時にそのサブノードと親ノードについて知っているクラスを持つことです。Menuクラスは、ノードナビゲーションおよび処理を扱うことができます。明らかに、すべてMenuNodeが次のような特定の動作を実行/実装する必要があります。 Menu何を表示したいかを報告します(実際のレイアウト/配置はの問題ではありませんMenuNode)。 ユーザー入力に反応する(値を増減する/ボタンを押すなど) 関心のある実際の値にアクセスする(ApplicationSettingsクラスに属している) これを実装する最良の方法は何でしょうか? (抽象的な)MenuNode基本クラスを使用して、すべてのメニューノード項目のサブクラスを作成します。初期化中に、ApplicationSettings必要になる可能性のある他の依存関係へのポインタを提供できます。どういうわけか、それぞれが一度だけインスタンス化される10個の派生クラスを作成するのは間違っていると感じています。 MenuNodeすべてのノードに同じクラスを使用し、関数を解放するコールバックを通じて機能を実装します。私が読んだことから、そのかなり一般的なものは、自由な関数をオブジェクトと「結合」することです。しかし、それは物事を複雑にしてしまうような気がします。ReportButtonPress()などのメンバーごとに、初期化中に実際の実装のコールバックを提供する必要があります。 ここで見落としているものがあると思います。

1
メッセージパッシングをCPUの冗長性と負荷分散構造に使用できますか
複数のプロセッサを備えたベアメタルまたは最小限のRTOSタイプの組み込みシステムで、メッセージパッシングインターフェース(MPI)を使用して同一のプログラムを各プロセッサで実行し、ロードバランシングとプロセッサ障害時の冗長性を提供することは可能ですか?渡されたメッセージに基づいて他のCPUが実行するアクションを変更するステートマシンなど。たとえば、ロードバランシングまたは定期的なアライブメッセージの送信のためにシステムループの一部を引き継ぐように別のプロセッサに要求し、各CPUが何を担当しているかを記憶するCPUの冗長性。 この例の図では、「オープン」である完全なシステムループの実際の部分は、異なるシステムである可能性があります。ある種の非常に原始的な非対称マルチプロセッシングで、各CPUで実行されている完全なシステムループの一部を開いたり閉じたりする機能だけでは、協力がありません。別のCPUへの「プロセスの移行」は、別のCPUがシステムループのその部分を開くように要求することによってトリガーされます。その後、要求側のCPUがその部分を閉じるか、クエリが実行されたときに別のCPUからの応答がないため、一定時間存続する。 組み込みOSを移植してカスタムボードで対称または非対称のマルチプロセッシングを実際に実行することはできず、理論的には可能であるように思えますが、設計が非常に悪いため、これは潜在的なプロセッサ障害の解決策およびロードバランシングの解決策として提案されています考え。また、この方法でメッセージパッシングを使用するための設計パターンやアルゴリズムを見つけることができませんでした。 ソフトウェアエンジニアリングの決定に重要な背景:学生のCubeSatプロジェクト(採点またはクラス用ではありません)。オペレーティングシステムの設計に関する知識がほとんどまたはまったくない、ほとんどが中学生の小規模なソフトウェア開発チームがあります。さまざまな理由により、私が読んだ多くの現実的な解決策のいずれも実行できません。これは、チームが対処するのに複雑すぎるほど導入される可能性があるように聞こえるかもしれませんが、それが可能であっても、CubeSatを軌道に乗る岩石に変えるいくつかの問題につながる恐ろしい設計を引き起こす可能性があるようです。 スペースフェアリングに十分な信頼性のある方法でメッセージパッシングを実装できるかどうかさえわかりません。小さなOSまたはベアのバスでメッセージを渡すために使用できるプロダクション対応の通信プロトコルを見つけることもできませんでした。私たちが必要とするような金属。しかし、私は、プロセスの移行、CPUの冗長性、およびロードバランシングのためのこの提案されたソリューションが、安全性が重要なシステムでも実行可能かどうかを知りたいと思っています。検出が困難なスリープ状態から復帰すると、2つのCPUが同じ「プロセス」またはプログラムループの一部を実行している状態になる可能性があります。

4
組み込みシステムデバイス用のスクラム
当社では、一括通知に使用する新製品をお届けする予定ですので、組込みソフトウェアプロジェクトであり、SCRUMを製品のフレームワークとしてご利用いただきます。 製品のバックログの記録を開始しました。私が理解したことに基づいて、製品のバックログは各アイテムのビジネス価値を反映する必要があります。組み込みソフトウェアの性質は、SPI、UART、イーサネット、WIFIなどのマイクロコントローラー用のドライバーを作成するために大量の時間を消費する多くの技術的詳細があることです。 たとえば、システムは通知のためにメッセージを再生することで音を出しているので、メッセージを再生することがビジネス上の価値であることは明らかですが、この目標を達成するために、どのような方法でもない要件を書き留める必要があります。 SPI、MP3デコーダーチップドライバー、SDカードドライバー、そして最後にFATなので、以前のすべてのドライバーには、製品バックログに書き込む必要がある要件があります。サブ要件。 これらはクライアントのビジネス価値を反映していません。製品のバックログをどのように作成するのですか?

4
GUIをコマンドラインアプリに追加するためのいくつかの標準的な設計方法は何ですか?[閉まっている]
休業。この質問には、より焦点を当てる必要があります。現在、回答を受け付けていません。 この質問を改善してみませんか?質問を更新して、この投稿を編集するだけで1つの問題に焦点を当てます。 6年前休業。 単純なCLIで実行される組み込みLinux Cアプリケーションがあります。現在、コマンドラインプログラムと同じ機能を実行するGUIを作成する必要があります。私は熟練したGUIデザイナーではなく、私の経験が深く埋め込まれたCコーディングである場合は大多数です。 私の最初の考えは、qtcreatorを使用してGUIを作成することですが、私が反省しているいくつかの問題があります。 今後は、CLプログラムとGUIプログラムの両方を維持したいと思います。できれば、どちらのモードでも起動できるまったく同じ実行可能ファイルにすることもできます。これが悪い考えでない限り? 私のコードはこれまでのところCにあり、qtはネイティブでc ++です GUIでボタンを押すと、CLIから呼び出すのと同じ関数を呼び出す直接相関関係が欲しい これをクリーンかつ効率的に行うにはどうすればよいですか?これを簡単にする他の技術やライブラリはありますか?もっと良いものがあればqtを使う必要はありません。
8 c  gui  embedded-systems  qt 

4
小さな埋め込みプロジェクトに適した解釈言語[終了]
閉まっている。この質問はトピックから外れています。現在、回答を受け付けていません。 この質問を改善してみませんか? 質問を更新して、ソフトウェアエンジニアリングスタック交換のトピックになるようにします。 6年前休業。 小さなARM Cortex M3を搭載したmbedマイクロコントローラーを持っています。基本的に、プロジェクトに効果的なリソースは、最大25 KBのRAMと最大400 KBのフラッシュです。I / Oには、PS / 2キーボード、VGAフレームバッファー(文字出力付き)、およびプログラムの保存/読み込み用のSDカード(最大で数MB)があります。 私が物事に実装するプログラミング言語を理解しようとしているので、私は尋ねます。私は実装が簡単で、リソースを無駄にしないインタープリタード言語を探しています。私はこれも少なくともデバイス自体に書き込むことができるようにするつもりですが、エディターは解釈できます(そう、ブートストラップ)。 とにかく、私はいくつかの単純な言語を見てきました。いくつかの素晴らしい候補: 前方へ ベーシック スキーム? 誰かがこのようなことをしたり、この法案に合う可能性のある言語を知っていたり、これまでに私の3人の候補者についてコメントしたりしていますか?
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.