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

組み込みシステムとは、マイクロコントローラー/ DSPファームウェアプログラミング、リアルタイムシステム、電子インターフェース、ハードウェアドライバー、シリアルバス通信などの領域を含む組み込みシステムを指します。

23
高放射性環境で使用するためのアプリケーションのコンパイル
私たちは、電離放射線の衝撃を受けた環境のシールドされたデバイスに導入された組み込みC / C ++アプリケーションをコンパイルしています。ARM向けにGCCとクロスコンパイルを使用しています。デプロイすると、アプリケーションが誤ったデータを生成し、予想よりも頻繁にクラッシュします。ハードウェアはこの環境用に設計されており、アプリケーションはこのプラットフォームで数年間実行されています。 コードに加えることができる変更、または単一イベントの混乱によって引き起こされるソフトエラーとメモリ破損を特定/修正するために実行できるコンパイル時の改善はありますか?他の開発者は、長期実行アプリケーションでのソフトエラーの悪影響を軽減することに成功しましたか?
1456 c++  c  gcc  embedded  fault-tolerance 

30
ユニットテストCコード[終了]
閉まっている。この質問はスタックオーバーフローのガイドラインを満たしていません。現在、回答を受け付けていません。 この質問を改善してみませんか? Stack Overflowのトピックとなるように質問を更新します。 5年前休業。 この夏、ストレートCで書かれた組み込みシステムの作業をしました。これは、私の会社が引き継いだ既存のプロジェクトでした。私はJUnitを使用してJavaで単体テストを作成することに慣れてきましたが、既存のコード(リファクタリングが必要)とシステムに追加された新しいコードの単体テストを作成する最良の方法について途方に暮れていました。 JUnitでJavaコードを単体テストするのと同じくらい簡単にプレーンCコードを単体テストできるプロジェクトはありますか?組み込み開発(arm-linuxプラットフォームへのクロスコンパイル)に特に当てはまる洞察があれば、高く評価されます。

30
1 MBのRAMで100万の8桁の数字を並べ替える
1 MBのRAMを搭載し、他にローカルストレージを搭載していないコンピューターを使用しています。私はそれを使用して、TCP接続で100万の8桁の10進数を受け入れ、それらを並べ替えてから、並べ替えたリストを別のTCP接続で送信する必要があります。 番号のリストに重複が含まれている可能性がありますが、これは破棄しないでください。コードはROMに配置されるため、1 MBからコードのサイズを減算する必要はありません。イーサネットポートを駆動してTCP / IP接続を処理するコードが既にあり、コードがデータを読み書きするための1 KBバッファを含め、状態データには2 KBが必要です。この問題の解決策はありますか? 質問と回答のソース: slashdot.org cleaton.net

20
Arduinoコードを単体テストするにはどうすればよいですか?
私のArduinoコードを単体テストできるようにしたいのですが。理想的には、Arduinoにコードをアップロードしなくても、テストを実行できます。これに役立つツールやライブラリはありますか? ある開発中のArduinoエミュレータに有用かもしれないが、まだ使用のために準備ができていないようです。 AtmelのAVR Studioには便利なチップシミュレーターが含まれていますが、Arduino IDEと組み合わせて使用​​する方法がわかりません。

3
Linux / proc / id / mapsを理解する
組み込みLinuxアプリケーションのメモリ使用量を理解しようとしています。/proc/pid/mapsユーティリティ/ファイルには、詳細を見るための優れたリソースであるように思われます。残念ながら、すべての列とエントリを理解できません。 匿名のiノード0エントリはどういう意味ですか?これらは、より大きなメモリセグメントの一部のようです。
156 linux  embedded 

13
日常の機械はどのようにプログラムされていますか?
日常の機械(電化製品やデジタル時計など、コンピューターやモバイルデバイスではない)はどのようにプログラミングされていますか?コカコーラの自動販売機のプログラミングにはどのようなコードが含まれますか?私のコーヒーメーカーは、事前にプログラムされた時間をどのように受け入れ、その時間が到着した後、コーヒーのポットの醸造をどのように開始しますか? これらの種類のマシンは内部にオペレーティングシステムを持っていますか、それとももっと基本的なものですか?彼らはアセンブリ、C、または他の言語で書かれていますか? そして、これらのオペレーティングシステムまたは基になるコードシステムをリストするリソースを見つけたいと思います。できれば、ソースコードを使用することもできます。誰かがそのようなリソースを知っている場合(検索しても何も得られなかった)、それは素晴らしいことです。

16
Cでクラスをどのように実装しますか?[閉まっている]
休業。この質問には、より焦点を当てる必要があります。現在、回答を受け付けていません。 この質問を改善してみませんか?質問を更新して、この投稿を編集するだけで1つの問題に焦点を当てます。 12か月前に閉鎖。 この質問を改善する C(C ++またはオブジェクト指向コンパイラーなし)を使用する必要があり、動的メモリ割り当てがない場合、クラスを実装するために使用できるテクニックは何ですか、またはクラスの適切な近似は何ですか?「クラス」を別のファイルに分離することは常に良い考えですか?固定数のインスタンスを想定するか、コンパイル時間の前に各オブジェクトへの参照を定数として定義することによっても、メモリを事前に割り当てることができると想定します。どのOOPコンセプトを実装する必要があるか(それはさまざまです)について自由に想定し、それぞれに最適な方法を提案してください。 制限: 組み込みシステム用のコードを書いているので、OOPではなくCを使用する必要があります。コンパイラと既存のコードベースはCにあります。 動的にメモリを割り当て始めた場合、メモリ不足にならないと合理的に想定できるほどの十分なメモリがないため、動的なメモリ割り当てはありません。 私たちが使用しているコンパイラは、関数ポインタに問題はありません
139 c  class  oop  embedded 


