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

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

2
Mars Curiosity Roverのソフトウェアは何に組み込まれていますか?
火星好奇心の探査車が正常に上陸した、とプロモーションビデオ「恐怖の7分」の一つは、コード50万行あることについてが自慢します。それは複雑な問題であり、間違いありません。しかし、それは多くのコードであり、確かにその背後にはかなり大きなプログラミング努力がありました。このプロジェクトについて誰か知っていますか?ある種の埋め込みCであるとしか想像できません。

7
組み込み開発の単体テスト時のベストプラクティス
組み込みシステム用に記述されたユニットテストコードのベストプラクティス戦略を探しています。組み込みシステムとは、デバイスドライバー、ISRハンドラーなどのコード、つまり金属に非常に近いものを意味します。 ICEを使用してハードウェアでテストしないと、ほとんどのユニットテストは不可能です。組み込みユニットは、機械式スイッチ、ステッピングモーター、電球などの他の刺激にも接続する必要がある場合があります。これは通常、手動で行われます。自動化は優れていますが、達成するのは難しく、費用がかかります。 更新 組み込みプロジェクトのテストで非常に成功していると思われるCテストフレームワークに出会いました。ハードウェアをモックするというアイデアを使用します。チェックアウトユニティ、CMockを、そしておそらくceedlingが。 2016年7月6日更新 出くわしたcmocka -より積極的に取り組んでいるように見えます。

8
組み込みプログラミングは、電気工学やソフトウェア開発に近いですか?[閉まっている]
私はマイクロコントローラーに組み込みCを書く仕事に就いています。最初は、ソフトウェアスタックではプログラミングの埋め込みが低すぎると思っていましたが、おそらく間違っていると考えています。 私は自分自身を電気技師とは考えていないので、通常は埋め込みコードを書く機会を逃げていました。これは悪い仮定ですか?組み込みシステム用の興味深く有用なソフトウェアを書くことができますか、それともソフトウェアスタックが低すぎて自分自身を蹴飛ばすでしょうか? 私はコンピューターサイエンスの学校に通い、コンパイラの作成、並行アルゴリズムの検討、データ構造の設計、フレームワークの開発を本当に楽しんでいました。しかし、私は現在、Web開発者として雇用されており、今説明した興味深いことを叫んではいません。(現在、「このチェックボックスは左に4ピクセルにする必要があります」や「この日付の形式が間違っている」などの問題に対処しています。) 皆様のご協力に感謝します。私は自分で決断を下さなければならないことを知っています。組み込みプログラマになることの意味と、面白いと思うものに合うかどうかを明確にしたいと思います。

2
Voyagerミッションのコード開発プロセス?
Voyager 1は2012年8月に星間空間に到達し、現存する最も遠い人工物です。1977年に双子の宇宙船Voyager 2の直後に打ち上げられたVoyager 1は、木星系と土星系を探索し、新月、活火山、外部太陽系に関する豊富なデータを発見しました。 Voyager 1および2は、176年に1回しか発生しない希少な惑星配列を利用するように設計されており、歴史上最もよく旅行された宇宙船のままです。両方の宇宙船には、ゴールデンレコードと呼ばれる一種のタイムカプセルが搭載されています。これは、私たちの世界の物語を地球外生物に描写するために選択された音と画像を含む12インチの金メッキ銅ディスクです。 私は、この任務のためにソフトウェアを構築していた人々の大部分が現在退職していると思いますが、過去35年間でプログラミング、プログラミング言語はこれまでに進歩しました。 35年後、ボイジャーは星間空間に到達しました。何行のコードがあり、どの言語で書かれていますか?このミッションの背後にある開発プロセスは何でしたか(それはまだアクティブです)。 それで、このミッションでのコードのより大きな計画は何でしたか、そしてどの言語でコードベースが書かれていますか?

7
CRCのより高速な代替手段は何ですか?
私はdsPICからPCへのデータ送信を行っており、エラーがないことを確認するために512バイトのブロックごとに8ビットCRCを行っています。CRCコードを有効にすると、約33KB /秒になりますが、それなしでは67KB /秒になります。 チェックアウトする高速な代替エラー検出アルゴリズムは何ですか?

2
組み込みC開発者向けの優れた単体テストの例[終了]
閉まっている。この質問はトピック外です。現在、回答を受け付けていません。 この質問を改善したいですか? 質問を更新して、 Software Engineering Stack Exchangeのトピックになるようにします。 6年前に閉鎖されました。 来週、ユニットテストとテスト駆動開発について私の部署に講演する予定です。その一環として、最近書いたコードから実際の例をいくつか紹介しますが、講演で書く非常に簡単な例をいくつか紹介したいと思います。 私はウェブ上で良い例を探してきましたが、開発分野に特に当てはまるものを見つけるのに苦労していました。私たちが作成するソフトウェアのほとんどは、小型のマイクロコントローラーで実行される埋め込み型の制御システムです。ユニットテストに簡単に適用できる多くのCコードがあります(ターゲット自体ではなくPCでユニットテストについて説明します)。「下」の層から直接離れている限り:直接話すものマイクロコントローラー周辺機器に。しかし、私が見つけたほとんどの例は文字列処理に基づいている傾向があります(たとえば、優れたDive Into Python Romanの数字の例)。文字列を使用することはほとんどないため、これは実際には適切ではありません(コードが通常使用する唯一のライブラリ関数について)ありmemcpy、memcmpそしてmemset、strcat または正規表現は正しくありません)。 では、質問に答えてください。ライブセッションで単体テストのデモンストレーションに使用できる機能の良い例を提供してくれる人はいますか?私の(変更される可能性がある)意見での適切な答えは、おそらく次のとおりです。 誰でも(たまにコードを書くだけでも)理解できるほど単純な関数。 無意味に見えない関数(つまり、パリティまたはCRCを計算することは、おそらく2つの数値を乗算してランダムな定数を追加する関数よりも優れています)。 人の部屋の前に書くのに十分短い関数(エラーを減らすためにVimの多くのクリップボードを利用するかもしれません...); 文字列を処理するのではなく、数値、配列、ポインター、または構造体をパラメーターとして受け取り、類似のものを返す関数。 単純なエラー(例えば)>ではなく、簡単に入力できる関数は、>=ほとんどの場合は動作しますが、特定のエッジケースで破損する可能性があります。ユニットテストで簡単に識別および修正できます。 何かご意見は? おそらく関連性はありませんが、テスト自体はおそらくGoogle Test Frameworkを使用してC ++で記述されます。すべてのヘッダーには既に#ifdef __cplusplus extern "C" {ラッパーがあります。これは、これまでに行ったテストでうまく機能しました。

4
ファームウェア/組み込みシステムソフトウェアの開発にアジャイル手法を採用する方法は?
アジャイル手法をどのように適用するかは、大規模で複雑な組み込みシステムソフトウェア(100人以上のエンジニア)に本当にあるのかといつも思っていました。ファームウェア開発には、アジャイルを実行するのを難しくするいくつかの独自の特性があります(つまり、ハードウェアは開発サイクルの後半まで利用できません。製品がリリースされると、ファームウェアを簡単に更新できませんなど)。 この種の開発の標準は、厚手のドキュメントと厳しいピアレビューです。2〜3個の署名なしで変数の名前を変更するなどの簡単なコード修正を取得することはできません。(少し誇張しますが、これは典型的なことです。さらに、多くの人がショートカットを採用しており、特に厳しい市場の締め切りに直面して、プロジェクトマネージャーはそれらを承認します。) ファームウェア開発プロジェクトにアジャイル手法を採用する方法に関するヒントやガイドラインを聞きたいです。

8
組み込みデバイスでTDDを実行するにはどうすればよいですか?
プログラミングは初めてではなく、AVRで低レベルのCおよびASMを使用したこともありますが、大規模な組み込みCプロジェクトを回避することはできません。 RubyのTDD / BDDの哲学に退化されているため、このようなコードを作成してテストする方法を理解することはできません。私はそれが悪いコードだと言っているのではなく、これがどのように機能するのか理解していません。 低レベルのプログラミングにもっと入りたいと思っていましたが、これにどのようにアプローチするのか全く分かりません。それは私が慣れ親しんだまったく異なる考え方のように見えるからです。ポインターの計算やメモリの割り当ての仕組みを理解するのに問題はありませんが、Rubyと比較して複雑なC / C ++コードがどのように見えるかを見ると、信じられないほど難しいようです。 すでにArduinoのボードを注文しているので、低レベルCをさらに理解して、物事を適切に行う方法を本当に理解したいと思いますが、高レベル言語のルールは適用されないようです。 組み込みデバイスでTDDを実行したり、ドライバーやカスタムブートローダーなどを開発したりすることも可能ですか?