15
C配列に値が存在するかどうかをすばやく見つけるには?
サイズが256(できれば1024、ただし256が最小)の配列を反復処理し、値が配列の内容と一致するかどうかを確認する必要のある、タイムクリティカルなISRを備えた組み込みアプリケーションがあります。boolこの場合、A はtrueに設定されます。 マイクロコントローラーはNXP LPC4357、ARM Cortex M4コア、コンパイラーはGCCです。私はすでに最適化レベル2(3は遅い)を組み合わせ、フラッシュではなくRAMに関数を配置しています。また、ポインター演算とforループを使用します。これは、アップではなくダウンカウントを行います(かどうかのチェックi!=0は、かどうかのチェックよりも高速ですi<256)。結局のところ、私は12.5 µsの持続時間で終了していますが、これは実現可能にするために大幅に削減する必要があります。これは私が今使っている(疑似)コードです: uint32_t i; uint32_t *array_ptr = &theArray[0]; uint32_t compareVal = 0x1234ABCD; bool validFlag = false; for (i=256; i!=0; i--) { if (compareVal == *array_ptr++) { validFlag = true; break; } } これを行う最も速い方法は何でしょうか?インラインアセンブリの使用が許可されています。他の「あまりエレガントでない」トリックも許可されています。

12
ディレクトリ内のすべてのファイルの内容の合計サイズ[クローズ]
閉まっている。この質問はスタックオーバーフローのガイドラインを満たしていません。現在、回答を受け付けていません。 この質問を改善してみませんか?Stack Overflowのトピックとなるように質問を更新します。 2年前休業。 この質問を改善する lsまたはを使用するとdu、各ファイルが占有しているディスク容量がわかります。 各ファイルを開いてバイト数を数えると、ファイルとサブディレクトリにあるすべてのデータの合計が必要です。各ファイルを開いたり数えたりせずにこれを取得できる場合のボーナスポイント。
103 linux  embedded  shell 

10
constとconstvolatileの違い
volatile新しい値が更新されるたびに変数を宣言する場合変数をとして 宣言するconst場合、その変数の値は変更されません それでは、上記のようにconst volatile int temp; 変数を宣言することの使用法は何tempですか? として宣言するとconst int tempどうなりますか?
89 c  embedded 

6
8ビット組み込みシステムで使用できるflex / bisonの代替手段はありますか?
私は、avr-gccツールチェーンを使用したCのAVRマイクロコントローラーの演習として、言語のような単純なBASIC用の小さなインタープリターを書いています。ただし、レクサーとパーサーの作成に役立つオープンソースツールがあるかどうか疑問に思っています。 Linuxボックスで実行するようにこれを作成する場合は、flex / bisonを使用できます。8ビットプラットフォームに制限したので、すべて手作業で行う必要がありますか?

30
組み込み開発にC ++の代わりにCを使用する理由はありますか?
質問 ハードウェアC ++とC89に2つのコンパイラがあります クラスでC ++を使用することを考えていますが、ポリモーフィズムはありません(vtableを回避するため)。C ++を使用したい主な理由は次のとおりです。 マクロ定義の代わりに「インライン」関数を使用することを好みます。 プレフィックスがコードを乱雑にするので、名前空間を使用したいと思います。 C ++は、主にテンプレートと冗長なキャストのために、少しタイプが安全だと思います。 私はオーバーロードされた関数とコンストラクター(自動キャストに使用される)が本当に好きです。 非常に限られたハードウェア(4kbのRAM)向けに開発する場合、C89を使い続ける理由はありますか? 結論 あなたの答えをありがとう、彼らは本当に役に立ちました! 私は主題を熟考しました、そして私は主に以下のためにCに固執します: Cで実際のコードを予測する方が簡単です。これは、RAMが4kbしかない場合に非常に重要です。 私のチームは主にC開発者で構成されているため、高度なC ++機能はあまり使用されません。 Cコンパイラ(C89)で関数をインライン化する方法を見つけました。 あなたがたくさんの良い答えを提供したので、1つの答えを受け入れるのは難しいです。残念ながら、ウィキを作成して受け入れることができないので、私が最も考えさせられた答えを1つ選びます。
82 c++  c  embedded  c89 

1
このC ++ AtomicInt実装は正しいですか?
前提:私はARM組み込み(ほとんどベアメタル)環境で作業していますが、C ++ 11(も)さえ使用できないので、「標準のC ++のみを使用するstd::atomic<int>」などの回答は避けてください:できません。std::atomic<int> このAtomicIntのARM 実装は正しいですか?(ARMアーキテクチャがARMv7-Aであると想定) 同期の問題が発生していますか?それはvolatile必要/便利? // File: atomic_int.h #ifndef ATOMIC_INT_H_ #define ATOMIC_INT_H_ #include <stdint.h> class AtomicInt { public: AtomicInt(int32_t init = 0) : atom(init) { } ~AtomicInt() {} int32_t add(int32_t value); // Implement 'add' method in platform-specific file int32_t sub(int32_t value) { return add(-value); } int32_t inc(void) { …
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.