3
組み込みシステムでスクラムを使用した非機能的な作業をどのように処理しますか?
組み込みシステムのスクラムには2つの問題があります。第一に、特に初期段階では多くのタスクを実行する必要がありますが、それは実証できません。開発ボード、OS、ディスプレイ、シリアル通信などから始めました。6つのスプリント用のディスプレイはありませんでした。 最初の4つのスプリントは次のとおりです。 取得RTOSを起動して実行 ネットワークおよびシリアルドライバーを作成するタスクの作成 ボタン、通信などの割り込みルーチンの作成 プライマリデータベースのクラスとメソッドの作成 シリアルデバッグメニューの作成 これらのタスクのほとんどは、ユーザーストーリーにはあまり適していません。実際、システム全体への唯一のインターフェースは、スプリント3に組み込まれたシリアルデバッグメニューであったため、スプリントの最後にデモンストレーションするものはありませんでした。シリアルメニューでさえ、エンドユーザーではなく内部使用を目的としていました。それにもかかわらず、私はまだスクラムを介してこれらの開発活動を追跡および管理したいと考えています。 「開発者として...」などの「ユーザーストーリー」というフレーズを書くことになりましたが、これは満足できませんが、ターゲットプロセス(www.targetprocess.com)を使用する場合、バックログアイテムという概念はありません。タスクまたは雑用。 次に、リリースとテストをどのように処理しますか?テスターに​​はハードウェアデバッガーがないため、非常に苦痛です。したがって、コードのフラッシュバージョンをビルドし、テストするために開発ボードに書き込む必要があります。テスターは技術的には開発者ほど鋭くなく、多くの場合、初期段階(ボードのリセット、シリアル通信の接続など)で作業を行ったり、出力を理解したりするのに多くのサポートを必要とします。 最後に、完了の定義に関して、スプリントはすべてのストーリーが完了するまで完了できません。すべてのストーリーは、テスターに​​よって検証されるまで完了しません。開発者がテスターに​​与える時間を「奪う」ことを避ける方法はありません。つまり、スプリント内の最後の3つのユーザーストーリーのテストに5日間かかる場合、スプリント終了の5日前にコーディングしてユニットテストを行う必要があります。開発者は何をすることになっていますか?仕事をやめる? 私は面白く思っていますが、ルールに準拠しようとするのは本当の問題です。今、私はルールを曲げることに問題はありませんが、私が抱えている問題は、テストされるまで物事をマークできない場合、すべてのバーンダウンメトリックを台無しにします。 他の人がこれらの状況をどのように処理したか聞いてみたい。

1
組み込みシステムのプログラミングの割合はどのくらいですか?
組み込みシステムのプログラミングの割合はどのくらいですか?より一般的には、リアルタイム/ビジネス/ UI /ゲーム/などのドメインごとにプログラマに関する興味深い統計を共有してください。 ドメイン境界の定義方法(組み込みシステムなど)はあなた次第ですが、定義を説明するためにいくつかの言葉を与えてください。

2
組み込みソフトウェアの関数型プログラミング[終了]
閉まっている。この質問はトピック外です。現在、回答を受け付けていません。 この質問を改善したいですか? 質問を更新することがありますので、上のトピックソフトウェア工学スタックExchange用。 5年前に閉鎖されました。 昨夜、F#と関数型プログラミングについて友人と話し合っていたところ、彼から興味深い質問が寄せられました。組み込みソフトウェアをどのように機能させますか?つまり、これはステートレスコードの点ではかなり自然に似ているように見えますが、埋め込みにはメモリが非常に不足していることも伴うため、その点で機能的なストーリーはわかりません。 組み込み機能付きの言語またはパッケージに関する提案はありますか?

8
組み込みソフトウェア市場でCが優位を占めるのはなぜですか?[閉まっている]
閉じた。この質問は意見に基づいています。現在、回答を受け付けていません。 この質問を改善したいですか?この投稿を編集して事実と引用で答えられるように質問を更新してください。 5年前に閉鎖されました。 ほとんどすべての人が祝福を言うでしょう。 パフォーマンス! さて、Cはアスレチックコードを書くことができます。しかし、そうすることができる他の言語があります、結局のところ!そして、最新のコンパイラの最適化能力は素晴らしいです。DOES Cは、他の言語が持っていないことをいくつかの利点がありますか?または、ドメイン内でより柔軟な機器を使用する必要はありませんか?

1
組み込みシステムプロジェクトにSEアジア文字セットを含めるための絶対的な最小要件は何ですか?
私は、組み込みコンピュータシステムを製造する製品に統合し始めた会社で働いています。当社には非常に幅広い製品があり、それらは世界中に配布されています。さらに、システムにフラッシュされたファームウェアに応じて複数の目的に使用できる統合ボードをいくつか設計しました。このように、さまざまな製品のコンピューターハードウェアを再設計する必要はありません。特定の製品のニーズに合わせてファームウェアレイヤーを書き直すだけです。 これらのハードウェアの制限のため、ハードウェアの変更は議会の行為を取りますが、新しいソフトウェアの作成ははるかに簡単です。 当社の製品の1つには、以前に実装する必要がなかった新しい要件があります。これは、ユーザー入力テキストの必要性です。 現在、国際的なテキストをリソースに保存することができ、必要なフォント文字のみがビットマップ画像にコンパイルされています。これは、言語セット全体のごく一部しか使用していないため、中国語や日本語などの表意文字の言語を最小限のスペースに保存できることを意味します。 この新製品ではユーザーがテキストを入力する必要があるため、広範な文字セットを実装する必要があります。主にPC開発者として、私はASCII、Unicode、UTF-8などにかなり精通していますが、ボード上にFRAMが限られているため、これらの言語の完全な文字セットを実装することはできません。フォントデータを保存します。 私の経営陣は、表意文字の多い言語に使用できる最小限の文字セットがあることを望んでいます。日本語の発音記号(ひらがな?)があると思います。中国語、韓国語、ベトナム語などの言語にも同様の発音記号がありますか?その質問に対する答えは「絶対に、いいえ」であると確信していますが、質問する価値のある質問です。 経営陣は、一般的に使用されているすべての主要言語をカバーする約8,000文字の限られた文字セットのみを使用できるという「ソフト」要件を設定しています。これが不可能な場合は、限られたハードウェアリソースに基づいてニーズを満たすために、何らかの形の代替方法を探す必要があります。 この問題は以前に解決されていなければならないと確信しています。広範なフォントおよび文字エンコードシステムを必要とする一方で、このような制約内で作業した経験はありますか?もしそうなら、あなたはどんな知恵のナゲットを提供できますか?

7
バイナリ/ 16進数からアセンブリ命令セットにどのように移行しますか?
だから私は最近ここで少しの間組み込み/アセンブリのプログラミングを学ぼうとしていますし、最低レベル(ゲートなど)を学ぼうとしています。 しかし、私を困惑させるのは、命令セットを「取得」する方法です。ゲート/ TTLなどがどのように機能するかはある程度理解していますが、そこからmov、add、clrなどにどのように到達するのかわかりませんか? それはおそらくばかげた質問でしょう。...しかし、私は最初のマイクロプロセッサ/コントローラに戻って考え、そして....彼らが命令セットをどのように正確に設計し、それを機能させたのでしょうか? 編集:私はクラリティのために、最初のマイクロプロセッサについて話しているふりをしていると思います、彼らはどのようにバイナリから実際に命令セットを作成するのですか?

5
低レベルのプログラミングに現在使用されている言語はどれですか?[閉まっている]
閉じた。この質問はより集中する必要があります。現在、回答を受け付けていません。 この質問を改善したいですか?この投稿を編集するだけで1つの問題に焦点を当てるように質問を更新します。 6年前に閉鎖されました。 ドライバー、組み込みシステム、オペレーティングシステムなどの低レベルプログラミングを聞いたとき、すぐにCとおそらくC ++について考えます。しかし、主にC。 しかし、この種のタスクに使用される他の言語は何ですか?今日、私は、使用されているものではありません。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.